Program do licencji

0

Cześć wszystkim .

Potrzebuje Waszej pomocy . Mianowicie na kompie , który wyzionął ducha był program, którego używam . Po przekopiowaniu programu na nowy komputer ten nie odpala się , bo ktoś wymyślił jego blokadę plikiem licencyjnym . W pliku znajdziemy numer maszyny (ciąg liczb i liter) no i code odpowiedni dla gwarancji i licencji do programu .

W katalogu z programem znajduje się generator , który można odpalić , z automatu pobiera nowy numer maszyny ale trzeba wpisać code , którego nie mam :(

Program można debugować dede, ide , ale programiści , których znam nie znają języka delphi .

Sprawa jest o tyle skomplikowana , że z autorem programu nie mam kontaktu i niestety nie będę miał :(

Czy ktoś z Was da radę pomóc ? Mogę podesłać ten plik do generacji chyba kodu .

Poniżej wklejam to co miałem na starym kompie , może ktoś z Was zna odpowiedź na zagadke tak jak w jaka to melodia po 1 nutce :)

Gwarancja jest czasowa i nie wpływa na odpalanie programu. Po zakończeniu gwarancji program odpalał się .

Gwarancja
Machine=45AA1678FD851658652077A62B2311CA58C4208D
Code=0955352A07353302

Serial
Nr=967

Licencja
Machine=45AA1678FD851658652077A62B2311CA58C4208D
Code=F0347045C4B7C6285DAEF540DBBC02475F9D1A851E8CE8866500BAC3

0
Kolorowymisiu napisał(a):

Czy ktoś z Was da radę pomóc ? Mogę podesłać ten plik do generacji chyba kodu .

Jeśli jesteś posiadaczem źródeł tego programu to po prostu sprawdź kod rozruchu aplikacji i wywal kod odpowiedzialny za walidację maszyny. Albo znajdź i zaremuj sam warunek, który odpowiada za możliwość przerwania rozruchu.

0
furious programming napisał(a):
Kolorowymisiu napisał(a):

Czy ktoś z Was da radę pomóc ? Mogę podesłać ten plik do generacji chyba kodu .

Jeśli jesteś posiadaczem źródeł tego programu to po prostu sprawdź kod rozruchu aplikacji i wywal kod odpowiedzialny za walidację maszyny. Albo znajdź i zaremuj sam warunek, który odpowiada za możliwość przerwania rozruchu.

Niestety nie jestem posiadaczem źródeł tego programu . Jedynie co udało mi się ustalić to to , że został napisany w delphi .

0
Kolorowymisiu napisał(a):

Program można debugować dede, ide , ale programiści , których znam nie znają języka delphi .

Każdy program można debugować, ale jak masz kod źródłowy i możesz go debugować w delphi, to jest to znacznie uproszczone i nawet ktoś kto w tym delphi nie umie programować by sobie poradził.
Jak nie masz kodu źródłowego to będziesz miał w assemblerze bez metadanych o języku.

Jeśli kupiłeś licencję na jeden pc i chcesz mieć ją na innym to jest to nielegalne.
Oczywiście jak masz wystarczająco dużo wiedzy to możesz to obejść, debugowanie bez kodu źródłowego, a z kodem źródłowym różni się tym, że musisz ręcznie dekodować wszystkie funkcje, a jak nie jesteś w stanie rozszyfrować to chociaż odgadnąć co ona robi.

Przepisanie z assemblera do czytelnego języka C zajmuje dużo czasu.
Nie mówię tu o głupim dekompilatorze, który ci przetłumaczy assemblera, na funkcję w wyższym języku jak C na nazwę funkcja_1234, bo to nic nie daje musisz wiedzieć co ta funkcja_1234 robi, czyli musisz parę godzin poświęcić, żeby rozkodować jak program działa i potem dopiero na rozkodowaniu tego czego potrzebujesz.

0

@Kolorowymisiu:

A co na to twórca / producent i jego wsparcie ?

0

Ja zdaję sobie sprawę jak to wygląda , ale firma , która sprzedawała sprzęt w tym laptopa z oprogramowaniem nieistnieje, nie ma z nią kontaktu . Temat jest trudny i dla mnie ważny , bo program potrzebuje do wykonania usług na które mam podpisane umowy :(

0

Rozwiązań jest kilka.

Możesz spojrzeć jak generowany jest Machine Code, czyli ten fingerprint komputera i zamiast obliczeń zwrócić ten do którego masz licencje i wtedy ci ta licencja zadziała.
Ewentualnie jak korzysta z zewnętrznych bibliotek to możesz podrobioną bibliotekę podłożyć i program jej użyje, a ona po prostu twoje spreparowane dane zwróci.
Możesz także spojrzeć jak jest sprawdzany ten klucz, przepisać do pythona i wykorzystać go do wygenerowania lub użyć SAT solvera żeby rozwiązać.
Możesz także spatchować gałęzie tak żeby zawsze program myślał, że poprawnie sprawdził licencję.

Przykładowo gdzieś w pamięci wkładasz tego twojego stringa z id hardware i jak program sobie wyliczy twój fingerprint to ty zamiast zwrócić w rax wskaźnik do tego nowego to ty dajesz wskaźnik do tego gdzie umieściłeś w pamięci.

Główny problem to lokalizacja tego w kodzie assemblera + może być użyta jakaś obfuskacja, skoro licencja jest to pewnie i utrudnienia w jej złamaniu.

Lekko trudne to jest, bo trzeba trochę się namęczyć żeby znaleźć później przeanalizować i zrozumieć co się dzieje i potem już wiesz co musisz zrobić żeby to zadziałało.

0

Można też zrewersować plik wykonywalny — kuknąć do asma, znaleźć kluczowy skok warunkowy i go zmodyfikować (skoczyć w inny adres lub go znopować). Rozgryzienie tego jak te zabezpieczenia działają może zająć mnóstwo czasu, bo nie wiadomo co to za zabezpieczenia, czy exe obfuskowany itd. Łatwo na pewno nie będzie.

0
furious programming napisał(a):

Jeśli jesteś posiadaczem źródeł tego programu to po prostu sprawdź kod rozruchu aplikacji i wywal kod odpowiedzialny za walidację maszyny. Albo znajdź i zaremuj sam warunek, który odpowiada za możliwość przerwania rozruchu.

To nie zawsze jest takie proste - a co jeśli program instaluje sterownik/rozszerzenia kernela i zupełnie przez przypadek ten sterownik/rozszerzenie musi być podpisane przez wystawcę systemu?

0
loza_prowizoryczna napisał(a):

To nie zawsze jest takie proste - a co jeśli program instaluje sterownik/rozszerzenia kernela i zupełnie przez przypadek ten sterownik/rozszerzenie musi być podpisane przez wystawcę systemu?

Nie no wspominał, że idzie debugować, jakby używali sterownika to pierwsze co to blokada ReadProcessMemory i podobnych używanych przez debugger funkcji.

Zawsze można kupić licencję u microsoftu chyba 200$ i wtedy samemu sobie podpiszesz sterownik, bo tak bez trybu testing mode to jest utrudnione dodawanie sterowników niepodpisanych, utrudnienie polega na tym, że trzeba zapłacić.

Znalezienie miejsca w kodzie gdzie to jest, w delphi/lazarus to używane jest winapi, ostatnio jak crackowałem na forum co ktoś wrzucił projekt do złamania to dałem breakpoint na getWindowText(funkcja w bibliotekce user32.dll i ma dwie wersje Ascii i wide-char) aplikacja akurat jak chciała pobrać z inputa treść to wykorzystywała tę funkcję winapi, później wystarczyło wyjść 2-3 ramki do góry i się było w miejscu gdzie przebiegał proces weryfikacji.
Później wrzucić do ghidry adres, dekompilacja, trochę manualnych testów i zgadywania nazw co dane funkcję robią i w miarę cały algorytm każda linijka kodu była rozszyfrowana.
Potem zrobienie patcha to kilka sekund bo wiesz które bajty w binarce zmienić itp.

Na pewno z obfuskacją i kernel driverm by nie było tak łatwo.

Jakby wrzucił exe to można by było spojrzeć, ale znając życie i tak zleci sporo godzin na analizowaniu.

0

@Kolorowymisiu: czemu nie wrzucisz tej aplikacji?

Takie coś można traktować jak challenge, mega ciekawie się takie problemy rozwiązuje bo nie są takie oczywiste, że się je wygoogluje, albo template skopiujesz.
Mówie jako challenge, gdyż zwykły problem jest straigforward a challenge to nie wie się jakie jest rozwiązanie i może nie być oczywiste.

Kiedyś był taki problem na forum Konkurs na czas? ostatnie dwa rozwiązania są moje.
Mega dziwny jest delphi do debugowania, bo ma dużo wrapperów, kompletnie nie wiadomo co robią dane klasy trudno to wywnioskować.
Ale możesz dzielić i rządzić czyli debuggerem odcinać część kodu puszcać i patrzeć czy coś się zmieniło i schodzić w dół jeśli tak, wtedy idziesz od góry do dołu do danej funkcji.

0

Panowie i Panie żebyśmy mieli jasność - ja na programowaniu się nie znam.

Zostałem bez programu a z zobowiązaniami wynikającymi z podpisanych umów.

Mogę tutaj dodać plik kod programu do autoryzacji , który został wyciągnięty z ghirda w c++ lub w delphi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1