![]() |
eXeL@B —› Вопросы новичков —› Распаковка и антиотладка. |
Посл.ответ | Сообщение |
|
Создано: 09 апреля 2009 21:31 · Поправил: Euler · Личное сообщение · #1 Решил попрактиковаться в распаковке и вот наткнулся вроде бы очередной UPX'овский файл, с шаблонной распаковкой, но всё оказалось сложнее(для меня). Собственно это онлайновая мини-игра(бесплатная), скачать можно Сразу скажу, что под отладчиком(OllyDbg) программа запускаться и выполняться отказывается. После запуска программа создаёт 6 потоков и вылетает с ошибкой, говоря, что точка входа в модуль находится "вне зоны досягаемости": ![]() И затем "контрольный" ![]() Как это обойти, к сожалению, не знаю. Что касается распаковки. "PEID" говорит, что упакован файл UPX'ом и вроде ошибки тут нет, всё как обычно: начинаем с PUSHAD, а чуть ниже POPAD JMP на OEP, за которым нули: ![]() Однако после дампа импорт нормально не восстанавливается. Во-первых неправильно определяется имя одной из библиотек(теряется путь к ней). Библиотека sound.dll находится во вложенной папке base. Имена библиотек легко найти в памяти: ![]() После восстановления base\sound.dll превращается в sound.dll. Во-вторых вот какая накладка: ![]() Если посмотреть на любую неопределённую функцию, то увидим вот такую картинку: ![]() Просто удалить эти функции нельзя. Очень надеюсь на вашу помощь ![]() ![]() |
|
Создано: 09 апреля 2009 21:43 · Личное сообщение · #2 |
|
Создано: 09 апреля 2009 22:20 · Поправил: Euler · Личное сообщение · #3 BoRoV пишет: такой же импорт и в АИМПе Спасибо за быстрый ответ. Вы имеете ввиду эту тему? Если "да", то во-первых ничего о восстановлении импорта там нет(кроме того, что QU это делает автоматически), а во-вторых эту QU распаковать не может, тупо виснет. Выделю 3 основных вопроса(по возрастанию уровня сложности ![]() 1) Есть ли программа, которая способна менять имя dll в таблице импорта? Если "да", то какая. 2) Как восстановить импорт(обычно ссылка идёт либо на кусок осмысленного кода, либо "в никуда", а тут вроде код есть, но без смысла ![]() 3) Как программа уходит от OllyDbg и как этого не допустить? ![]() |
|
Создано: 09 апреля 2009 22:45 · Личное сообщение · #4 Euler пишет: Вы имеете ввиду эту тему? да, ну извини что там нет о востановлении, я помню что там эта проблема просто обсуждалась ![]() Euler пишет: Есть ли программа, которая способна менять имя dll в таблице импорта? CFF Explorer ----- Лучше быть одиноким, но свободным © $me ![]() |
|
Создано: 09 апреля 2009 23:37 · Поправил: tihiy_grom · Личное сообщение · #5 |
|
Создано: 10 апреля 2009 04:21 · Поправил: ClockMan · Личное сообщение · #6 |
|
Создано: 10 апреля 2009 12:17 · Личное сообщение · #7 Благодарю за ответы, они мне очень помогли. ImpRec 1.7a действительно всё определил, но коряво и программа работала некорректно, а вот 1.6 всё "починил". В общем вопрос с распаковкой решён, осталась только проблема с вылетом(вызывается подпрограмма по нулевому адресу). На сколько я понял сообщение про точку входа в модуль ничего страшного не предвещает и на него можно не обращать внимания. Проблема вот где: ![]() После запуска программа до этого момента ни разу не обращалась к адресу 13A3B50. Без отладчика программа запускается без проблем. ![]() |
|
Создано: 10 апреля 2009 12:23 · Личное сообщение · #8 Euler пишет: 1) Есть ли программа, которая способна менять имя dll в таблице импорта? Если "да", то какая. Речь видимо не про имя, а про путь к длл. Когда я тему про АИМП поднимал, то решил это дело с маленьким извратом: берешь импрек и сохроняешь дерево в файл, далее в файле руками "дописываешь" пути к нужным длл, затем грузишь исправленное дерево в импрек и чинишь импорт. Работает ![]() ![]() |
|
Создано: 10 апреля 2009 14:29 · Личное сообщение · #9 |
|
Создано: 10 апреля 2009 19:57 · Личное сообщение · #10 tihiy_grom пишет: Я хз что там у вас коряво определилось в 1.7а , у меня всё ок и никаких проблем Просто вы не протестировали экзешник. Там если зайти в игру и выбрать персонажа сразу вылетает ошибка и затем виснет программа, а когда её закрываешь выскакивает ещё и ошибка доступа к памяти. user_ пишет: Речь видимо не про имя, а про путь к длл. Ага, то что надо. CFF Explorer не позволяет увеличивать длину имени(для этого придётся всю таблицу перестраивать ![]() В общем остался последний нерешённый вопрос- как и где программа выявляет что её отлаживают? ![]() |
|
Создано: 11 апреля 2009 01:50 · Личное сообщение · #11 |
|
Создано: 11 апреля 2009 07:30 · Поправил: AET · Личное сообщение · #12 народ при распаковке Armadillo при замене ID "EBFE" на "0ВС4" и при запуске Shift+F9выходит такая ошибка Your program is suspended and can't run Please resume main thread ![]() ![]() |
|
Создано: 12 апреля 2009 15:10 · Личное сообщение · #13 |
|
Создано: 12 апреля 2009 15:35 · Личное сообщение · #14 |
![]() |
eXeL@B —› Вопросы новичков —› Распаковка и антиотладка. |
Эта тема закрыта. Ответы больше не принимаются. |