2010-07-08 11 views
6

Wielu z was może pamiętać stary program DOS - debugowanie. Choć pod wieloma względami przestarzały, jedną z ładnych rzeczy było to, że można łatwo znaleźć sekwencję bajtów dla danej instrukcji bez konieczności przechodzenia przez kolejne etapy pisania programu, kompilowania, demontażu, sprawdzania zawartości pliku, .. .. Wprowadź instrukcję, a następnie zrzuć adres instrukcji. "debugowanie" niestety nie wykonuje instrukcji 32-bitowych.Program do debugowania systemu DOS dla 32-bitowego zestawu x86

Czy ktoś wie o narzędziu, które robi coś podobnego do 32-bitowych instrukcji x86? Nie chcę przechodzić całego procesu kompilacji; Po prostu muszę podać kilka instrukcji i wypluć długość instrukcji i sekwencję bajtów.

+0

Interesujące pytanie !. Dlaczego nie oznaczać "debugowania"? – pmod

+0

Nie pomyślałem o dodaniu tagu "debugowanie", dopóki go nie wspomnisz. Dziękuję Ci. – Sparky

Odpowiedz

4

DOS debug był interaktywny asemblera a także debugger, wprowadzenie kodu zespołu spowodowało, że linia ta została natychmiast zamieniona na kod maszynowy - czyli co wyrzuciłeś.

Wszystko czego potrzebujesz to zautomatyzować swój ulubiony asembler za pomocą skryptu lub pliku wsadowego.

Oto funkcja bash wpadłem na minutę lub dwie za pomocą popularnego nasm asembler:

opcode() { 
    echo $* > tmp.S && nasm tmp.S -o tmp.o && od -x tmp.o 
    rm -f tmp.o tmp.S 
} 

zajmuje mniej niż sekundę. Inwokacja wygląda następująco:

$ opcode mov eax, [ebx] 
0000000 6667 038b 
0000004 
$ opcode fadd st0,st1 
0000000 c1d8 
0000002 

Nie genialny, ale można poprawić ustawienia wiersza polecenia, aby uzyskać lepsze wyniki. Pomysł ten powinien działać z każdym assemblerem wiersza poleceń, o ile powiesz mu, aby używał prostego formatu wyjściowego binarnego.

+0

Dzięki! Rządzisz! – Sparky

1

Istnieje kilka prostych, 32-bitowych debugerów wiersza poleceń, które można znaleźć. Na podstawie Twojego opisu, OllyDbg może dobrze pasować do Twoich potrzeb. Przynajmniej niektóre wersje Microsoft Debugging Tools for Windows zawierać jeden nazwany CDB, który stoi do wiersza poleceń debuggera (choć nie sprawdzili, że wersja związana obejmuje go ...)

+0

Interesujące. Nie jestem jeszcze pewien, czy to pasuje do moich celów, ale wciąż się z tym bawię. Dziękuję za sugestię. – Sparky

Powiązane problemy