2014-10-29 3 views
0

В последние два месяца я изучил базовую обратную инженерию, сборку и C. Я получил двоичный код от своего друга; они попросили меня отменить этот двоичный код на исходный источник. Я использовал IDA Pro, чтобы полностью изменить двоичный файл, но у меня есть некоторые проблемы с этими инструкциями ниже:Что означают эти инструкции?

mov  [esp+230h+var_218], 74654D5Fh 
mov  [esp+230h+var_214], 754D6C61h 
mov  [esp+230h+var_210], 6873696Ch 
mov  [esp+230h+var_20C], 5F61h 

Я пытаюсь найти шестигранник, но я не нашел каких-либо результатов. Может кто-нибудь объяснить?

+0

Похож на «Hello world» или его вариант. Попробуйте прочитать его как ASCII. –

+0

благодарит за комментарий ,, Я нашел, что это значит .. спасибо –

+0

* обратный этот двоичный исходный источник. * Невозможно. Вы не можете восстановить комментарии вообще и без символов отладки, даже имена исходных переменных. Лучшее, что вы можете сделать, это в основном переписать исходный источник с вашими собственными комментариями и значимыми именами переменных. –

ответ

1

x86 - маленькая сущность, поэтому, чтобы прочитать ее, вы начинаете справа налево от словаря dword.

Строка "_MetalMulisha_", fwiw.

1

Чтобы уточнить на Lord Kale XI's answer, x86 является little endian archiecture. Это фактически означает, что мы храним байты многобайтовых целых чисел назад, то есть с наименьшим значащим байтом. Ссылка, которую я предоставил, дает довольно хорошее объяснение того, как это работает.

Итак, в этих инструкциях мы сначала переместим целое число 74654D5Fh в место где-нибудь в памяти. В порядке, это фактически пишет байты 5F 4D 65 74. Затем мы записываем целое число 754D6C61h в следующее четыре байта в памяти, которое записывает 61 6C 4D 75 и т. Д.

После этих инструкций, память содержит следующую последовательность байтов, каждый из которых может быть интерпретирован как ASCII символ:

0x74654D5F  0x754D6C61  0x6873696C  0x00005F61 
     |    |    |    | 
     V    V    V    V 
[ var_218 ] [ var_214 ] [ var_210 ] [ var_20C ] 
5F 4D 65 74 61 6C 4D 75 6C 69 73 68 61 5F 00 00 
'_' 'M' 'e' 't' 'a' 'l' 'M' 'u' 'l' 'i' 's' 'h' 'a' '_' '\0' '\0' 

Итак, что эти инструкции делают пишет строку с завершающим нулем _MetalMulisha_ в память, начиная с var_218.

Смежные вопросы