|
|
| Посл.отвђт | Сообщен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 |