![]() |
eXeL@B —› Основной форум —› Распаковка Dll запакованной ASPR |
Посл.ответ | Сообщение |
|
Создано: 19 июля 2006 18:28 · Личное сообщение · #1 Всем привет. Никак не могу распаковать dll запаковынную ASPr'ом. Вроде нормально восстановил API calls. Сдампил, восстановил импорт, но прога не работает. Стал сравнивать работу исходной dll с дампом и выяснил, что секция 1140F000 заполнена данными, а там должны быть нули. И из за этого происходит вызов по неправильному адресу. Попытался обнулить секцию в WinHex'е, но после этого дамп вообще перестал работать. Наверное нельзя просто обнульть данные. Подскажите как надо это делать. Я стал обнулять секцию из Olly каждый раз при запуске, но дамп все-равно не рабочий. Чувствую что я долго так провожусь и не факт, что к чему то приду. Помогите пожалуйста. прога называется TestComplete Demo 4.23 www.automatedqa.com/downloads/testcomplete423demo.exe Наверное качать всю прогу не нужно. В архиве исходная dll'ка и мой дамп. www.mytempdir.com/813258 Заранее спасибо. ![]() |
|
Создано: 19 июля 2006 18:34 · Личное сообщение · #2 |
|
Создано: 20 июля 2006 15:22 · Личное сообщение · #3 |
|
Создано: 20 июля 2006 16:01 · Личное сообщение · #4 Вот, всего лишь несколько файлов... ![]() tccomponents.bpl tccomponentsex.bpl tccppscriptparser.dll tccsscriptparser.dll tcdscriptparser.dll tcjscriptparser.dll tcrtl.bpl tcscripting.bpl tcvbscriptparser.dll P.S. И ведь они тоже могут что-то импортировать... короче ![]() ----- MicroSoft? Is it some kind of a toilet paper? ![]() |
|
Создано: 21 июля 2006 01:22 · Личное сообщение · #5 Там библиотек на 30 метров. Мне не под силу такое выложить. Наверное проще из дистрибутива их взять. Для меня так и осталось непонятным почему ломается dll при обнулении секции данных. Ошибка происходит на этапе загрузки. Я пробовал обнулять не всю область а частями, так вот если я обнуляю начало, то dll загружается, а если обнуляю конец области, то возникают проблемы. LordPE и PETools просто вылетают при загрузке. Видимо я порчу какие-то важные данные, непонятно. ![]() |
|
Создано: 21 июля 2006 06:43 · Поправил: Bitfry · Личное сообщение · #6 Asterix пишет: старенькая статья, но кое-что можно подчерпнуть По мне так очень мутная статья. Для того чтобы там что-то подчеркнуть, нужно хорошо понимать, что делает автор =). egorovshura, а ты знаешь, чем dll отличается от большинства exe? Если нет, почитай эту тему: http://exelab.ru/f/action=vthread&forum=5&topic=5445 Только в случае с Аспром, всё ещё проще. Он кажется релоки не трогает (могу и ашибаться, так как ещё ниразу в жизни не снимал Аспр =) ). Нужно просто найти оригинальную секцию релоков в дампе (если с компилятором не было сюрпризов). Линковщик обычно вставляет её последней, то есть она будет перед секциями созданными Аспром. Обычно она начинается с "00 10 00 00" или что-то в этом духе, этот dword будет указывать на RVA первой страницы и, как правило, это именно 1000h. Дальше будет явно заметен массив word начинающихся с тройки. Теперь прочитай внимательно ЧАСТЬ 5 из той статьи что указал брат Asterix. ;) Если бы я распаковывал эту dll, я бы в Оли запустил скрипт из одной строки: go EP где вместо EP разумеется правильное значение пакованной точки входа. Если после запуска такого скрипта мы окажемся там, и это действительно будет код EP нужной нам dll, то можно двигаться к OEP и дампить, а если нет, то по ситуации (внимательно читай топик приведённый выше). ----- Всем привет, я вернулся ![]() |
|
Создано: 21 июля 2006 08:21 · Личное сообщение · #7 |
|
Создано: 21 июля 2006 13:09 · Личное сообщение · #8 |
|
Создано: 21 июля 2006 14:46 · Личное сообщение · #9 egorovshura кстати, там довольно много ограничений... на сайте написано следующее: Each project can contain no more than 2 script units. Each script unit can contain no more than 500 lines. A project suite can include no more than 6 projects. P.S. Если не трудно, расскажи, где nop'ить ![]() ----- MicroSoft? Is it some kind of a toilet paper? ![]() |
|
Создано: 22 июля 2006 01:13 · Личное сообщение · #10 Проверка там осуществляется в двух процедурах. В цикле выполнения скрипта и еще есть одна процедура с проверкой, видимо для подстраховки. Patches: 1: 1130C3CE 7E 09 JLE SHORT tcCore.1130C3D9 2: 1130C3FF 7E 09 JLE SHORT tcCore.1130C40A 3: 1130C458 7C 06 JL SHORT tcCore.1130C460 4: 112F27BA 7E 0A JLE SHORT tcCore.112F27C6 5: 112F280E 7C 0A JL SHORT tcCore.112F281A Джампы меняем на безусловные, т.е. 7E и 7C на EB. Только вот такой патч все равно не снимает ограничения с плагинов. Например в плагине LoadTest есть ограничение на количество одновременных пользователей - 5. Мне это пока не нужно, поэтому я не смотрел. ![]() |
|
Создано: 23 июля 2006 00:24 · Личное сообщение · #11 |
|
Создано: 23 июля 2006 02:12 · Личное сообщение · #12 |
|
Создано: 23 июля 2006 09:30 · Личное сообщение · #13 |
|
Создано: 02 ноября 2006 05:59 · Личное сообщение · #14 egorovshura пишет: Проверка там осуществляется в двух процедурах. В цикле выполнения скрипта и еще есть одна процедура с проверкой, видимо для подстраховки. Patches: 1: 1130C3CE 7E 09 JLE SHORT tcCore.1130C3D9 2: 1130C3FF 7E 09 JLE SHORT tcCore.1130C40A 3: 1130C458 7C 06 JL SHORT tcCore.1130C460 4: 112F27BA 7E 0A JLE SHORT tcCore.112F27C6 5: 112F280E 7C 0A JL SHORT tcCore.112F281A Джампы меняем на безусловные, т.е. 7E и 7C на EB. А как применить эти патчи? Нужно распаковывать tcCore.dll? Можешь скинуть пропатченный файл. У меня версия 4.25 но мне кажется должно подойти ![]() |
|
Создано: 02 ноября 2006 06:30 · Личное сообщение · #15 |
|
Создано: 02 ноября 2006 08:05 · Личное сообщение · #16 |
![]() |
eXeL@B —› Основной форум —› Распаковка Dll запакованной ASPR |
Эта тема закрыта. Ответы больше не принимаются. |