Сейчас на форуме: asfa, _MBK_, Adler, bartolomeo (+8 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Помощь с командой ассемблер |
Посл.ответ | Сообщение |
|
Создано: 14 сентября 2012 08:29 · Личное сообщение · #1 Приветствую Я являюсь новичком в ассемлере и при анализе программы застрял на таком моменте: Трассирую программу, берется символ D=44 MOV DL,BYTE PTR DS:[ECX+EDI] D=44 в EDX XOR EDX,EAX - хорим FFFFFFFF и 44 AND EDX,0FFh плюсуем 0FF MOV EBX,DWORD PTR DS:[EDX*4+050AFE0h] - На этой строке вижу: DS:[0050B2CC]=5CB36A04 EBX=00000000 И далее используется 5CB36A04 - вопрос как из 0050B2CC - получается 5CB36A04 ? Чето как не пытался понять никак не догоню, есть вариант что это преобразование в DWORD ? Если можно пример на каком-нибудь ЯВУ ? Извиняюсь если вопрос нубский - я только учусь ![]() |
|
Создано: 14 сентября 2012 08:51 · Личное сообщение · #2 |
|
Создано: 14 сентября 2012 09:22 · Поправил: neomant · Личное сообщение · #3 Ответ на ваш вопрос 42. А если серьёзно, то стоит почитать какое-нибудь введение в ассемблер x86. По вашему примеру: значение 5CB36A04 попадает в EBX из таблицы DWORDов, которая начинается по адресу 050AFE0. Инвертированный DL служит индексом в этой таблице. Размер таблицы - 256 DWORDов. ----- Следуй за белым кроликом ![]() |
|
Создано: 14 сентября 2012 09:23 · Личное сообщение · #4 это похоже на какую-то таблицу двордов. собственно 050AFE0h - начало таблицы EDX*4 - индекс элемента теперь допустим EDX = 1, то MOV EBX,DWORD PTR DS:[EDX*4+050AFE0h] преобразуется в MOV EBX,DWORD PTR DS:[1*4+050AFE0h] -> MOV EBX,DWORD PTR DS:[050AFE4h] з.ы. опередили меня))) ----- [nice coder and reverser] ![]() |
|
Создано: 14 сентября 2012 09:42 · Поправил: SergeyIvan · Личное сообщение · #5 Ну точно, спасибо за подсказки Code:
Получается для кейгена мне нужно добавить таблицу dword-ов и тянуть от туда значения neomant Откуда известно, что таблица содержит 256 элементов ? ![]() |
|
Создано: 14 сентября 2012 09:45 · Личное сообщение · #6 |
|
Создано: 14 сентября 2012 09:46 · Поправил: DimitarSerg · Личное сообщение · #7 что-то похожее на CRC ? const crcTable: array [0..255] of DWORD = (.... 256 двордов) var s:string; i:byte; EAX,EDX:DWORD; ... цикл... к примеру for i:=1 to length(s) do EAX:=EAX xor ord(s[i]); EDX:=EDX and $0FF; EBX:=crcTable[EDX]; ... SergeyIvan Hellspawn Да, наверное, просто столько разных модификаций за последнее время попадало, что я даже не смотрю что это конкретно за CRC, сразу рипаю табличку DataRipper'ом ну и соответственно и саму функу подсчета црц ----- ds ![]() |
|
Создано: 14 сентября 2012 09:48 · Личное сообщение · #8 |
|
Создано: 14 сентября 2012 10:28 · Поправил: SergeyIvan · Личное сообщение · #9 |
![]() |
eXeL@B —› Вопросы новичков —› Помощь с командой ассемблер |
Эта тема закрыта. Ответы больше не принимаются. |