Сейчас на форуме: igorcauret (+8 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Проблема динамических адресов в win 7 |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 08 июня 2014 14:32 · Личное сообщение · #1 Ребят, я на днях стал читать туторы c сайта tuts4you о реверсинге программ и распаковке "Lenas Reversing for Newbies". Вот читаю 27 урок, в этом уроке автор находит адрес в памяти программы, в котором сохраняется 1 или 0. Единица это значит не зарегистрирована, а 0 зарегистрирована. Но у автора после перезапуска адрес сохраняется, а у меня этот адрес меняется. Вот сам тутор https://tuts4you.com/download.php?view.148 Я нашел решающий переход и перед ним call, который записывает в eax значение из того адреса вот в этой строке MOV AL,BYTE PTR DS:[EAX+24], но у автора в этом месте eax+24 всегда равен 00B0DC08, а у меня начало этого адреса меняется постоянно, то есть у меня он то 0013DC08, то 0014DC08 и так далее. То есть программа создает страницу памяти каждый раз в разных местах, но смещение DC08 всегда сохраняется. Я решил поставить bp на VirtualAlloc как только увидел создание подобной страницы, после этого поставил на адрес со смещение DC08 бряк на запись и попал в код где устанавливается единичка в этот адрес, пропатчил на 0. Проблему так решил, программа зарегистрировалась. Но у меня остается вопрос, почему у меня на windows 7 32 бита адрес меняется постоянно, а у автора он константа ? ![]() |
|
Создано: 09 июня 2014 00:27 · Личное сообщение · #2 |
|
Создано: 10 июня 2014 16:44 · Поправил: kola1357 · Личное сообщение · #3 dosprog пишет: Короче, ковыряйте этот файл до тех пор, пока команда DOS: fc /b OrigFile NewFile не выдаст результат: 00000216: 0E 0F А можно вот про это объяснить мне еще чуть-чуть. Вот взял другую прогу, упакована аспротектом, пытаюсь добиться этого результат, правя байты в hex, вот байт 0e это я нашел методом тыка, что он стоит в hex на 214 строке в 3 столбике, а вот где 0F стоит, чтобы изменить его, так и не смог найти. Подскажите, пожалуйста, тут мне. Вот сама прога http://rusfolder.com/40949017 Дошел до ОЕП, сделал дамп, начинаю чинить иат, есть переадресация. Обнаружил, что по адресу 68A4CC записывается переадресация, а по адресу 68A4AC нет, там будет GetLastError. Поставил бряк хардварный на запись, чтобы поймать команду, которая впишет туда адрес апи функции. Но вот в этой программе как раз адреса команд меняются. Инструкцию нашел MOV DWORD PTR DS:[EDX],EAX. Располагается по адресу 00??7559. Вот подскажите как тут с этим бороться, хотел на саму инструкцию поставить бряк. ![]() |
|
Создано: 11 июня 2014 01:31 · Поправил: dosprog · Личное сообщение · #4 kola1357 пишет: А можно вот про это объяснить мне еще чуть-чуть. Есть т.н. CRK-формат файла. Это то, что получается после запуска стандартной DOS-овской команды сравнения файлов: C:\> FC /b OriginalFile NewFile >000.CRK То-есть - смещение_в_файле: старый_байт новый_байт Есть программы, позволяющие патчить файлы автоматически, если есть CRK-файл. Например, старинная Тот патч, что обсуждался, как оказалось, вам не нужен вовсе. То правка заголовка PE-EXE для запрета зегрузки его по переменному базовому адресу. Возможность такой загрузки только в WinVista+, и я не знаю, зачем она нужна для обычных пользовательских PE-EXE файлов. ![]() |
<< . 1 . 2 . |
![]() |
eXeL@B —› Вопросы новичков —› Проблема динамических адресов в win 7 |