![]() |
eXeL@B —› Вопросы новичков —› PE compact & Olly debugger |
Посл.ответ | Сообщение |
|
Создано: 21 января 2007 04:26 · Личное сообщение · #1 Здасьте все. Я до сих пор читаю статью MozgC'а "распаковка...". UPX и ASP распаковал, но на PEcompact у меня проблема: я пользуюсь не сайсом, как в статье, а Олей. И когда я открываю в Оле что-нибудь запакованое PE compact'ом, то возникает такая картина (я открыл PCmedic как в статье, скачанный по адресу www.softok.org/utils/admin/16463dload.html): 00401000 MOV EAX,PcMedic.00532128 00401005 PUSH EAX 00401006 PUSH DWORD PTR FS:[0] 0040100D MOV DWORD PTR FS:[0],ESP 00401014 XOR EAX,EAX 00401016 MOV DWORD PTR DS:[EAX],ECX 00401018 PUSH EAX 00401019 INC EBP 0040101A INC EBX И Т.Д. Дело в том, что при нажатии на F9 (run) выполнение программы останавливается на строке 00401016 и при повторном нажатии F9 ничего не происходит. B строке состояния появляется надпись: "Access violation when writing to [00000000] - use Shift+F7/F8/F9 to pass exeption to program". Т.К. я не знаю английского, пробую нажимать Shift+F9, меня перекидывает на адрес: 7C81EB33 и тут выполнение программы снова приостанавливается и уже другая надпись в строке состояния: "Exeption 406D1388 - use use Shift+F7/F8/F9 to pass exeption to program", Нажимаю опять Shift+F9 программа остаётся на этом же адресе, только надпись уже немножко другая: "Exeption 0EEDFADE - use use Shift+F7/F8/F9 to pass exeption to program". Нажимаю ещё раз Shift+F9 и только в этот раз запускается PCmedic. Что здесь происходит? А если я ставлю Брэкпоинт "hr 0012FFC0", где 0012FFC0 это мой ESP-4, то мне выдаёт кучу остановок и ни одной из них не похожа на ту, которая в статье. Как мне попасть на переход на OEP? ![]() |
|
Создано: 21 января 2007 04:51 · Личное сообщение · #2 |
|
Создано: 21 января 2007 04:52 · Личное сообщение · #3 [poly] glot пишет: Т.К. я не знаю английского Ну так учи! 80% информации в инете (в т.ч. обычные статьи) написаны на английском языке. А по теме - 1 раз поток прерван на том месте, где исключение возникло, 2 раз - на том месте, где оно начало обрабатываться (на самом деле оно начинает обрабатываться в 0 кольце, но это не важно - здесь интересно начало обработки в 3 кольце). [poly] glot пишет: А если я ставлю Брэкпоинт "hr 0012FFC0", где 0012FFC0 это мой ESP-4, то мне выдаёт кучу остановок и ни одной из них не похожа на ту, которая в статье. Как мне попасть на переход на OEP? Зачем столько мороки? Вводи hr esp-4 - мб ты ошибся со значением? Оля с выключенными исключениями доходит до jmp eax по shift+F9 на ура ![]() |
|
Создано: 21 января 2007 05:51 · Личное сообщение · #4 Executioner После этих двух комманд у меня идёт push ss, я ставлю клавишей F2 брэкпоинт по адресу, на котором эта команда, но отладчик не прерывается на этой команде => команда не выполняется, а как мне тогда посмотреть, что будет в ss, если этот кусок не будет выполняться? HoBleen Учить английский в ближайшие пол-года времени нет. А потом думаю стоит попробовать... Исключение - в смысле исключительная ситуация? Если да, то почему в PE compact'e есть обработчик исключительных ситуаций, ведь в статье mozgC'a в главе о ПЕ компакте ничего не сказано об исключительных ситуациях? А как отключить в Оле исключения и всегда ли отключение исключений помогает? Насчёт мороки: я когда зацикливаю прогу в Оле, то я выделяю корректируемую строку, нажимаю пробел и пишу "jmp" и адрес данной строки вручную. Когда я пишу "jmp eip", то написано:"Unknown identifier". Нельзя ли как-нибудь всё-таки написать jmp eip, а не вводить адрес вручную? ![]() |
|
Создано: 21 января 2007 06:17 · Личное сообщение · #5 [poly] glot пишет: ведь в статье mozgC'a в главе о ПЕ компакте ничего не сказано об исключительных ситуациях? Видимо ты исследовал PeCompact 2.x, в статье рассказано о снятии версии 1.х, где исключения не вызываются. [poly] glot пишет: А как отключить в Оле исключения и всегда ли отключение исключений помогает? Options -> Debugging Options -> Exceptions и выбираешь те, которые будут обходиться на автомате. В принципе их надо проходить вручную, если после него надо что-то сделать. [poly] glot пишет: Когда я пишу "jmp eip", то написано:"Unknown identifier". Нельзя ли как-нибудь всё-таки написать jmp eip, а не вводить адрес вручную? Наверно нет. Но esp вводить можно. ![]() |
|
Создано: 21 января 2007 08:00 · Личное сообщение · #6 |
|
Создано: 21 января 2007 21:52 · Личное сообщение · #7 |
|
Создано: 21 января 2007 23:34 · Личное сообщение · #8 |
|
Создано: 22 января 2007 03:28 · Личное сообщение · #9 |
|
Создано: 22 января 2007 03:51 · Личное сообщение · #10 |
|
Создано: 22 января 2007 05:04 · Личное сообщение · #11 |
|
Создано: 22 января 2007 05:05 · Личное сообщение · #12 [poly] glot пишет: Я так понимаю, это ты мне показал зацикливние в МАСМе и других компиляторах, разве в Оле можно какому-нибудь адресу дать метку? tundra37 пишет: 1) ставим метку : -> label @@1 жмешь двоеточие, вводишь название. Еще можно с пом. какого-то плагина для ольки (не помню название) импортировать символы из иды. ![]() |
|
Создано: 22 января 2007 10:13 · Личное сообщение · #13 |
|
Создано: 22 января 2007 10:25 · Личное сообщение · #14 |
|
Создано: 22 января 2007 10:43 · Личное сообщение · #15 |
|
Создано: 22 января 2007 11:29 · Личное сообщение · #16 |
![]() |
eXeL@B —› Вопросы новичков —› PE compact & Olly debugger |