StopFreeLife
11.11.2008, 14:25
Продолжаем практиковаться в распаковке, каждый раз используя более трудный упаковщик, постепенно повышая тем самым уровень сложности.
Следующим упаковщиком на шкале сложности является aspack, очень похожий на UPX, и для которого у нас есть крэкми UnPackMe_ASPack2.12.exe, использовавшееся в главе 32.
Для практики установим OllyDump в директорию с плагинами, чтобы сделать дамп с его помощью.
Здесь была ссылка, но она устарела. Возможно, поможет вот эта.
Открываем OllyDbg, защищённый плагинами от обнаружения, и находим OEP с помощью метода PUSHAD.
http://www.wasm.ru/pub/23/pic/ollydbg35/1.png
Видим, что здесь нам сообщают о том, что точка входа находится за пределами секции кода, как это обычно бывает с большинством упаковщиков.
http://www.wasm.ru/pub/23/pic/ollydbg35/2.png
Видим начальный PUSHAD, который проходим с помощью F7, а затем делаем
http://www.wasm.ru/pub/23/pic/ollydbg35/3.png
ESP-FOLLOW IN DUMP, чтобы установить в DUMP’е железную (hardware) точку останова на доступ к значениям двух регистров, которые сохраняются инструкцией PUSHAD.
http://www.wasm.ru/pub/23/pic/ollydbg35/4.png
Затем нажимаем F9.
http://www.wasm.ru/pub/23/pic/ollydbg35/5.png
И останавливаемся прямо после POPAD, который восстанавливает сохранённые в эти регистры значения. Трассируем с помощью F7, пока не прибудем в OEP.
http://www.wasm.ru/pub/23/pic/ollydbg35/6.png
Как видим, код был не понят, выходим из анализа.
http://www.wasm.ru/pub/23/pic/ollydbg35/7.png
И видим, что если проанализировать его ещё раз, всё становится гораздо лучше.
http://www.wasm.ru/pub/23/pic/ollydbg35/8.png
Затем приступаем к дампу файла. Идём в меню PLUGINS и ищем там OllyDump.
http://www.wasm.ru/pub/23/pic/ollydbg35/9.png
http://www.wasm.ru/pub/23/pic/ollydbg35/10.png
Нам открывается окно плагина, в котором уже отображено то, что можно модифицировать. Можно исправить базу кода без необходимости потом править её в заголовке. В окне видим, что база кода равна 4000, а если помним, то aspack выполняется не в первой секции, поэтому не меняем это значение, которое соответствует 404000, где находится OEP и выполняется программа.
Ещё одна важная фишка – это опция «REBUILD IMPORT», находящаяся внизу окна. OllyDbg пытается сделать работу IMP REC’а, для чего ему служат METHOD1 и METHOD2, которые могут работать для простых упаковщиков. Вы можете сделать два дампа, используя каждый из этих методов, и посмотреть, работает ли хотя бы один из них. Это не всегда срабатывает, но иногда может.
Мы снимаем галочку с «REBUILD IMPORT», так как мы будем использовать IMP REC для большей надёжности.
http://www.wasm.ru/pub/23/pic/ollydbg35/11.png
Следующим упаковщиком на шкале сложности является aspack, очень похожий на UPX, и для которого у нас есть крэкми UnPackMe_ASPack2.12.exe, использовавшееся в главе 32.
Для практики установим OllyDump в директорию с плагинами, чтобы сделать дамп с его помощью.
Здесь была ссылка, но она устарела. Возможно, поможет вот эта.
Открываем OllyDbg, защищённый плагинами от обнаружения, и находим OEP с помощью метода PUSHAD.
http://www.wasm.ru/pub/23/pic/ollydbg35/1.png
Видим, что здесь нам сообщают о том, что точка входа находится за пределами секции кода, как это обычно бывает с большинством упаковщиков.
http://www.wasm.ru/pub/23/pic/ollydbg35/2.png
Видим начальный PUSHAD, который проходим с помощью F7, а затем делаем
http://www.wasm.ru/pub/23/pic/ollydbg35/3.png
ESP-FOLLOW IN DUMP, чтобы установить в DUMP’е железную (hardware) точку останова на доступ к значениям двух регистров, которые сохраняются инструкцией PUSHAD.
http://www.wasm.ru/pub/23/pic/ollydbg35/4.png
Затем нажимаем F9.
http://www.wasm.ru/pub/23/pic/ollydbg35/5.png
И останавливаемся прямо после POPAD, который восстанавливает сохранённые в эти регистры значения. Трассируем с помощью F7, пока не прибудем в OEP.
http://www.wasm.ru/pub/23/pic/ollydbg35/6.png
Как видим, код был не понят, выходим из анализа.
http://www.wasm.ru/pub/23/pic/ollydbg35/7.png
И видим, что если проанализировать его ещё раз, всё становится гораздо лучше.
http://www.wasm.ru/pub/23/pic/ollydbg35/8.png
Затем приступаем к дампу файла. Идём в меню PLUGINS и ищем там OllyDump.
http://www.wasm.ru/pub/23/pic/ollydbg35/9.png
http://www.wasm.ru/pub/23/pic/ollydbg35/10.png
Нам открывается окно плагина, в котором уже отображено то, что можно модифицировать. Можно исправить базу кода без необходимости потом править её в заголовке. В окне видим, что база кода равна 4000, а если помним, то aspack выполняется не в первой секции, поэтому не меняем это значение, которое соответствует 404000, где находится OEP и выполняется программа.
Ещё одна важная фишка – это опция «REBUILD IMPORT», находящаяся внизу окна. OllyDbg пытается сделать работу IMP REC’а, для чего ему служат METHOD1 и METHOD2, которые могут работать для простых упаковщиков. Вы можете сделать два дампа, используя каждый из этих методов, и посмотреть, работает ли хотя бы один из них. Это не всегда срабатывает, но иногда может.
Мы снимаем галочку с «REBUILD IMPORT», так как мы будем использовать IMP REC для большей надёжности.
http://www.wasm.ru/pub/23/pic/ollydbg35/11.png