2014-11-04 3 views
3

diStorm библиотека (http://www.ragestorm.net/distorm/) разбирает инструкция 0x86diStorm библиотека, демонтирует инструкция ВЫЗОВ

e813000000 

в

call 0x20 

в то время как он должен быть

call 0x13 

Является ли это ошибка или я понять что-то не так?

Дополнительная информация

Двоичные данные (кодов операций), переданные diStorm-х distorm_decode является

const unsigned char bin[] = { 0x55, 0x8b, 0xec, 0xE8, 0x92, 0xF8, 0xFF, 0xFF, 0xE8, 0x13, 00,00,00 }; 

Скриншот прилагается. screenshot

+1

Имейте в виду, что код операции e8' вместе с 4-байтовым количеством образует «ближний, относительный вызов со смещением относительно следующей команды». http://x86.renejeschke.de/html/file_module_x86_id_26.html должно быть полезно. –

+0

Вы можете найти этот ответ полезным: http://stackoverflow.com/questions/26672064/editing-elf-binary-call-instruction/26673080#26673080 –

ответ

3

Поскольку вы предоставили исходные байты команд, здесь грубая разборка вручную:

Offset 0: 55 8b ec // not interested in these 3 bytes 
Offset 3: E8 92 F8 FF FF // a relative call instruction 
Offset 8: E8 13 00 00 00 // another relative call instruction 
Offset 13: ... 

Добавление 00 00 00 13 на адрес следующей команды (Offset 13) дает вам адрес назначения, который является 0x20.

+0

Да, спасибо, у меня это есть. – rlib

0

Ну, это относительно начала кодов операций.