Посл.ответ |
Сообщение |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 11 октября 2005 03:11 · Личное сообщение · #1
Вопрос:
Имею 915 чипсет. Что бы работал SoftIce отключаю гипертрейдинг.
Нахожу "вредные" адреса в проге упакованной ASprotect, делаю прогу которая патчит процесс в памяти.
После включения гипертрейдинга адреса всех пропатченных процедур смещаются на 40000h
Есть подозрение что это смещение будет на всех компах разное.
Как вычислить автоматически это смещение?
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
|
Ранг: 384.1 (мудрец) Активность: 0.25↘0 Статус: Участник www.int3.net
|
Создано: 11 октября 2005 03:16 · Личное сообщение · #2
Maximus
Например: поиск в памяти по сигнатуре
----- Подписи - ЗЛО! Нужно убирать! | Сообщение посчитали полезным: |
Ранг: 51.9 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 11 октября 2005 03:18 · Поправил: Barakuda · Личное сообщение · #3
[Sorry. nice is very speed.  ]
| Сообщение посчитали полезным: |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 11 октября 2005 03:21 · Личное сообщение · #4
Ок. спсб.
Тогда вопрос другой
С какого адреса начинать поиск, с каким шагом искать (10000h???)
И если есть где пример проги поиска сигнатуры, то может есть ссылочка?
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 51.9 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 11 октября 2005 03:23 · Личное сообщение · #5
Берешь базовый адресс загрузки и отщитываешь смещение, или ищешь сигнатуру.
| Сообщение посчитали полезным: |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 11 октября 2005 03:26 · Личное сообщение · #6
2 Barakuda
Базовый адрес загрузки 401000h
А адрес первой пропатченной процедуры 15B001Eh
Неужели все это перебирать!!!???
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 384.1 (мудрец) Активность: 0.25↘0 Статус: Участник www.int3.net
|
Создано: 11 октября 2005 03:35 · Личное сообщение · #7
Maximus
дамс, многовато, думаю нужно сделать как в РеТулз, смотришь какие секции использет программа, сравниваешь по размеру со своей и если совпадает выполняешь поиск, а тем болле если знаешь смещение можешь сразу проверять
----- Подписи - ЗЛО! Нужно убирать! | Сообщение посчитали полезным: |
Ранг: 51.9 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 11 октября 2005 03:37 · Личное сообщение · #8
15B001Eh - 401000h = 11AF01Eh
Это всего лишь 18,5 метров
Ничего более умного лично я предложить не могу. Хотя способ с сигнатурами не такой уж новый. Есть алгоритмы поиска чисел (типа прога ArtMoney). Что-то подобное описано в Рихтера. Тоесть не нужно идти по всему адр.пространтсву, а считать карту памяти, опредлить диапазоны с атрибутом execute и уже в них осуществить поиск. Не забудь откинуть стек.
| Сообщение посчитали полезным: |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 11 октября 2005 03:47 · Личное сообщение · #9
)) Классно. Написать патчер оказывается сложнее чем сломать Aspr
А может у кого была токая проблемма с адресами и есть типа небольшой примерчик?
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 11 октября 2005 03:48 · Личное сообщение · #10
2 nice
Смещение только на моей машине такое, а вдруг на другой будет не 40000h а к примеру 30000h. Хотелось бы что бы кряк был универсальный.
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 384.1 (мудрец) Активность: 0.25↘0 Статус: Участник www.int3.net
|
Создано: 11 октября 2005 03:54 · Личное сообщение · #11
Maximus
Я имел ввиду смещенеи относительно начала секции, сомневаюсь что оно может отличаться
пример:
.....
.code 401000-480000
.rsrc 480000-481000
....
.Искомая секция 0xxxxxxx-0xxxxxxx+3000 - берем размер секции, он равен нашей? да
тогда смотрим cmp dword [0xxxxxxx+addrPatch],075146620
значит мы не патчили и вперед, это будет быстрее полного прохода по памяти
----- Подписи - ЗЛО! Нужно убирать! | Сообщение посчитали полезным: |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 11 октября 2005 04:01 · Личное сообщение · #12
Ок, теперь понятно.
А может есть у многоопытного nice, половина крякнутых программ на моем компе крякнутая именно им)), мааааленький примерчик?
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 384.1 (мудрец) Активность: 0.25↘0 Статус: Участник www.int3.net
|
Создано: 11 октября 2005 04:23 · Личное сообщение · #13
Maximus пишет:
половина крякнутых программ на моем компе крякнутая
шутишь? у тебя из всего две? ;)
Maximus
neox.pisem.net/download.html
Вот страница нашего брата NEOx'a
Эта версия лежит с исходниками, думаю разберешься
neox.pisem.net/files/PE_Tools13.zip
----- Подписи - ЗЛО! Нужно убирать! | Сообщение посчитали полезным: |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 11 октября 2005 04:38 · Поправил: Maximus · Личное сообщение · #14
)) Крякнутых примерно столько... Гыыыыыыыыыыыы....
Басое басое спасибА ребятЫ!!!
Ща буду разбираться.
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 62.9 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 11 октября 2005 06:09 · Личное сообщение · #15
Maximus
Как я понимаю, речь идет о патчинге в области памяти, выделенной аспром, так? Тогда что мешает найти адрес этой области в секции аспра, или выдернуть непосредственно из вызова?
| Сообщение посчитали полезным: |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 11 октября 2005 17:25 · Поправил: Maximus · Личное сообщение · #16
Классно ASMax правильно понял.
А ссылку тодыть дай на то как найти адрес этой области в секции Аспра.
То есть по другому, как это сделать?
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 62.9 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 11 октября 2005 18:05 · Личное сообщение · #17
а) Заюзай поиск внутри секции аспра по базовому адресу выделенной памяти.
Либо
б) Вычисли адрес требуемой функции из того места, где она вызывается в секции кода. Т.е. в секции кода есть call/jmp Addr. Вот энтот addr и бери.
| Сообщение посчитали полезным: |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 11 октября 2005 18:09 · Поправил: Maximus · Личное сообщение · #18
a) по большому счету это то что nice предложил!
б) хм, этот адрес разный каждый раз, потому что call/jmp тож в теле аспра.
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 62.9 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 11 октября 2005 19:22 · Личное сообщение · #19
Maximus
а) Ты не понял. Имелся ввиду РАЗОВЫЙ поиск у себя на компе. После этого ты будешь знать, что по адресу .aspr+xxxх хранится база выделенной памяти. В патче тебе не нужно будет повторять поиск, а достаточно будет лишь написать:
*(BYTE*)(*(DWORD*)(aspr+xxxx)+offset) = 0xEB
б) Если тот адрес вызывается тоже из аспра, то вычисляй из соседних адресов, тех, которые вызываются из секции кода.
Я правда не знаю, на каком этапе и с какими целями ты собираешься патчить. Детальность ответа зависит от деталей.
| Сообщение посчитали полезным: |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 11 октября 2005 19:48 · Поправил: Maximus · Личное сообщение · #20
c б) мне все понятно, а с а) нет
Как вычислить где находится .aspr+xxxx?
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 62.9 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 11 октября 2005 20:19 · Личное сообщение · #21
Допустим у тебя загружена защищенная программа, и ты знаешь, что выделенная память начинается с адреса 0х15B0000. Тогда ты ищешь в секции аспра это значение:
s aspr_start l aspr_length 00,00,5b,01
И если найдешь (а можешь и не найти, тогда придется строить более длинные цепочки), то проверяешь предположение, что в данной проге по адресу .aspr+xxxx всегда хранится база выделенной памяти.
| Сообщение посчитали полезным: |
Ранг: 33.1 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 11 октября 2005 22:40 · Личное сообщение · #22
мда...
определись сначала, как эта память выделяется программе. Если она у тебя скачет при смене компа, то это , скорее всего, память, выделяемая каким-нибудь malloc. Соттветственно перехват этой функции решит все твои проблемы - поиск не нужен будет вообще. ;)
| Сообщение посчитали полезным: |
 Ранг: 328.7 (мудрец), 73thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 12 октября 2005 00:10 · Личное сообщение · #23
как правило в теле проги есть ссылки на аспровые секции
например
401345 call 00db0000 или jmp 00db0000
на другом компе было бы
401345 call 00df0000 ....
то есть можно либо найти ссылку на нужную для патча секцию
либо на соседнюю
| Сообщение посчитали полезным: |
Ранг: 31.0 (посетитель), 1thx Активность: 0.04↘0 Статус: Участник
|
Создано: 12 октября 2005 00:44 · Личное сообщение · #24
Брякнись на VirtualAlloc и смотри куда он сохраняет адрес выделенной памяти (в ней и будет код аспра), либо если в самом коде аспра то:
call $+5
pop eax
sub eax,RVA of pop eax
в еах будет imagebase кода аспра, добавляй нужный RVA (он всегда одинаковый) и патч
| Сообщение посчитали полезным: |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 12 октября 2005 09:06 · Личное сообщение · #25
Ок. Я все понял, спасибо большое, считайте что тема закрыта.
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |