|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Май 19, 2004 17:46:10 из спортивного интереса написал прогу, которая выводит начальное значение регистров (т.е. значение на EP). Вот что получилось: EAX = 0x00000000 EBX = 0x7FFDF000 ECX = 0x00010101 EDX = 0xFFFFFFFF ESI = 0x0011F458 EDI = 0xFFFFFFFF EBP = 0x0012FFF0 ESP = 0x0012FFC4 EFL = 0x00000246 кто нибудь знает, есть ли стандарт начальных состояний? помнится, под досом такое было. понял только что EBX указывает на PEB (или как его там), вообщем на сегмент fs: интересные значения принимают ECX и ESI, только вот что это? также интересно, почему так сильно отличаются ESP и EBP? кстати, если загрузить прогу в Olly, то начальные значения такие: EAX = 0x00000000 EBX = 0x7FFDF000 ECX = 0x00010101 EDX = 0xFFFFFFFF ESI = 0x00000000 (!) EDI = 0x00000000 (!) EBP = 0x0012FFF0 ESP = 0x0012FFC4 EFL = 0x00000246 т.е. значения ESI и EDI можно использовать, как антиотладочный прием... наверное... |
|
|
Дата: Май 19, 2004 18:06:53 http://sbvc.net/articles/4.html - только это про win9x :( |
|
|
Дата: Май 19, 2004 18:33:14 Ты не можешь рассчитывать ни на какие значения. Этого тебе никто гарантировать не может. Да, скажем EBX показывает на PEB, но будет ли это так всегда - да упаси тебя полагаться на это! |
|
|
Дата: Май 19, 2004 18:35:52 max, может какой-нить кривой plugin юзаеште!? |
|
|
Дата: Май 19, 2004 18:49:11 Нет. Сходный топик был на exetools. Я из любопытства поглядел. Олли действительно меняет значения регистров. Другое дело, что сама тема - это вилами по воде. Никакой практической ценности. |
|
|
Дата: Май 19, 2004 19:40:24 тогда объясните мне, что делает аспротект, что он не ловится брейкпоинтом на [esp-4]? я так понимаю, что он кладет регистры на стек (типа pushad), а потом просто забивает на них болт, не восстанавливая стек перед прыжком на EP. но тогда какие начальные значения регистров он передает программе на EP? че я собственно и задумался о начальных значениях... |
|
|
Дата: Май 19, 2004 20:41:05 не восстанавливая стек перед прыжком на EP Ну и что это будет? GPF? что он не ловится брейкпоинтом на [esp-4] Ты хочешь сказать, что bpm не срабатывает вообще никогда? Прости, не верю. В telock у мя вываливалось через раз на ложных popad. |
|
|
Дата: Май 19, 2004 21:35:44 Почему GPF? Ничего, AFAIK, страшного не будет. ExitProcess потом вернёт всё на место. Другое дело, если не восстанавливать стек в треде, можно сильно потом пожалеть :-) |
|
|
Дата: Май 19, 2004 22:22:48 да, последние asprы не восстанавливают reg; стек восстановливается на уровне первого PUSHAD |
|
|
Дата: Май 20, 2004 14:31:42 je_ а что значит "на уровне первого PUSHAD"? т.е. на OEP стек выглядит так, как будто сделали PUSHAD и при этом в качестве начальных значений регистров передается ерунда. я правильно понял? |
|
|
Дата: Май 20, 2004 16:16:37 после первого PUSHAD > esp = esp-20; ok? |
|
|
Дата: Май 23, 2004 01:39:36 по поводу push'а - он действительно не нужен и ASPack/ASProtect дают его затирать без нарушения работоспособности упакованного приложения, а вот антивирусы уже такой файл не распакуют и стало быть достаточно упаковать любой троян ASPack'ом, изменить всего один байт и... другую сигнатуру av'ерам выбрать не судьба была ;) не понял на счет [esp-4]. это в каком месте программы? если сразу на старте, - то оно и не должно срабатывать, т.к. первый call извлекает адрес возврата, добавляет к нему адын и топчет назад, а bpx контролирует всего 1 байт, поэтому надо дать bpx на [esp-4]+1, да и то лучше не bpx, а bpm X - так оно надежнее будет ;) |
|
|
Дата: Май 23, 2004 01:48:18 Имелось ввиду что если запомнить значение esp на старте и далее чуть позже, например после бряка на GetProcAddress, поставить bpm esp-4 то за АСПротекченная прога всплывет в Айсе прямо перед OEP и так было, раньше, потом перестало срабатывать и стали ловить на bpm esp-24 зы: но надёжнее в 9x поставить bpr ;-) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.060 |