· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Машинные коды, ассемблер, ИДА

Посл.отвђт Сообщенiе


Дата: Май 21, 2004 08:14:00 · Поправил: D1M

Помогите, пожалуйста, в таком казалось бы простом вопросе.
У меня есть программка (крякми). Я ее открыл, нашел точку проверки, и хочу (например) в Хьюве поменять комманду прыжка. Тот же Хьюв не всегда обрабатывает джампы, введенные на ассемблере корректно, поэтому лучший вариант (как мне кажется) - вводить джампы в машинных кодах.
Так я подошел к первому вопросу: есть какие-то сводные таблицы типа
"74 - jnz (short)
75 - jz (short)
xx - jmp (long)
xy - jmp (short)".... ?

Вопрос номер два вытекает из первого: могу ли я открыв программу в ИДА-про поправить комманду? Прямо в ИДА, но чтобы она при этом сохранила изменения не только в свою базу данных, а еще и пропатчила ехе-шник?

Заранее благодарен.


Дата: Май 21, 2004 08:21:22

D1M
1. Есть мануалы от Интела, где расписан опкод каждой команды. Также есть дока по опкодам, которая идет в комплекте с MASM'ом. Сводных таблиц именно джампов я не видел.

2. Да можно, только потом придеться ассемблить по новой, так как ты хочешь вроде нельзя, хотя я могу ошибаться.


Дата: Май 21, 2004 09:58:32

в иде Edit -> Patch Program -> ...
потом File -> produce file -> create DIF file
и потом этот dif наложить на оригинальный exe


Дата: Май 21, 2004 10:12:37


Дата: Май 21, 2004 11:37:41

D1M
В IDA можно так, как уже сказали. Но, имхо, для того, чтобы поменять один-единственный байтик, это слишком уж грозно, Hiew быстрее.

Таблицы опкодов есть очень много где, но касательно разбора крякмисов и конкретно "исправлений" джампов можно даже никуда не смотреть, потому что делать-то тебе придется (в большинстве случаев) всего две вещи:

1) "Исправление" на безусловный (короткий!) джамп - делается заменой 0x7X -> 0xEB, и

2) Инвертирование условия джампа (например, je -> jne) - делается инвертированием младшего бита опкода (например, 0x74 -> 0x75).

Т.е. здесь таблица опкодов не особо нужна, хотя иметь ее не помешает.


Дата: Май 21, 2004 17:51:04

Угу. Поле условия называется tttn. 4е бита. 3и бита условие, последний типа not(условие) если логически записывать. Имеет одинаковый формат в jcc, setcc, movcc.


Дата: Май 22, 2004 07:52:36

Огромное спасибо всем!
infern0
А можно чуточку подробнее о том, как " этот dif наложить на оригинальный exe"?


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.060