Dekodowanie pliku binarnego.

0

Witam,
mam następujący problem, mam pewien plik binarny który z pewnością da się przetłumaczyć na tekst, ponieważ istnieje do tego celu program. Ja chciałbym sam rozkminić jak ten program to tłumaczy, i napisać własny program tłumaczący. Ktoś pewnie zapyta dlaczego i po co, ano dlatego że ten to program pozwala te pliki kodować hasłem i w ten sposób inny użytkownik nie może sobie tego pliku przetłumaczyć na tekst. Udało mi się ustalić że tak zabezpieczony plik zmienia pewne dane w nagłówku tego pliku, znaczy się w kilku pierwszych bajtach. Wiedząc co te bajty znaczą licze że bez znajomości tego hasła udało by misie jednak ten plik przetłumaczyć. Albo nawet pominąć tą cześć, która jak sądzę jest sprawdzana tylko przez ten program tłumaczący. Pytanie moje jest następujące Jak to zrobić żeby ten plik do mnie przemówił ludzkim głosem:). Czy istnieją jakieś algorytmy przetwarzające te dane i szukające odpowiedników kodowych znaków ASCII do danych zawartych w plik? Czy może jednak jest to walka z wiatrakami? :/.

0

Może i są jakieś specjalistyczne programy do łamania szyfrów, które potrafią na podstawie pewnych charakterystyk tekstu i języka (np. częstotliwość występowania pewnych słów czy liter) pomóc w odszyfrowywaniu. Ale to, co ty potrzebujesz to hex-edytor i obserwować zmiany jakie następują. Zmieniasz jedną opcję w programie, patrzysz co się zmieniło w pliku. Ew. od razu ściągnąć IDA i jeżeli znasz assembler to zabrać się za funkcje zapisujące plik.

0

No wiec tak, zassałem sobie IDA i rozłożyłem na kawałki sam program jaki i bibliotekę odpowiedzialną za tłumaczenie tych plików. Orłem w asemblerze to ja niestety nie jestem. Ale w .dll-ce znalazłem funkcje która tłumaczy te pliki "tak mi się wydaje" i teraz moje pytanie brzmi jak tej funkcji użyć. Zaimpotrować dll-ke do swojego programu?? tylko jak?? bo żeby zaimportować funkcje z dll trzeba znać nazwę funkcji trzeba wiedzieć co zwraca, jakie parametry przyjmuje i jakiego są typu. A z IDA co najwyżej nazwę funkcji mi się udało wyczytać.

0

Miałem ostatnio trochę wolnego czasu i rozgryzłem problem. Debugowałem krok po kroku kod dll-ki i jeżeli w dwóch miejscach zmieniam wartości rejestrów to program natywny sam bez żadnego wołania o hasła tłumaczy mi pliki które mnie interesują. Problem w tym że nie wiem jak przekompilować tą dll-ke. Może ktoś by mi polecił jakieś ciekawe narzędzie. Tak jak kolega polecił mi IDA. Chyba że samym programem IDA mogę to zrobić to bardzo bym chciał wiedzieć jak.:)

0

nie musisz przekompilowywać całej DLL-ki, możesz znaleźć w pliku .dll miejsce gdzie są zapisane odpowiednie instrukcje i edytorem szesnastkowym zmodyfikować bajty.
Zazwyczaj wystarczy zamazać instrukcję skoku NOP-ami (bajtami 90h) albo zmienić skok warunkowy na bezwarunkowy.
Nauczysz się grzebania w kodzie maszynowym ;-)

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