![]() |
eXeL@B —› Вопросы новичков —› Проблема при ручной распаковке tElock 0.90 |
Посл.ответ | Сообщение |
|
Создано: 25 июля 2007 12:50 · Поправил: alchemister · Личное сообщение · #1 Приветствую всех посетителей форума! Не знаю, насколько мой вопрос соответствует разделу "Вопросы новичков", но всё же... Вот решил распаковать одну прогу, запакованную tElock 0.90, и возникли проблемы. Автоматические распаковщики есть для более низких и более высоких версий, а эту никто не берёт ![]() Где-то в нэте висит информация, что tElock подобной версии собирался чуть ли не на заказ и не вывешивался в сети. В общем, вот что я делал (использовал Olly Debugger): Загрузил прогу, на EP=436000 стоит PUSHAD - стандартно. Ставлю бряк на чтение из [esp-04], запускаю прогу. Дальше идут вещи типа int 3, div 0, access violation, я всё пропускаю и в конце концов вылетаю по бряку. Вижу такой код: 00437137 CD 20 INT 20 00437139 61 POPAD 0043713A -FF6424 D0 JMP DWORD PTR SS:[ESP-30] ; videocap.0040BCA5 Естественно, 40BCA5 - OEP, тем более там стоит стандартный для MS Visual C++ 7.0 код (а все вспомогательные проги и dll'ки созданы именно этим компилятором): 0040BCA5 6A DB 6A ; CHAR 'j' 0040BCA6 70 DB 70 ; CHAR 'p' 0040BCA7 68 DB 68 ; CHAR 'h' ... (да уж, Olly не слишком правильно декомпилировал ;) Делаю дамп. Далее восстанавливаю импорт: ImpRec => IAT auto search => Get Imports Находит 2 неверные ветки, делаю Auto trace, Show Invalid и удаляю оставшуюся ошибку. После чего жму Fix dump, фиксирую... и полученный файл вообще не запускается. PEiD про него говорит Micorsoft Visual C++ 7.0 Method2, WinDASM вообще не показал ни строчки кода, IDA загрузила, нашла OEP, однако при попытке дебага процесс (в смысле программа) выгрузился с exit code 0. Может кто-нибудь знает, я что-то делал неправильно или, может, что-то недоделал? Буду благодарен за помощь (сама прога мне не нужна, просто тренируюсь в ручной распаковке). Исходные файлы программы(640 Кб): hidden123.narod.ru/videocap/VideoCAP.7z Дамп(60 Кб): hidden123.narod.ru/videocap/dumped.7z Дамп с восстановленным импортом(60 Кб): hidden123.narod.ru/videocap/recovered.7z ![]() |
|
Создано: 26 июля 2007 18:50 · Личное сообщение · #2 alchemister Скачал твой фаил, распакован верно, просто там какая-то проверка стоит, если интересно то копай от kernel32.ExitProcess 0040547A |. 8985 B0FEFFFF MOV DWORD PTR SS:[EBP-150],EAX 00405480 |. 81BD B0FEFFFF >CMP DWORD PTR SS:[EBP-150],1B800 0040548A |. 7E 05 JLE SHORT videocap.00405491 ->тут исправь на JMP и прога будет работать 0040548C |. 6A 00 PUSH 0 0040548E |. FF55 E8 CALL DWORD PTR SS:[EBP-18] ; kernel32.ExitProcess 00405491 |> 8B4D EC MOV ECX,DWORD PTR SS:[EBP-14] ![]() |
|
Создано: 26 июля 2007 20:08 · Поправил: El_Diablo · Личное сообщение · #3 |
|
Создано: 26 июля 2007 22:59 · Поправил: alchemister · Личное сообщение · #4 Amok, большое спасибо! Странно, как я умудрился лохануться на такой проверке... Наверно потому что WinDASM 8.93 не смог дизассемблировать, я и решил, что что-то не так с распаковкой. El_Diablo спасибо, буду иметь в виду. И напоследок хочу спросить (наверно вопросы дико тупые, но я распаковкой занимаюсь не так давно, а как дизассемблер и дебаггер предпочитал WinDASM): 1. Почему в ВинДАСМ'е не видно импортируемых функций (ни в 8.93, ни в 10) (в смысле после распаковки - с чем это вообще может быть связано?) 2. Как в Olly увидеть импорт или поставить бряк на API? ![]() |
|
Создано: 26 июля 2007 23:11 · Личное сообщение · #5 1. Почему в ВинДАСМ'е не видно импортируемых функций (ни в 8.93, ни в 10) (в смысле после распаковки - с чем это вообще может быть связано?) У меня видит.Там в самом начале листинга в Imported Functions 2. Как в Olly увидеть импорт или поставить бряк на API? Search for -> binary string ff 25 Или ставь бряк на GetProcAddress ![]() |
|
Создано: 27 июля 2007 10:49 · Личное сообщение · #6 |
|
Создано: 15 февраля 2009 09:27 · Личное сообщение · #7 Файл в аттаче PEiD и QuickUnpack показывают, что tElock 0.90 По мануалу из RCE Unpacking eBook... Press F8 2 times, to look at the screen FPU, ESP xxxx, right click -> Follow in dump. Hight light first 4 bytes -> Breakpoint -> Hardware on access -> Dword: Now press the Shift + F9 8 times (in the child is 8 times), you stand in this place: Вот на этом месте я нифига не стою... при чем в ecx счётчик на чуть больше 1000h при каждом нажатии на Shift + F9... Когда кончается, начинается ещё один (где-то на 200h) потом прога запускается Все скрипты для поиска OEP и распаковки для tElock 0.90 обламываются Это вообще он? И как его загнуть? ![]() ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 15 февраля 2009 11:41 · Личное сообщение · #8 Isaev Не читай всякую фигню там даже импорт не нужно восстанавливать ![]() ![]() |
|
Создано: 15 февраля 2009 13:03 · Личное сообщение · #9 |
|
Создано: 15 февраля 2009 17:19 · Личное сообщение · #10 |
|
Создано: 15 февраля 2009 17:52 · Личное сообщение · #11 |
|
Создано: 15 февраля 2009 17:54 · Личное сообщение · #12 Isaev пишет: расскажи лучше в кратце Типа пусть мы не знаем что это за пакер Откроем в ольке карту памяти 00400000 00001000 sb_seria PE header Imag R RWE 00401000 00004000 sb_seria CODE code Imag R RWE 00405000 00001000 sb_seria DATA data Imag R RWE 00406000 00001000 sb_seria BSS Imag R RWE 00407000 00001000 sb_seria .idata Imag R RWE 00408000 00001000 sb_seria .tls Imag R RWE 00409000 00002000 sb_seria .rdata Imag R RWE 0040B000 0000A000 sb_seria .rsrc resources Imag R RWE 00415000 00002000 sb_seria SFX,imports Imag R RWE Видим стандартное делфи с лишней секцией ставим бряк на запись секции DATA запускаем , брякнулись ставим бряк на доступ секции CODE, запускаем и брякаемся на оеп Можно открыть в дампе idata и поставить бряк на запись, как только оригинальня табличка бкдет заполнена просто сдампить и поменять значения оеп и иат , вот и все. ![]() |
|
Создано: 15 февраля 2009 18:29 · Личное сообщение · #13 |
|
Создано: 15 февраля 2009 20:04 · Поправил: Isaev · Личное сообщение · #14 ClockMan пишет: Жмёшь F9 и останавливаешься здесь /*41613A*/ JMP [DWORD SS:ESP-30] а почему я останавливаюсь здесь: /*415030*/ XOR BYTE PTR DS:[ESI],AL ? (снизу пишет Hardware breackpoint 2 at sb_seria.00415030 - EIP points to next instruction) В общем то по этому по туторам и не выходит (coderess у Нарвахи тот же принцип... да и в RCE Unpacking eBook тоже)... Что-то где-то в настройках ![]() PS: всё понял... Это скрипты наставили ещё 3 BPHA левых... Теперь работает! pavka ты гений! 4 клика ![]() ![]() Вопрос: Есть способ точного и безошибочного определения RVA и её размера? А то в большинстве статей этот момент как-то не уверенно описан ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 17 февраля 2009 22:44 · Личное сообщение · #15 |
|
Создано: 18 февраля 2009 00:40 · Личное сообщение · #16 IsaevВото пробуй ![]() ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 18 февраля 2009 05:35 · Личное сообщение · #17 Isaev пишет: в унпакнутом файле твоём картинка пропала... (там вроде какая-то функция всё-таки импортировалась, может поэтому?) Дамп рабочий так и не получился... Чем его лучше снимать? Дамп рабочий ![]() Выдерни ресурсы утилей др Головы.Отреж из дампа две последних секции перебей тлс и приатач ресурсы ![]() ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Проблема при ручной распаковке tElock 0.90 |