Сейчас на форуме: 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 бита адрес меняется постоянно, а у автора он константа ? ![]() |
|
Создано: 08 июня 2014 14:59 · Личное сообщение · #2 |
|
Создано: 08 июня 2014 15:19 · Личное сообщение · #3 |
|
Создано: 08 июня 2014 15:21 · Поправил: deniskore · Личное сообщение · #4 |
|
Создано: 08 июня 2014 15:33 · Личное сообщение · #5 deniskore пишет: Начиная с Windows Vista Да я это читал. Там есть строка "Отключено для приложений собранных без специальных флагов и при работе в режиме совместимости с более ранними версиями Windows." Мне интересно узнать что за специальные флаги и где нужно менять ? Совместимость с хп поставил, но это не помогает, видимо еще флаги нужно менять. ![]() |
|
Создано: 08 июня 2014 16:03 · Личное сообщение · #6 |
|
Создано: 08 июня 2014 16:06 · Личное сообщение · #7 |
|
Создано: 08 июня 2014 16:21 · Поправил: r_e · Личное сообщение · #8 |
|
Создано: 08 июня 2014 16:26 · Личное сообщение · #9 r_e пишет: Header.Characteristics |= 1 Я вот открыл заголовок программы в дампе, не вижу куда лезть там. Вот скрин http://floomby.ru/s2/VW9uQd Какой параметр там нужно изменить ? Добавлено спустя 7 минут Вот сделал такие изменения, программа на точке входа http://floomby.ru/s2/hW9uGu Но адрес не стал статическим, после перезапуска программы адрес другой. ![]() |
|
Создано: 08 июня 2014 16:35 · Личное сообщение · #10 |
|
Создано: 08 июня 2014 16:40 · Личное сообщение · #11 |
|
Создано: 08 июня 2014 17:07 · Личное сообщение · #12 |
|
Создано: 08 июня 2014 17:12 · Поправил: kola1357 · Личное сообщение · #13 |
|
Создано: 08 июня 2014 17:25 · Личное сообщение · #14 |
|
Создано: 08 июня 2014 17:30 · Личное сообщение · #15 |
|
Создано: 08 июня 2014 17:39 · Личное сообщение · #16 |
|
Создано: 08 июня 2014 17:59 · Поправил: kola1357 · Личное сообщение · #17 Jaa пишет: файл прикрепи Значит новые настройки не помогли, все равно при запуске даже вне отладчика получаю ошибку, что файл не является приложением вин 32. Оригинальный файл Botca666.exe называется. В нем делаю такие изменения http://floomby.ru/s2/UW9F5Y и сохраняю под именем test.exe, потом ребюилд делаю. Вот проги http://rusfolder.com/40932546 Что-то у меня на сайт грузить не получается, не прикрепляется почему-то. ![]() |
|
Создано: 08 июня 2014 18:12 · Поправил: dosprog · Личное сообщение · #18 |
|
Создано: 08 июня 2014 18:26 · Личное сообщение · #19 dosprog пишет: Нужно заменить только один бит: А теперь правильно http://floomby.ru/s2/FW9FT4 ? Программу с изменениями залил http://rusfolder.com/40932668 Она запускается, но адреса меняются все равно. Я ставлю бряк по адресу 42d202 MOV AL,BYTE PTR DS:[EAX+24] Там процедура проверки регистрации, вот EAX+24 каждый раз новое значение, а у автора тутора оно всегда одно и тоже. Хочется такого же добиться. ![]() |
|
Создано: 08 июня 2014 18:30 · Поправил: dosprog · Личное сообщение · #20 |
|
Создано: 08 июня 2014 18:34 · Личное сообщение · #21 |
|
Создано: 08 июня 2014 18:39 · Поправил: dosprog · Личное сообщение · #22 kola1357 пишет: Я это сделал, вот залил http://rusfolder.com/40932668, Нет. У вас сделано вот что: Code:
А нужно так: Code:
Короче, ковыряйте этот файл до тех пор, пока команда DOS: fc /b OrigFile NewFile не выдаст результат: 00000216: 0E 0F ![]() |
|
Создано: 08 июня 2014 18:49 · Личное сообщение · #23 dosprog пишет: У вас сделано вот что: Я что-то запутался, вот в hex открыл мой файл http://floomby.ru/s2/HW9sKs Там ведь по смещению 217 стоит 0f 0b, а вы пишите 01 0f. Я что-то не понял тут. Добавлено спустя 15 минут kola1357 пишет: Короче, ковыряйте этот файл до тех пор, пока команда DOS: fc /b OrigFile NewFile не выдаст результат: 00000216: 0E 0F Добился все-таки такого результата, но по адресу 42d202 MOV AL,BYTE PTR DS:[EAX+24], eax все-равно меняется после перезапуска. Вот 2 файлы: оригинальный и измененный. http://rusfolder.com/40932856 ![]() |
|
Создано: 08 июня 2014 19:23 · Поправил: dosprog · Личное сообщение · #24 |
|
Создано: 08 июня 2014 19:32 · Поправил: kola1357 · Личное сообщение · #25 dosprog, адреса разные все равно получаются. http://floomby.ru/s2/UW9shK http://floomby.ru/s2/gW9sfr Еще в реестр ключ добавил HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages равный 0, это тут советуют dml.compkaluga.ru/forum/showtopic=26342 перезагрузил систему, но все равно адрес изменяется после перезапуска. Вы для теста попробуйте поставить тоже бряк по адресу 42d202, в этом адресе прога брякается при попытке сохранить на диск, там в ней просто нажмите создать что-то и попробуйте сохранить каждый раз перезапуская прогу, вот у меня после перезапуска адрес новый в eax, когда прерываемся в 42d202. ![]() |
|
Создано: 08 июня 2014 19:42 · Поправил: dosprog · Личное сообщение · #26 kola1357 пишет: dosprog, адреса разные все равно получаются. Что-то вы совсем не то говорите. То адрес блока памяти, который программа сама динамически выделила. Но сам-то адрес 42d202 остаётся прежним. Так что не нужно заморачиваться - всё в порядке. Кстати, у меня в системе никакой настройки релоков не выполняется, а адрес в EAX тоже другой при каждом новом запуске. B8C88C, B8C8F8 etc. Не в релоках там дело. ![]() |
|
Создано: 08 июня 2014 19:49 · Поправил: kola1357 · Личное сообщение · #27 dosprog пишет: То адрес блока памяти, который программа сама динамически выделила. Да я про адрес блока памяти, который программа динамически выделяет, он каждый раз меняется. Но если вы скачаете тот видео урок, ссылка в шапке темы, то у автора видно что после перезапуска адрес памяти тот же самый. Я как раз говорю про адрес памяти, а не адрес команды. Автор в видео первый раз находит этот адрес памяти, в нем хранится 0 или 1, решение зарегана прога или нет, поэтому автор хочет сделать хороший патч, то есть не тупо джамп, а именно пропатчить этот адрес в памяти. Для этого он ставит бряк на запись и перезапускает прогу, и бряк срабатывает у него, то есть адрес после перезапуска не изменился. А у меня меняется, поэтому я ставил бряк на VirtualAlloc, чтобы поймать создание этой динамической секции. А уже после ставил бряк на этот адрес, учитывая в какой секции это. ![]() |
|
Создано: 08 июня 2014 20:48 · Поправил: dosprog · Личное сообщение · #28 А какая разница, одинаковый тот адрес, или нет? И чем не устроил патч .41aeb9: 01 00 ? Программа уже и так пропатчена и работает. После этого патча в интересующем байте будет 0, где бы он ни находился. На то оно и динамическое выделение памяти, чтобы не знать, какой конкретно будет адрес. Он может быть и одинаковым от запуска к запуску, но никто этого обещать не может. Зависит от причуд операционной системы. ![]() |
|
Создано: 08 июня 2014 21:13 · Личное сообщение · #29 dosprog пишет: И чем не устроил патч .41aeb9: 01 00 ? Вот тут я не совсем понял, это 41aeb9 адрес в отладчике команды ? Добавлено спустя 8 минут А вы про адрес 41aeb6 с командой MOV BYTE PTR DS:[EAX+24],0 Собственно да эту команду и хочется найти, только вот автор ставил бряк на запись на адрес в памяти, который у него не менялся. И перезапустив, он нашел эту команду. А когда адрес меняется как вы предлагаете искать эту команду. ![]() |
|
Создано: 08 июня 2014 21:53 · Поправил: dosprog · Личное сообщение · #30 Ну, в общем то дело вкуса. Главное, программа работает. Хотя я бы исправил лучше .41B0C6: 01 00 Тогда и при выборе в меню "New file" не появляются никакие лишние надписи. ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Проблема динамических адресов в win 7 |