Сейчас на форуме: (+4 невидимых) |
eXeL@B —› Вопросы новичков —› Разучить прогу лезть в реестр |
Посл.ответ | Сообщение |
|
Создано: 24 апреля 2006 15:16 · Личное сообщение · #1 Камрады, встречайте нуба! Есть такой вопрос. Игруха лезет в реестр, где смотрит букву диска, один файл на котором впоследствии и проверяет. Скопировать ей файл и поменять ключ - не проблема. Однако больше ниче существенного в реестре игруха не хранит, а игра нужна пиплам, которым править реестр нет прав. Так вот, при открытии игры в Olly, все замечательно видно, где она лезет в реестр, где мессажку выводит типо диск не вставлен и т.п. Но опыта в асме не хватает, чтоб понять, че надо конкретно сделать, чтоб либо явно положить куда надо свой путь, либо вообще убрать проверку диска(горадо лучше). Пробовал менять всякие JNE на JE, единстенное, до чего смог додуматься, ниче не дало. Сил хватило тока над мессажкой поиздеваться! Знаю, что тут все просто, но нулевой экспириенс в кряке дает о себе знать. Что тут можно сделать? Если надо, файл гамы(1.5МБ) вот: werder.nm.ru/csce.rar |
|
Создано: 24 апреля 2006 17:39 · Личное сообщение · #2 |
|
Создано: 24 апреля 2006 20:39 · Личное сообщение · #3 |
|
Создано: 24 апреля 2006 21:15 · Личное сообщение · #4 Keo Опыт как раз нулевой и останется. Все пробовать надо.. Мое мнение, что проблемы решать надо по мере поступления, читать ВСЕ ради одной задачи неэффективно. К тому же большинство статей по кряку, из тех что я видел, не по категориям.. К тому же здесь всеж асм читать надо! 1nn0cent Вот, из олли: 0040109E |. 8D8424 6C0E0000 LEA EAX,DWORD PTR SS:[ESP+E6C] 004010A5 |. 50 PUSH EAX ; /pBufSize 004010A6 |. 8D8424 04080000 LEA EAX,DWORD PTR SS:[ESP+804] ; | 004010AD |. 50 PUSH EAX ; |Buffer 004010AE |. 8D8424 700E0000 LEA EAX,DWORD PTR SS:[ESP+E70] ; | 004010B5 |. 50 PUSH EAX ; |pValueType 004010B6 |. 6A 00 PUSH 0 ; |Reserved = NULL 004010B8 |. 68 04A04000 PUSH csce.0040A004 ; |ValueName = "CDDir" 004010BD |. 8BB424 780E0000 MOV ESI,DWORD PTR SS:[ESP+E78] ; | 004010C4 |. 56 PUSH ESI ; |hKey 004010C5 |. 2E:FF15 54914000 CALL DWORD PTR CS:[<&ADVAPI32.RegQueryVa>; \RegQueryValueExA 004010CC |. 85C0 TEST EAX,EAX 004010CE |. 0F85 62030000 JNZ csce.00401436 Я так понимаю считывается в буфер по адресу SS:[ESP+804]. Как это поменять? |
|
Создано: 24 апреля 2006 21:34 · Личное сообщение · #5 Функции RegQueryValueExA передается 6 параметров: PUSH x1 ; /pBufSize PUSH x2 ; |Buffer PUSH x3 ; |pValueType PUSH x4 ; |Reserved PUSH x5 ; |ValueName PUSH x6 ; |hKey CALL yyyyyyy ; \RegQueryValueExA забивай все это nop'ами, а 004010CE JNZ csce.00401436 исправляй на 004010CE JMP csce.00401436 Должно сработать ----- Nulla aetas ad discendum sera |
|
Создано: 24 апреля 2006 23:07 · Личное сообщение · #6 |
|
Создано: 24 апреля 2006 23:15 · Личное сообщение · #7 |
|
Создано: 24 апреля 2006 23:26 · Личное сообщение · #8 |
|
Создано: 25 апреля 2006 01:03 · Личное сообщение · #9 |
|
Создано: 25 апреля 2006 12:14 · Личное сообщение · #10 Лови патч. подправил, тока работоспособность не гарантирую т.к. программа,сам понимаешь, тока exeшник от игры. Попробуй. А еще можешь сам попробовать так: на всех переходах начиная с 00401010 по 00401531 ставишь бряки и запускаешь программу с диском. В комментариях (справа от кода ставишь метки, типа прыгнул/не прыгнул). Потом запускаешь без диска и ищешь разницу. Удачи. ac65_25.04.2006_CRACKLAB.rU.tgz - csce_patch.exe ----- Nulla aetas ad discendum sera |
|
Создано: 25 апреля 2006 16:09 · Личное сообщение · #11 Прога после патча ваще не пашет, ошибку Access Violation говорит. В общем, что пока нарыл: Собственно проверка размера(вроде) файла происходит в 04011BC, где вызывается процедура по адресу 0401436, в которой как раз вызывается GetFileAttributes. Если этот прыжок убрать нахрен вместе в вызовом функции, окошка 'CD не найден' уже не увидим. Однако прога паузится из-за с еррором Invalid Path, потому что с файлом этим она че-то еще делает (при том что фактически он ни на че не влияет, брал любой файл > 200мб, с ним замечательно пашет, если путь в реестре поставить). Вот так-то. Пока идея: вместо того, чтобы прога лезла в реестр, в то место, где она хранит путь, положить путь собственно модуля. Тогда возиться с nop'ом всех мест, где она к файлу обращается, не надо (у меня это ниче не дало. может, руки кривые?). Только как это сделать, не знаю. |
|
Создано: 26 апреля 2006 00:23 · Личное сообщение · #12 Flint, Hellspawn, 1nn0cent, Keo Пипл, кто знает асм.. Как переделать 0040109E |. 8D8424 6C0E0000 LEA EAX,DWORD PTR SS:[ESP+E6C] 004010A5 |. 50 PUSH EAX ; /pBufSize 004010A6 |. 8D8424 04080000 LEA EAX,DWORD PTR SS:[ESP+804] ; | 004010AD |. 50 PUSH EAX ; |Buffer 004010AE |. 8D8424 700E0000 LEA EAX,DWORD PTR SS:[ESP+E70] ; | 004010B5 |. 50 PUSH EAX ; |pValueType 004010B6 |. 6A 00 PUSH 0 ; |Reserved = NULL 004010B8 |. 68 04A04000 PUSH csce.0040A004 ; |ValueName = "CDDir" 004010BD |. 8BB424 780E0000 MOV ESI,DWORD PTR SS:[ESP+E78] ; | 004010C4 |. 56 PUSH ESI ; |hKey 004010C5 |. 2E:FF15 54914000 CALL DWORD PTR CS:[<&ADVAPI32.RegQueryVa>; \RegQueryValueExA 004010CC |. 85C0 TEST EAX,EAX 004010CE |. 0F85 62030000 JNZ csce.00401436 чтоб читала в то же место, тока не ключ реестра, а путь к самой себе? |
|
Создано: 26 апреля 2006 14:57 · Поправил: crc1 · Личное сообщение · #13 kwin Попробуй так 004010CE |.E8 E76F0000 CALL 004080BA ;прыгаем на свободное место
Твое файло должно лежать в C:\GAMES, если лежит в другом месте, то по адресу 004080D3 пропиши свой путь |
|
Создано: 26 апреля 2006 17:30 · Личное сообщение · #14 |
|
Создано: 26 апреля 2006 18:36 · Личное сообщение · #15 |
|
Создано: 27 апреля 2006 09:27 · Личное сообщение · #16 kwin пишет: Однако всеж идеально было бы в [ESP+804] помещать не константу, а путь, откуда запущена прога. Кто знает, как это сделать? Используй функцию GetCommandLineA 004010CE |.E8 E76F0000 CALL 004080B0 ;прыгаем на свободное место
|
|
Создано: 27 апреля 2006 15:39 · Поправил: kwin · Личное сообщение · #17 |
|
Создано: 27 апреля 2006 17:46 · Поправил: crc1 · Личное сообщение · #18 kwin еслиб ты посмотрел чуть повыше адреса 004080B0, то увидел бы переходники на таблицу импорта 00407F96 FF25 60914000 JMP DWORD PTR DS:[<&USER32.MessageBoxA>] ; USER32.MessageBoxA 00407F9C FF25 74914000 JMP DWORD PTR DS:[<&KERNEL32.CreateProce>; kernel32.CreateProcessA 00407FA2 FF25 A0914000 JMP DWORD PTR DS:[<&KERNEL32.GetCommandL>; kernel32.GetCommandLineA 00407FA8 FF25 4C914000 JMP DWORD PTR DS:[<&ADVAPI32.RegCloseKey>; ADVAPI32.RegCloseKey 00407FAE FF25 54914000 JMP DWORD PTR DS:[<&ADVAPI32.RegQueryVal>; ADVAPI32.RegQueryValueExA По адресу 004080B0 нужно поставить команду CALL 00407FA2. OllyDbg сам пересчитает смещение на нужный переходник(E8 EDFEFFFF). Команда будет 5-байтная. А как сделал ты, боюсь на других машинах может не работать |
|
Создано: 27 апреля 2006 19:49 · Личное сообщение · #19 |
eXeL@B —› Вопросы новичков —› Разучить прогу лезть в реестр |