Сейчас на форуме: zds, -Sanchez- (+9 невидимых)

 eXeL@B —› Протекторы —› patch ASProtect 2.11
Посл.ответ Сообщение


Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 11 октября 2005 03:11
· Личное сообщение · #1

Вопрос:
Имею 915 чипсет. Что бы работал SoftIce отключаю гипертрейдинг.
Нахожу "вредные" адреса в проге упакованной ASprotect, делаю прогу которая патчит процесс в памяти.
После включения гипертрейдинга адреса всех пропатченных процедур смещаются на 40000h
Есть подозрение что это смещение будет на всех компах разное.
Как вычислить автоматически это смещение?

-----
StarForce и Themida ацтой!




Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 11 октября 2005 03:16
· Личное сообщение · #2

Maximus
Например: поиск в памяти по сигнатуре

-----
Подписи - ЗЛО! Нужно убирать!




Ранг: 51.9 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 11 октября 2005 03:18 · Поправил: Barakuda
· Личное сообщение · #3

[Sorry. nice is very speed. ]




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 11 октября 2005 03:21
· Личное сообщение · #4

Ок. спсб.
Тогда вопрос другой
С какого адреса начинать поиск, с каким шагом искать (10000h???)
И если есть где пример проги поиска сигнатуры, то может есть ссылочка?

-----
StarForce и Themida ацтой!




Ранг: 51.9 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 11 октября 2005 03:23
· Личное сообщение · #5

Берешь базовый адресс загрузки и отщитываешь смещение, или ищешь сигнатуру.




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 11 октября 2005 03:26
· Личное сообщение · #6

2 Barakuda
Базовый адрес загрузки 401000h
А адрес первой пропатченной процедуры 15B001Eh
Неужели все это перебирать!!!???

-----
StarForce и Themida ацтой!




Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 11 октября 2005 03:35
· Личное сообщение · #7

Maximus
дамс, многовато, думаю нужно сделать как в РеТулз, смотришь какие секции использет программа, сравниваешь по размеру со своей и если совпадает выполняешь поиск, а тем болле если знаешь смещение можешь сразу проверять

-----
Подписи - ЗЛО! Нужно убирать!




Ранг: 51.9 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 11 октября 2005 03:37
· Личное сообщение · #8

15B001Eh - 401000h = 11AF01Eh
Это всего лишь 18,5 метров
Ничего более умного лично я предложить не могу. Хотя способ с сигнатурами не такой уж новый. Есть алгоритмы поиска чисел (типа прога ArtMoney). Что-то подобное описано в Рихтера. Тоесть не нужно идти по всему адр.пространтсву, а считать карту памяти, опредлить диапазоны с атрибутом execute и уже в них осуществить поиск. Не забудь откинуть стек.




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 11 октября 2005 03:47
· Личное сообщение · #9

)) Классно. Написать патчер оказывается сложнее чем сломать Aspr
А может у кого была токая проблемма с адресами и есть типа небольшой примерчик?

-----
StarForce и Themida ацтой!





Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 11 октября 2005 03:48
· Личное сообщение · #10

2 nice
Смещение только на моей машине такое, а вдруг на другой будет не 40000h а к примеру 30000h. Хотелось бы что бы кряк был универсальный.

-----
StarForce и Themida ацтой!




Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
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.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 11 октября 2005 04:01
· Личное сообщение · #12

Ок, теперь понятно.
А может есть у многоопытного nice, половина крякнутых программ на моем компе крякнутая именно им)), мааааленький примерчик?

-----
StarForce и Themida ацтой!




Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
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.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 11 октября 2005 04:38 · Поправил: Maximus
· Личное сообщение · #14

)) Крякнутых примерно столько... Гыыыыыыыыыыыы....

Басое басое спасибА ребятЫ!!!
Ща буду разбираться.

-----
StarForce и Themida ацтой!




Ранг: 62.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 11 октября 2005 06:09
· Личное сообщение · #15

Maximus
Как я понимаю, речь идет о патчинге в области памяти, выделенной аспром, так? Тогда что мешает найти адрес этой области в секции аспра, или выдернуть непосредственно из вызова?




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 11 октября 2005 17:25 · Поправил: Maximus
· Личное сообщение · #16

Классно ASMax правильно понял.
А ссылку тодыть дай на то как найти адрес этой области в секции Аспра.
То есть по другому, как это сделать?

-----
StarForce и Themida ацтой!




Ранг: 62.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 11 октября 2005 18:05
· Личное сообщение · #17

а) Заюзай поиск внутри секции аспра по базовому адресу выделенной памяти.
Либо
б) Вычисли адрес требуемой функции из того места, где она вызывается в секции кода. Т.е. в секции кода есть call/jmp Addr. Вот энтот addr и бери.




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 11 октября 2005 18:09 · Поправил: Maximus
· Личное сообщение · #18

a) по большому счету это то что nice предложил!
б) хм, этот адрес разный каждый раз, потому что call/jmp тож в теле аспра.

-----
StarForce и Themida ацтой!




Ранг: 62.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 11 октября 2005 19:22
· Личное сообщение · #19

Maximus
а) Ты не понял. Имелся ввиду РАЗОВЫЙ поиск у себя на компе. После этого ты будешь знать, что по адресу .aspr+xxxх хранится база выделенной памяти. В патче тебе не нужно будет повторять поиск, а достаточно будет лишь написать:
*(BYTE*)(*(DWORD*)(aspr+xxxx)+offset) = 0xEB

б) Если тот адрес вызывается тоже из аспра, то вычисляй из соседних адресов, тех, которые вызываются из секции кода.

Я правда не знаю, на каком этапе и с какими целями ты собираешься патчить. Детальность ответа зависит от деталей.




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 11 октября 2005 19:48 · Поправил: Maximus
· Личное сообщение · #20

c б) мне все понятно, а с а) нет
Как вычислить где находится .aspr+xxxx?

-----
StarForce и Themida ацтой!




Ранг: 62.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 11 октября 2005 20:19
· Личное сообщение · #21

Допустим у тебя загружена защищенная программа, и ты знаешь, что выделенная память начинается с адреса 0х15B0000. Тогда ты ищешь в секции аспра это значение:
s aspr_start l aspr_length 00,00,5b,01

И если найдешь (а можешь и не найти, тогда придется строить более длинные цепочки), то проверяешь предположение, что в данной проге по адресу .aspr+xxxx всегда хранится база выделенной памяти.



Ранг: 33.1 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 11 октября 2005 22:40
· Личное сообщение · #22

мда...

определись сначала, как эта память выделяется программе. Если она у тебя скачет при смене компа, то это , скорее всего, память, выделяемая каким-нибудь malloc. Соттветственно перехват этой функции решит все твои проблемы - поиск не нужен будет вообще. ;)




Ранг: 328.7 (мудрец), 73thx
Активность: 0.170.01
Статус: Участник

Создано: 12 октября 2005 00:10
· Личное сообщение · #23

как правило в теле проги есть ссылки на аспровые секции
например
401345 call 00db0000 или jmp 00db0000
на другом компе было бы
401345 call 00df0000 ....
то есть можно либо найти ссылку на нужную для патча секцию
либо на соседнюю



Ранг: 31.0 (посетитель), 1thx
Активность: 0.040
Статус: Участник

Создано: 12 октября 2005 00:44
· Личное сообщение · #24

Брякнись на VirtualAlloc и смотри куда он сохраняет адрес выделенной памяти (в ней и будет код аспра), либо если в самом коде аспра то:
call $+5
pop eax
sub eax,RVA of pop eax

в еах будет imagebase кода аспра, добавляй нужный RVA (он всегда одинаковый) и патч




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 12 октября 2005 09:06
· Личное сообщение · #25

Ок. Я все понял, спасибо большое, считайте что тема закрыта.

-----
StarForce и Themida ацтой!



 eXeL@B —› Протекторы —› patch ASProtect 2.11
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати