Akama Опубликовано 15 октября, 2010 Поделиться Опубликовано 15 октября, 2010 В общем такая проблема возникла - написал скрипт для бессмертия, в котором фильтр на гг делаю.[ENABLE]alloc(newmem,2048)label(GodMod)label(ExitGM)label(BackGM)label(iPlayerID)label(iGM)registersymbol(iPlayerID)registersymbol(iGM)witcher.exe+37B1B0:jmp GodModExitGM:newmem:GodMod:push ecxmov ecx,[witcher.EXE+850EAC]mov ecx,[ecx+B8]mov [iPlayerID],ecxpop ecxcmp dword ptr [iGM],1jne BackGMcmp esi,[iPlayerID]jne BackGMmov [esi+48],4640E400jmp ExitGMBackGM:movss [esi+48],xmm0jmp ExitGMiPlayerID:dd 0iGM:dd 0[DISABLE]witcher.exe+37B1B0:movss [esi+48],xmm0Какое-то время нормально игра идёт, а потом крашит.Вопрос: виден ли с первого взгляда какой-то ляп в коде? Я уже несколько часов его исправляю, глаз намылился. Если всё нормально, то из-за чего ещё крашить может? Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 15 октября, 2010 Поделиться Опубликовано 15 октября, 2010 Без наличия игры сложно помочь.Попробуйте вот так[ENABLE]alloc(newmem,2048)label(ExitGM)label(BackGM)label(iPlayerID)label(iGM)label(hValue)registersymbol(iGM)witcher.exe+37B1B0: jmp newmemExitGM:newmem: cmp [iGM],1 jne short BackGM push ecx mov ecx,[witcher.EXE+850EAC] mov ecx,[ecx+0B8] mov [iPlayerID],ecx pop ecx cmp esi,[iPlayerID] jne short BackGM movss xmm0,[hValue]BackGM: movss [esi+48],xmm0 jmp ExitGMiGM: dd 0hValue: dd 4640E400iPlayerID: dd 0[DISABLE]witcher.exe+37B1B0: movss [esi+48],xmm0dealloc(newmem,2048)unregistersymbol(iGM)но не факт.P.S.А зачем "registersymbol(iPlayerID)", если "iPlayerID" не является флагом ?) Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 15 октября, 2010 Автор Поделиться Опубликовано 15 октября, 2010 iPlayerID это переменная, по-этому и объявляю как переменную... Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 16 октября, 2010 Поделиться Опубликовано 16 октября, 2010 Я бы так написал[ENABLE]alloc(newmem,2048)label(_GodMode)label(_ExitGM)label(_BackGM)label(_pPlayerID)registersymbol(_pPlayerID)witcher.exe+37B1B0:jmp _GodMode_ExitGM:newmem:_GodMode: // save pointer push ecx mov ecx,[witcher.EXE+850EAC] mov ecx,[ecx+B8] mov [_pPlayerID],ecx pushf cmp esi,ecx jne _BackGM movss xmm0,4640E400_BackGM: popf pop ecx movss [esi+48],xmm0 jmp _ExitGM_pPlayerID:dd 0[DISABLE]witcher.exe+37B1B0:movss [esi+48],xmm0Ошибки проверяются в отладке. Pushf, popf возможно не нужны. Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 16 октября, 2010 Поделиться Опубликовано 16 октября, 2010 2 MasterGHАвтоассемблер CE не понимает "movss xmm0,4640E400", поэтому я написал так, как написал.2 AkamaПомог мой скрипт то ? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 16 октября, 2010 Поделиться Опубликовано 16 октября, 2010 ANT' date='16 Октябрь 2010 - 12:50' timestamp='1287208242' post='1464']2 MasterGHАвтоассемблер CE не понимает "movss xmm0,4640E400", поэтому я написал так, как написал.Существует такой вариантmovd eax,4640E400 movd xmm0,eaxМожет быть так прокатитmovd xmm0,4640E400 Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 16 октября, 2010 Автор Поделиться Опубликовано 16 октября, 2010 SER[G]ANTВсё равно крах игры, так же как и с моим.MasterGHТвой скрипт почему-то просто не компилится, все твои варианты перепробовал.Я так думаю, что указатель на гг не берётся, либо с ошибкамиpush ecxmov ecx,[witcher.EXE+850EAC]mov ecx,[ecx+B8]mov [iPlayerID],ecxpop ecxВот тут что-то не то, хотя могу и ошибаться... Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 17 октября, 2010 Поделиться Опубликовано 17 октября, 2010 MasterGHТвой скрипт почему-то просто не компилится, все твои варианты перепробовал. SER[G]ANT уже объяснил почему. Как у тебя получилось все мои варианты перепробовать: один явно не компилируется, два других не доделаны. Сомневаюсь, что ты правильно последних два сделал.Снова обращаю внимание на то, что все ошибки со скриптами узнаются в отладке при трассировке. Можно делать её в дизассемблере CE поставив бряк перед в ходом на инъекцию. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 18 октября, 2010 Поделиться Опубликовано 18 октября, 2010 Есть вариант, что игра обладает защитой от модификации кода. Как Left4Dead 2, к примеру. Там тоже можно взломать что угодно, но при включенном VAC игра крашится через пару минут, когда отрабатывают проверки античита. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 октября, 2010 Поделиться Опубликовано 18 октября, 2010 Есть вариант, что игра обладает защитой от модификации кода. Как Left4Dead 2, к примеру. Там тоже можно взломать что угодно, но при включенном VAC игра крашится через пару минут, когда отрабатывают проверки античита.Ага, такой вариант тоже может быть. Что-то я про него совсем забыл. Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 22 октября, 2010 Автор Поделиться Опубликовано 22 октября, 2010 игра же не мультиплеерная, зачем там такие проверки и вообще античит? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 23 октября, 2010 Поделиться Опубликовано 23 октября, 2010 Во многих играх, которые используют службу Windows Live, есть регистрация достижений даже в одиночных играх. Поэтому в движок Windows Live встроен античит. Да и много в каких других одиночных играх может быть встроена проверка целостности кода игры, так как мало кому из разработчиков хочется, чтобы игру взламывали. Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 25 октября, 2010 Поделиться Опубликовано 25 октября, 2010 Как обычно, Сережа скачает игру и выручит {Игра: Ведьмак - Дополненное издание v1.5.0.1304Чит-код: БессмертиеДата: 24.10.2010Автор скрипта: SER[G]ANTВерсия CE: Cheat Engine 5.6.1 RUS (v 1.0) }[ENABLE] aobscan(_faddress,89xxxxxxxxxx8bxxxxxxxxxx89xxxxxxxxxx8bxxxxxxxxxx8bxxxxxxxxxx89) alloc(_newmem,2048) label(_returnhere) label(_originalcode) label(_player)_newmem: push eax mov eax,[witcher.EXE+00DC09E4] mov eax,[eax+29C] mov eax,[eax+4] mov eax,[eax+350] mov [_player],eax pop eax cmp ecx,[_player] jne short _originalcode mov [ecx+00000048],edx_originalcode: mov [ecx+000002f4],edx jmp _returnhere_player: dd 0_faddress: // 008AB380 = initializeEngine1+15AD50 jmp _newmem nop_returnhere:[DISABLE] aobscan(_faddress,908bxxxxxxxxxx89xxxxxxxxxx8bxxxxxxxxxx8bxxxxxxxxxx89)_faddress-5: mov [ecx+000002f4],edx dealloc(_newmem)//Alt: db 89 91 F4 02 00 00 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 30 октября, 2010 Автор Поделиться Опубликовано 30 октября, 2010 Да уже ненадо, сам сделал, спс... Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения