Page 2 of 2

Re: Дизассемблер

Posted: Mon Sep 12, 2011 12:10 pm
by SoUrcerer
Дизассемблер для Колибри. Работает, сохраняет результат в disasm.out. Приятного аппетита.

Code: Select all

Usage: ud86 [-option[s]] file
  Options:
      -16      : Set the disassembly mode to 16 bits. 
      -32      : Set the disassembly mode to 32 bits. (default)
      -64      : Set the disassembly mode to 64 bits.
      -intel   : Set the output to INTEL (NASM like) syntax. (default)
      -att     : Set the output to AT&T (GAS like) syntax.
      -v <v>   : Set vendor. <v> = {intel, amd}.
      -o <pc>  : Set the value of program counter to <pc>. (default = 0)
      -s <n>   : Set the number of bytes to skip before disassembly to <n>.
      -c <n>   : Set the number of bytes to disassemble to <n>.
      -x       : Set the input mode to whitespace seperated 8-bit numbers in
                 hexadecimal representation. Example: 0f 01 ae 00
      -noff    : Do not display the offset of instructions.
      -nohex   : Do not display the hexadecimal code of instructions.
      -h       : Display this help message.
      --version: Show version.
  
  Udcli is a front-end to the Udis86 Disassembler Library. 
  http://udis86.sourceforge.net/
Спасибо Albom за наводку.

Re: Дизассемблер

Posted: Mon Sep 12, 2011 4:18 pm
by Mario
Что-то ничего кроме пустого файла и сообщения "Multiple files specified" не получаю. И параметры указывал и полный путь и только имя файла - результат один.

Re: Дизассемблер

Posted: Mon Sep 12, 2011 4:21 pm
by SoUrcerer
А версия console.obj какая? Нужна ревизии не меньше 2170. (А я вообще пользуюсь своей версией console.obj. Хочу аккаунт на SVN - у кого просить?)

Re: Дизассемблер

Posted: Mon Sep 12, 2011 4:35 pm
by Mario
Про такие вещи нужно сразу упоминать до, а не потом. Теперь все нормально. Спасибо!

Думаю у mike.dld все еще нужно спрашивать.

Re: Дизассемблер

Posted: Mon Nov 21, 2011 10:33 pm
by XVilka
Вот еще хороший дизассемблер, в виде библиотеки. Очень хорош, можно лишь прикрутить гуй, и наслаждаться: http://mediana.sf.net

его обсуждение на WASM-е http://www.wasm.ru/forum/viewtopic.php?id=36828, подробнее можно прочитать на http://mika0x65.livejournal.com/6898.html#cutid1

Re: Дизассемблер

Posted: Sun May 26, 2013 8:26 am
by SoUrcerer
Исходники дизассемблера для menuetlibc. Тогда я еще не заморачивался с библиотеками, так что объектники из libudis нужно "вручную" копировать в папку с самим дизассемблером.

Re: Дизассемблер

Posted: Mon May 27, 2013 3:07 pm
by Kopa
Я как понимаю, Angel интересует формат
структуры бинарного файла в колибри и может коды мнемоник команд IA-32
Чем можно помочь? Может дать ссылку на данный топик?

Re: Дизассемблер

Posted: Mon May 27, 2013 3:20 pm
by SoUrcerer
Полезнее intel reference manual в таком случае. Формат бинарного файла хорошо описан.

Re: Дизассемблер

Posted: Mon May 27, 2013 3:22 pm
by Kopa
SoUrcerer wrote:Полезнее intel reference manual в таком случае. Формат бинарного файла хорошо описан.
А на Wiki информация есть?

Re: Дизассемблер

Posted: Mon May 27, 2013 3:28 pm
by SoUrcerer

Re: Дизассемблер

Posted: Mon Dec 18, 2017 3:41 am
by Kopa

Re: Дизассемблер

Posted: Wed Nov 11, 2020 11:31 am
by maxcodehack
Портировал ud86 от SoUrcerer, который выше, на newlib.
Насчет работоспособности не знаю, еще не тестировал.
Собирается так: сказать make в папке с либой, а потом в папке с программой.
На консоль что то вывода нет, не знаю, возможно импорт поломался. А вот файловое:
Вот то что она выдает:
Spoiler:

Code: Select all

0000000000000000 0000000000000000 4d               dec ebp                 4d               dec ebp                 

0000000000000001 0000000000000001 45               inc ebp                 45               inc ebp                 

0000000000000002 0000000000000002 4e               dec esi                 4e               dec esi                 

0000000000000003 0000000000000003 55               push ebp                55               push ebp                

0000000000000004 0000000000000004 45               inc ebp                 45               inc ebp                 

0000000000000005 0000000000000005 54               push esp                54               push esp                

0000000000000006 0000000000000006 3032             xor [edx], dh           3032             xor [edx], dh           

0000000000000008 0000000000000008 0100             add [eax], eax          0100             add [eax], eax          

000000000000000a 000000000000000a 0000             add [eax], al           0000             add [eax], al           

000000000000000c 000000000000000c 3400             xor al, 0x0             3400             xor al, 0x0             

000000000000000e 000000000000000e 0000             add [eax], al           0000             add [eax], al           

0000000000000010 0000000000000010 30cd             xor ch, cl              30cd             xor ch, cl              

0000000000000012 0000000000000012 0100             add [eax], eax          0100             add [eax], eax          

0000000000000014 0000000000000014 30e9             xor cl, ch              30e9             xor cl, ch              

0000000000000016 0000000000000016 0100             add [eax], eax          0100             add [eax], eax          

0000000000000018 0000000000000018 30e9             xor cl, ch              30e9             xor cl, ch              

000000000000001a 000000000000001a 0100             add [eax], eax          0100             add [eax], eax          

000000000000001c 000000000000001c 20e4             and ah, ah              20e4             and ah, ah              

000000000000001e 000000000000001e 0100             add [eax], eax          0100             add [eax], eax          

0000000000000020 0000000000000020 20e5             and ch, ah              20e5             and ch, ah              

0000000000000022 0000000000000022 0100             add [eax], eax          0100             add [eax], eax          

0000000000000024 0000000000000024 0300             add eax, [eax]          0300             add eax, [eax]          

0000000000000026 0000000000000026 0000             add [eax], al           0000             add [eax], al           

0000000000000028 0000000000000028 40               inc eax                 40               inc eax                 

0000000000000029 0000000000000029 e101             loope 0x2c              e101             loope 0x2c              

000000000000002b 000000000000002b 005ce301         add [ebx+0x1], bl       005ce301         add [ebx+0x1], bl       

000000000000002f 000000000000002f 004052           add [eax+0x52], al      004052           add [eax+0x52], al      

0000000000000032 0000000000000032 0000             add [eax], al           0000             add [eax], al           

0000000000000034 0000000000000034 b844000000       mov eax, 0x44           b844000000       mov eax, 0x44           

0000000000000039 0000000000000039 bb0c000000       mov ebx, 0xc            bb0c000000       mov ebx, 0xc            

000000000000003e 000000000000003e 8d0d00002000     lea ecx, [0x200000]     8d0d00002000     lea ecx, [0x200000]     

0000000000000044 0000000000000044 81c1ff0f0000     add ecx, 0xfff          81c1ff0f0000     add ecx, 0xfff          

000000000000004a 000000000000004a 81e100f0ffff     and ecx, 0xfffff000     81e100f0ffff     and ecx, 0xfffff000     

0000000000000050 0000000000000050 cd40             int 0x40                cd40             int 0x40                

0000000000000052 0000000000000052 85c0             test eax, eax           85c0             test eax, eax           

0000000000000054 0000000000000054 7439             jz 0x8f                 7439             jz 0x8f                 

0000000000000056 0000000000000056 01c1             add ecx, eax            01c1             add ecx, eax            

0000000000000058 0000000000000058 64a308000000     mov [fs:0x8], eax       64a308000000     mov [fs:0x8], eax       

000000000000005e 000000000000005e 64890d0c000000   mov [fs:0xc], ecx       64890d0c000000   mov [fs:0xc], ecx       

0000000000000065 0000000000000065 89cc             mov esp, ecx            89cc             mov esp, ecx            

0000000000000067 0000000000000067 81ec00040000     sub esp, 0x400          81ec00040000     sub esp, 0x400          

000000000000006d 000000000000006d b809000000       mov eax, 0x9            b809000000       mov eax, 0x9            

0000000000000072 0000000000000072 89e3             mov ebx, esp            89e3             mov ebx, esp            

0000000000000074 0000000000000074 b9ffffffff       mov ecx, 0xffffffff     b9ffffffff       mov ecx, 0xffffffff     

0000000000000079 0000000000000079 cd40             int 0x40                cd40             int 0x40                

000000000000007b 000000000000007b 8b431e           mov eax, [ebx+0x1e]     8b431e           mov eax, [ebx+0x1e]     

000000000000007e 000000000000007e 64a300000000     mov [fs:0x0], eax       64a300000000     mov [fs:0x0], eax       

0000000000000084 0000000000000084 81c400040000     add esp, 0x400          81c400040000     add esp, 0x400          

000000000000008a 000000000000008a e9c1370000       jmp 0x3850              e9c1370000       jmp 0x3850              

000000000000008f 000000000000008f cc               int3                    cc               int3                    

0000000000000090 0000000000000090 4e               dec esi                 4e               dec esi                 

0000000000000091 0000000000000091 6f               outsd                   6f               outsd                   

0000000000000092 0000000000000092 20656e           and [ebp+0x6e], ah      20656e           and [ebp+0x6e], ah      

0000000000000095 0000000000000095 6f               outsd                   6f               outsd                   

0000000000000096 0000000000000096 7567             jnz 0xff                7567             jnz 0xff                

0000000000000098 0000000000000098 68206d656d       push dword 0x6d656d20   68206d656d       push dword 0x6d656d20   

000000000000009d 000000000000009d 6f               outsd                   6f               outsd                   

000000000000009e 000000000000009e 7279             jb 0x119                7279             jb 0x119                

00000000000000a0 00000000000000a0 20666f           and [esi+0x6f], ah      20666f           and [esi+0x6f], ah      

00000000000000a3 00000000000000a3 7220             jb 0xc5                 7220             jb 0xc5                 

00000000000000a5 00000000000000a5 7374             jae 0x11b               7374             jae 0x11b               

00000000000000a7 00000000000000a7 61               popad                   61               popad                   

00000000000000a8 00000000000000a8 636b20           arpl [ebx+0x20], bp     636b20           arpl [ebx+0x20], bp     

00000000000000ab 00000000000000ab 61               popad                   61               popad                   

00000000000000ac 00000000000000ac 6c               insb                    6c               insb                    

00000000000000ad 00000000000000ad 6c               insb                    6c               insb                    

00000000000000ae 00000000000000ae 6f               outsd                   6f               outsd                   

00000000000000af 00000000000000af 636174           arpl [ecx+0x74], sp     636174           arpl [ecx+0x74], sp     

00000000000000b2 00000000000000b2 696f6e00000066   imul ebp, [edi+0x6e], 0x66000000696f6e00000066   imul ebp, [edi+0x6e], 0x66000000
Протестировать надо, есть пару багов. Но хотя бы он не мертв :D
Исходники с бинарником:

Re: Дизассемблер

Posted: Mon Nov 16, 2020 11:49 am
by maxcodehack
Понял почему не было вывода в консоль.
Оказывается там был freopen для stdout, и все печаталось в файл. И то что надо в файл, и то что надо в консоль.
Переделал под fopen.
Только консоль перестает перерисовываться, и похоже CPU 100% В menuetlibc версии SoUrcerer'а тоже, так что я не виноват :D
Извиняюсь, обрезать не могу:
Spoiler:
Снимок экрана от 2020-11-16 11-41-59.png
Снимок экрана от 2020-11-16 11-41-59.png (1.81 MiB)
Viewed 5067 times
(QEMU 556mb ram)

Изменился только файл udcli.c, остальное из прошлого поста

Re: Дизассемблер

Posted: Sat Dec 05, 2020 10:16 am
by maxcodehack
rev 8323
Залил на SVN newlib версию