Доброго времени суток господа. Появилась необходимость сделать портативной одну программу портативной. Сама по себе она портативна, привязок к реестру или к другим файлам (в значительном количестве) не обнаружены. Программа вообще не упакована (!!!), ОллиДбг, открывает и дизасемблеры открывают, все видно. Написана программа на 7 Делфе. Натравил на нее DeDe, получил часть исходного кода и ресурсов. Заморочка в том что что во время работы DeDe падает, Олли- Дбг, постоянно налетает на исключения, и не может запустить программу, если использовать shift+f8, после нескольких шагов падает программа с надписью Terminate. Я ее чуток модифицировал, а она как работала так и работает, т.е. как мне кажется контрольных сум от собственного тела она не считает. Программа начинает автоматически закрываться после 5 (на глаз) секунд работы. Я думаю это таймер ( может даже не с фиксированным спусковым механизмом, а через ГСЧ например в промежтки от 3 до 6 секунд). Главный вопрос как найти и демонтировать или выставить на огромное число например 10 000 секунд.
Ок гляну. Я подумал интерсно было бы програмнть данную программу через апи шпион, а потом посмотреть в конец лог файла, какие функции программа вызывает перед капитуляцией. Может посоветуете толковый апи шпион. Я использовал раньше керберос. Пробовал microsoft debug tool, но сильно мудренная штука+консольный интерфейс.
1)В OllyDbg можно игнорировать все исключения и нормально отлаживать: Alt+O -> Exceptions и добавляете диапазон игнорируемых исключений от 0 до FFFFFFFF 2) Если начинает вылетать после модификации, то либо криво патчили, либо как раз-таки имеется проверка crc. Просто уже в процессе работы, а не при запуске. 3) SetTimer 4)WinAPIOverride
Спасибо за советы. Я модифицирую программу самым простым способом, просто забиваю все подозрительные функции НОП-ами. Если говорить а контрольной сумме то я ее поищу, как я уже гооврил програама не криптованая не пакованая, и все стринги и функции видны как на ладони.
Реально с установкой исключений в Олли ее можно дебажить, с Апи шпионом дело пока идет туго, он лог файл сохранять не успевает. Если кому интересно поковыряйте пока эту штуку. Прикрепляю большенство нужных файлов, которых достаточно для работы.
Интересно получается, вчера прикрепил файлы к сообщениям и отправил, трафик ушел у файлы не отображаются на форуме. Вначале я вчера подумал возможно их предварительно модераторы просмотривают а потом открывают к ни доступ а сейчас не знаю что думать. Ковырял я подопытную программу, изувечил я ее в нескольких местах и начала работать и не пропадать, единственная досада, теперь выскакивают виндошные сообщения о отм что программа пытается получить доступ к к чужим адресам памяти. Пытался выловить эти адреса отладчиком но они чужие соответсвенно не ловятся. А сообщения естественно надоедают ибо выскакивают через каждые 5 секунд, без разници совершаеш рабоаеш с программой или она просто висит на рабочем столе. Опять искать таймер? И где теперь бряк ставить?
Я выложил уже файлы на Депозит http://depositfiles.com/ru/files/5g8v5uzy4 Весит этот архив 5,1 метра. Если у есть желание поковырять, качайте и модифицируйте, программа толковая, все необходимые файлы я потом выложу. Могу дать подсказку ковырять нужно в том куске где он пытается загрузить программа setup.exe (betup.exe в моем изувеченном варианте.
Если, интересно в чем дело, то процедура по адресу 00404A6C - лишняя )). Просто находишь места вызова - их 2 и забиваешь нопами. Или правишь процедуру прыгая сразу на ret
Работает стабильно, но когда я начал проводить расчеты она останавливается на 6% и выдает ошибку чтения по адресу 000000. Дело в том что сам програмный продукт весит около 80 мб, а я выложил только самую нужную часть. Я пытался отследить изменения который вы произвели, взял слил дизасемблерый листинг в текстовый файл (получился файлик на 500 кб), и взял notepad++, там есть функция сравнения только внятных результатов я от нее не получил. Можете сказать где пофиксили программу.
Проверил действительно процедура подозрительная, очень много сравнений и циклов. Вызывается она как минимум с одного места (в ОллиДбг написано local call from а дальше адрес, я его забил нопами), где искать второй вызов этой функции не знаю. Пробовал сразу забить по адресу 00404a6c переход на конец процедуры (retn), сделал jmp 00404b3f. Все равно расчеты не проводит и после этого долго выдает виндошный application error. Если вам не сложно на депозит или на репиду залейте профиксенный файл.
Пардон изучал не тот файл который был в общем доступе а тот который выложил Umov. Когда поковырял исходный файл то там реально вызывается сомнительная процедура с двух адресов 00404b49 , 006074c7., я эти адреса занопал но программа все равно не считает корректно задания. Попытаюсь прикрепить БД к сообщению, аесли не получится то залью на депозит.