Сейчас на форуме: vsv1, _MBK_ (+3 невидимых)

 eXeL@B —› Вопросы новичков —› Программа проверяет поле версии
Посл.ответ Сообщение

Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 декабря 2007 16:55
· Личное сообщение · #1

Привет. Возникла загвоздка с прогой, собранной в мультимедийном конструкторе, которая в ресурсе версии имеет поле "примечание". При каждом запуске она проверяет это поле, и если оно не соотв тому, что должно там быть (это типа копирайт, за убирание которого нужно платить деньгу), то прога показывает матюки и код ошибки. Я не крекер, даже не начинающий, и уж тем более не хакер, так, программист . Но побороть эту муть всё ж хотелось бы. Прошу подсказать, как в общих чертах это можно сделать. Есть уроки, но ни один из них не соответствует этой ситуации, а хотелось бы на более конкретном примере.

Спасибо!




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 02 декабря 2007 17:52
· Личное сообщение · #2

dss555 пишет:
Есть уроки, но ни один из них не соответствует этой ситуации


"ситуация" - это проверка строки. неужели во всём том количестве уроков, что доступно нынче, нет примера со сравнением строки?

смотри в сторону GetFileVersionInfo, VerQueryValue

-----
EnJoy!





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 03 декабря 2007 04:53
· Личное сообщение · #3

dss555, открой прогу (или её dump) в IDA pro, потом посмотри где она вызыват ф-ции доступа к ресурсам, и потом что она делает с этими данными. Другой вариант, посмотри есть ли сама строка в чистом виде (strings tool или strings page в process explorer). Если да, то измени строку. Если больше проверок, то копай от API call или от строки.



Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

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

s0larian пишет:
посмотри где она вызыват ф-ции доступа к ресурсам

Уже бегу.
s0larian пишет:
посмотри есть ли сама строка в чистом виде

Смотрел, нету.
Jupiter пишет:
неужели во всём том количестве уроков, что доступно нынче, нет примера со сравнением строки

Примеры есть - строки нет
Jupiter пишет:
смотри в сторону

Пасиб, пошёл смотреть. Отпишу позже



Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 декабря 2007 11:49
· Личное сообщение · #5

Короче, нашёл обращение к нужному ресурсу, но дальше - мрак. Там есть какой-то хитрый (для меня) алгоритм обработки строки, ну так я понял. В общем, разобраться, какой jz править, ума не хватило Ещё с ИДА не знаком...
У кого есть желание помочь начинающему горе-крекеру, можете скачать тест из аттача.
Мне бы понять принцип, чё там происходит, и чё нужно делать

5f24_04.12.2007_CRACKLAB.rU.tgz - Копия 1.7z



Ранг: 159.1 (ветеран), 7thx
Активность: 0.130
Статус: Участник

Создано: 04 декабря 2007 12:35 · Поправил: tempread
· Личное сообщение · #6

Пример какой-то очень простой, и не понять, получилось или нет убрать надпись,проверяйте

0043723B E8 11130A00 CALL test.004D8551
00437240 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
00437243 895D F0 MOV DWORD PTR SS:[EBP-10],EBX
00437246 3970 F8 CMP DWORD PTR DS:[EAX-8],ESI
00437249 7E 49 JLE SHORT test.00437294 ----------->Изменить на jmp
0043724B 8B0D C4D25200 MOV ECX,DWORD PTR DS:[52D2C4] ; test.0052D2D8
00437251 894D E8 MOV DWORD PTR SS:[EBP-18],ECX
00437254 8A0406 MOV AL,BYTE PTR DS:[ESI+EAX]
00437257 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]


Это уберет строку "unregistered bla bla bla"на главной форме, о какой строке идет речь в первом посте?



Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 декабря 2007 14:31
· Личное сообщение · #7

Спасибо, tempread, но дело действительно не в этой надписи. Речь идёт о следующем. Файл имеет ресурс версии, в котором поле комментарий заполнено шнягой типа "Создано в ...". Перед запуском программа проверяет ресурс, делает какие-то вычисления, и если обнаруживает, что поле изменилось, то не запускается. И тут я зашился. Нашёл место, где вызывается VerQueryValue, читаются данные, но дальше всё как-то запутано - я так и не нашёл нужный мне переход.



Ранг: 159.1 (ветеран), 7thx
Активность: 0.130
Статус: Участник

Создано: 04 декабря 2007 18:16
· Личное сообщение · #8

Ну это еще проще сделать:

0044A6DA E8 F10A0700 CALL test.004BB1D0
0044A6DF 59 POP ECX
0044A6E0 3BC3 CMP EAX,EBX
0044A6E2 59 POP ECX
0044A6E3 75 08 JNZ SHORT test.0044A6ED ---------->занопить
0044A6E5 6A 01 PUSH 1
0044A6E7 5E POP ESI
0044A6E8 E9 A8000000 JMP test.0044A795




Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 декабря 2007 21:42
· Личное сообщение · #9

Спасибо, tempread! Ты истинный крякер! Я бы сам не нашёл.
Кстати, откуда листинг? Чё-та ИДА не такой выдаёт.



Ранг: 159.1 (ветеран), 7thx
Активность: 0.130
Статус: Участник

Создано: 04 декабря 2007 21:55 · Поправил: tempread
· Личное сообщение · #10

Это из отладчика OllyDbg. Ставишь прерывание на доступ к памяти, на чтение,туда,где эта строка в ресурсах. Прерываешься внутри какой-то API, которая эту версию читает. Трасируешь,пока не попадешь в код программы. И через несколько строк идет проверка. Как бы, проще не бывает...


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