Korol2010 Опубликовано 6 февраля, 2014 Поделиться Опубликовано 6 февраля, 2014 Здравствуйте. Я прошу помощи по взлому. Никак не могу внедрить своё значение ресурсов в код игры, посредством инъекции кода. Пробовал писать скрипт ,применяя свои небольшие знания ассемблера, различными способами, ничего не вышло, что я только не делал... Я и внедрял свою переменную, и регистр менял в оригинальном коде, и внедрял свои значения в оригинальные регистры с помощью команды MOV, и т.д., ничего не получалось(((( Значение к примеру первого ресурса, влияния, при его изменении в скрипте перескакивало в значение энергии, а влияние обнулялась полностью и вообще более не работало (восстанавливал оригинальный код потом соответственно и игрался с инструкцией дальше). Вот вообщем сама оригинальная инструкция...alloc(newmem,2048)label(returnhere)label(originalcode)label(exit)newmem:originalcode:fstp dword ptr [eax]fld dword ptr [ecx+04]exit:jmp returnhere"WXPMod.dll"+5FB0A:jmp newmemreturnhere:Ну вроде описал как мог доходчиво.P.S. Указатели не искал, т.к. не мог их вообще найди, значения найденых адресов при изменении значения в игре просто пропадали.Пожалуйста помогите))) Жду вашей помощи.) Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiger Опубликовано 6 февраля, 2014 Поделиться Опубликовано 6 февраля, 2014 Когда ты вышел на инструкцию, нужно проверить с какими адресами она работает. Для этого в меморивью нажимаем ПКМ на инструкции (см.картинку) Показать контент Заходим в игру играемся немного и смотрим, что получилось.[enable]alloc(newmem,2048)label(exit)newmem:pushffstp dword ptr [eax]cmp // ищи различия между регистрами, как приавило самые простые cmp edi,ecx и cmp ecx,00 и т.д, и т.п свойственные только для твоего адреса . или же анализ структуры.jne exitmov [eax],********* // Значение: (float)100.00/ #100/ 0064 // какой тип у тебя?exit:popffld dword ptr [ecx+04]ret"WXPMod.dll"+5FB0A:call newmem[disable]***Выложи скрипт полностью. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 6 февраля, 2014 Автор Поделиться Опубликовано 6 февраля, 2014 У меня тип тоже (float). Скрипт оригинальной инструкции я выложил полный. На доступ я смотрел что есть, но толком ничего не понял из-за малых знаний ассемблера. Да и сравнивать тоже пробывал, игра не реагировала. НО так как ты написал, так не делал, опять же из-за малых знаний ассемблера, функции некоторые которые ты сейчас представил я не знаю. Я читал книгу обучения ассемблеру лишь самую начальную))) И там некоторых функций не было описано. А вообще из инструкций которые имеют доступ к этой моей инструкции я понял (если конечно правильно), что 1 адрес отвечает и за "влияние" и за "энергию". Спасибо за предоставленную подсказку, попробую покопаться, может что-то получится) Если что-то у меня получится выложу скрипт в этой теме. Чёт не получилось ничего, игра на то что ты мне дал и на команду сравнения не реагирует вообще. Вроде делал всё правильно Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiger Опубликовано 6 февраля, 2014 Поделиться Опубликовано 6 февраля, 2014 В смысле полный?Попробуй так:1) выдели нужную инструкцию в меморивью, нажми Ctrl+A2) вставляем секции [ENABLE] [DISABLE], нажми Ctrl+A+T3) производим инекцию по выделенному адресу, жмем Ctrl+I и ОК или Enterвуаля рабочий инжект готов можно шаманить...Для упрощения процедуры качаем aamaker_2.3 http://forum.gamehac...dpost__p__15069 и кладем файлик .lua в папку ..\Cheat Engine 6.3\autorun\aamaker.luaТеперь смотри в меморивью очень удобный плагин на менюшку Показать контент Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 7 февраля, 2014 Автор Поделиться Опубликовано 7 февраля, 2014 Аааа ты про это. Ну это не проблема выложу. За луа спс пригодится:-) Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 7 февраля, 2014 Автор Поделиться Опубликовано 7 февраля, 2014 Вот как просил[ENABLE]alloc(newmem,2048)label(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute access//place your code hereoriginalcode:fstp dword ptr [eax]fld dword ptr [ecx+04]exit:jmp returnhere"WXPMod.dll"+5FB0A:jmp newmemreturnhere:[DISABLE]"WXPMod.dll"+5FB0A:fstp dword ptr [eax]fld dword ptr [ecx+04]//Alt: db D9 18 D9 41 04 Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 7 февраля, 2014 Автор Поделиться Опубликовано 7 февраля, 2014 Хочу обрадовать)) Я добился своего и сделал рабочий скрипт. Причём сделал даже лучше, теперь с помощью 1 скрипта, инструкция которого принадлежала "влиянию", устанавливаются значения на какие я захочу и "влияния" и "энергии")))))))))))) Вкладываю как обещал готовый и рабочий скрипт...Версия игры 1.4 как написано в свойствах экзешника.[ENABLE]alloc(newmem,2048)label(returnhere)label(exit)newmem:mov dword ptr [eax],(float)100000mov dword ptr [eax+04],0exit:jmp returnhere"WXPMod.dll"+5FB0A:jmp newmemreturnhere:[DISABLE]"WXPMod.dll"+5FB0A:fstp dword ptr [eax]fld dword ptr [ecx+04]dealloc(newmem)//Alt: db D9 18 D9 41 04 Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiger Опубликовано 8 февраля, 2014 Поделиться Опубликовано 8 февраля, 2014 Добавь фильтр!!! он там нужен, Когда выделишь функцию fstp dword ptr [eax] ПКМ и найти адреса с которыми работает инструкция,Чуть побегаешь, кстати тут удобно жмакать кнопку паузы на клавиатуре.Посмтори к каким адресам обращается (справа внизу выстави float)Обрати внимание на регистры ebp и ebx (проверка на ноль это test ebx,ebx потом делашь условный прижок на выход)и тут удобнее делать инжект на строку ret 0004 увидишь ниже fstp dword ptr [eax+08], просто пишешь в адресаmov [eax],(float)50000.00mov [eax+4],(float)50000.00до ret 0004Пробуй сам. Если совсем никак, смотри тут: Показать контент aobscan(address0,d9 58 04 d9 41 08 d8 40 08 d9 58 08 c2 04 00 CC CC)alloc(newMem, 2048)label(exit)registersymbol(address0)newMem:pushftest ebp,ebpjne exittest ebx,ebxje exitmov [eax],(float)50000.00mov [eax+4],(float)50000.00//mov [eax+8],***** //так и не понял что за адрес, обычно равен "0"exit:popfret 0004address0+c:jmp newMem[DISABLE]address0+c:ret 0004int 3int 3dealloc(newMem)unregistersymbol(address0)[ENABLE] 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 8 февраля, 2014 Автор Поделиться Опубликовано 8 февраля, 2014 ууу не чё се это для меня больно сложновато)))) Частично конечно понял что ты предлагаешь но далеко не до конца, к тому же я не знаю толком что делают функции:aobscan - сканирование определённого массива структуры байтов памяти, если правильно понял;registersymbol - без понятия что такое даже не встречал никогда;pushf - в моём понимании загрузка каких-то флагов в регистры этой инструкции;test - если не ошибаюсь какое-то подобие команды cmp;jne - какой-то переход на определённый лейбол;je - прыжок на лейбол;popf - моё понимание, это выгрузка флагов из памяти регистров этой инструкции;ret - из твоего объяснения понял что делает инъжект всего кода в какую-то строку байтов памяти;int - это инкремент, но командой не пользовыался, так что толком не знаю для чего она;unregistersymbol - судя по началу команды она завершает команду registersymbol.К стате я уже взломал ещё 4 значения и написал скрипты, всего сейчас таблица состоит из 5 скриптов))) НО 2 скрипта немного не доработаны, пытался доработать но не вышло((Я попробывал в игре твой скрипт, и по мойпу дак разница между моим и твоим только в сложности исполнения))), я конечно ещё много чего не знаю, так что может именно так писать скрипт правильно))) Но на мой взгляд и мой скрипт норм))Вот скрипты которые удалось сделать за пару часиков (исключая ресурсы):Численность армии не прибавляется (но уменьшается: уходит в минус при гибели юнитов)[ENABLE]alloc(newMem, 2048)label(returnHere)newMem:add [eax],0add ecx,0jmp returnHereWXPMod.dll+7B1D8:jmp newMemreturnHere:[DISABLE]WXPMod.dll+7B1D8:add [eax],edxmov ecx,[ecx+04]dealloc(newMem)Кол-во техники не прибавляется (+та же проблема что и у армии)[ENABLE]alloc(newmem,2048)label(returnhere)label(exit)newmem:add [eax+04],0ret 0004exit:jmp returnhere"WXPMod.dll"+7B1DD:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"WXPMod.dll"+7B1DD:add [eax+04],ecxret 0004//Alt: db 01 48 04 C2 04 00Мгновенное исследование и подготовка (в зданиях)[ENABLE]alloc(newmem,2048)label(returnhere)label(exit)newmem:mov [edi+0C],0mov [edi+10],eaxexit:jmp returnhere"WXPMod.dll"+978B7:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"WXPMod.dll"+978B7:mov [edi+0C],edxmov [edi+10],eax//Alt: db 89 57 0C 89 47 10Мгновенное исследование и подготовка (у юнитов)[ENABLE]alloc(newmem,2048)label(returnhere)label(exit)newmem:mov [eax+08],0mov [eax+0C],edxexit:jmp returnhere"WXPMod.dll"+C811B:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"WXPMod.dll"+C811B:mov [eax+08],ecxmov [eax+0C],edx//Alt: db 89 48 08 89 50 0CНу вот как-то так))) Профессионалам просьба комментировать, поправлять меня и не ругаться я ещё только начинаю знакомится с геймхакингом)))))))) Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiger Опубликовано 8 февраля, 2014 Поделиться Опубликовано 8 февраля, 2014 add [eax+04],ecxзамени наmov [eax+04],00или просто удали - тоже вариант Можешь попробовать найти инструкцию, которая не пишет, а читает и почаще. Тогда возможно значение сразу будет обнулятся, и кстати фильтр, фильтра нет.Все твои бонусы получает и враг) как мне кажется.. а может и нет)Бесконечные юниты Показать контент Не убирает ограничение по количетву юнитов на классaobscan(address, 8B 28 8D 4C 24 28)alloc(newMem, 2048)registersymbol(address)newMem:mov [eax],00mov [eax+04],00mov ebp,[eax]lea ecx,[esp+28]retaddress:call newMemnop[DISABLE]address:mov ebp,[eax]lea ecx,[esp+28]dealloc(newMem)unregistersymbol(address)[ENABLE]Просматривай не только пишушие, но и читающие функции; ищи по возможности ту, которая работает с наименьшим количеством адресов, с твоим в идеале... 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 8 февраля, 2014 Автор Поделиться Опубликовано 8 февраля, 2014 ок, на mov уже к ста заменил))) просто не выложил, хотел исправить, чтоб в минус значение при гибели войск не уходило (не вышло как описывал выше) В 08.02.2014 в 16:52, Tiger сказал: Добавь фильтр!!! он там нужен, Когда выделишь функцию fstp dword ptr [eax] ПКМ и найти адреса с которыми работает инструкция,Чуть побегаешь, кстати тут удобно жмакать кнопку паузы на клавиатуре.Посмтори к каким адресам обращается (справа внизу выстави float)Обрати внимание на регистры ebp и ebx (проверка на ноль это test ebx,ebx потом делашь условный прижок на выход)и тут удобнее делать инжект на строку ret 0004 увидишь ниже fstp dword ptr [eax+08], просто пишешь в адресаmov [eax],(float)50000.00mov [eax+4],(float)50000.00до ret 0004Пробуй сам. Если совсем никак, смотри тут: Показать контент aobscan(address0,d9 58 04 d9 41 08 d8 40 08 d9 58 08 c2 04 00 CC CC)alloc(newMem, 2048)label(exit)registersymbol(address0)newMem:pushftest ebp,ebpjne exittest ebx,ebxje exitmov [eax],(float)50000.00mov [eax+4],(float)50000.00//mov [eax+8],***** //так и не понял что за адрес, обычно равен "0"exit:popfret 0004address0+c:jmp newMem[DISABLE]address0+c:ret 0004int 3int 3dealloc(newMem)unregistersymbol(address0)[ENABLE]К стате начал пробывать сделать как ты здесь описал, и обнаружил что у меня нет такой опции как "найти адреса с которыми работает инструкция". У меня есть только опция "посмотреть какие адреса получают доступ к этой инструкции" Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiger Опубликовано 9 февраля, 2014 Поделиться Опубликовано 9 февраля, 2014 Это одно и тоже.Если вдруг решишь искать здоровье юнитов... то пожалею твой разум и подскажу, что это значение (float)1,00 когда юнит полностью здоров.к примеру.Здоровье юнита 2500 - 100% - 1.00Здоровье юнита 2420 ≈ 97% - 0.9679253101Думаю дальше разберешься.Кстати по поводу фильтра, ID игрока как раз тут и можно отыскать в сравнении с адресами противника. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 9 февраля, 2014 Автор Поделиться Опубликовано 9 февраля, 2014 ок большое спс, эта инфа пригодится))) Попробую потом взломаю) Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 10 февраля, 2014 Автор Поделиться Опубликовано 10 февраля, 2014 Завтра выложу таблицу со скриптом на Worms Revolution? и имеющимися полностью рабочими скриптами на Warhammer))) К стате ресы нашёл сам, различие сделал и фильтр, теперь всё норм. Соответственно на нужный раздел форума, в этой статье не буду выкладывать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 11 февраля, 2014 Автор Поделиться Опубликовано 11 февраля, 2014 К сожалению, как оказалось, я не могу выкладывать таблицы в соответствующем разделе форума((( Тогда выкладываю в этой теме....Warhammer 40k Dawn Of War: Dark Crusade(версия из инфы EXE 1.4, из инфы самой игры 1.11):Скрипт на бесконечные ресурсы (значение обоих ресов установленно как 50000, вы можете по желанию поставить своё значение):[ENABLE]alloc(newmem,2048)label(returnhere)label(hack) //назовите как хотите, у меня названа метка такnewmem:cmp [eax+30],(float)7je hackfstp dword ptr [eax]fld dword ptr [ecx+04]jmp returnherehack:mov dword ptr [eax],(float)50000mov dword ptr [eax+04],0jmp returnhere"WXPMod.dll"+5FB0A:jmp newmemreturnhere:[DISABLE]dealloc(newmem)"WXPMod.dll"+5FB0A:fstp dword ptr [eax]fld dword ptr [ecx+04]Скрипт на бесконечную численность вашей армии и техники (автор скрипта Tiger):[ENABLE]aobscan(address, 8B 28 8D 4C 24 28)alloc(newMem, 2048)registersymbol(address)newMem:mov [eax],00mov [eax+04],00mov ebp,[eax]lea ecx,[esp+28]retaddress:call newMemnop[DISABLE]address:mov ebp,[eax]lea ecx,[esp+28]dealloc(newMem)unregistersymbol(address)Скрипт на мгновенное исследование и подготовку войск в ваших зданиях:[ENABLE]alloc(newmem,2048)label(returnhere)label(exit)newmem:mov [edi+0C],0mov [edi+10],0exit:jmp returnhere"WXPMod.dll"+978B7:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"WXPMod.dll"+978B7:mov [edi+0C],edxmov [edi+10],eaxСкрипт на мгновенное исследование и подготовку у ваших отрядов:[ENABLE]alloc(newmem,2048)label(returnhere)label(exit)newmem:mov [eax+08],0mov [eax+0C],0exit:jmp returnhere"WXPMod.dll"+C811B:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"WXPMod.dll"+C811B:mov [eax+08],ecxmov [eax+0C],edxИгра Worms Revolution(версия #0140):Скрипт на бессмертие ваших червей:[ENABLE]alloc(newmem,2048)label(returnhere)label(hack)newmem:cmp [ecx+44],0je hackmov [ecx+34],eaxret 0004jmp returnherehack:mov [ecx+34],#1000ret 0004jmp returnhere"WormsRevolution.exe"+4E4984:jmp newmemnopreturnhere:[DISABLE]dealloc(newmen)"WormsRevolution.exe"+4E4984:mov [ecx+34],eaxret 0004 Ссылка на комментарий Поделиться на другие сайты Поделиться
RAV Опубликовано 21 февраля, 2022 Поделиться Опубликовано 21 февраля, 2022 Наконец-то я нашел то, что нигде нет. Спасибо тебе, добрый молодец, что 8 лет назад опубликовал эти скрипты как раз для нужной мне игры:) Дополню свою таблицу и проверю, как они будут пахать на версии игры с модом. Ссылка на комментарий Поделиться на другие сайты Поделиться
RAV Опубликовано 22 февраля, 2022 Поделиться Опубликовано 22 февраля, 2022 (изменено) В 11.02.2014 в 13:26, Korol2010 сказал: К сожалению, как оказалось, я не могу выкладывать таблицы в соответствующем разделе форума((( Тогда выкладываю в этой теме.... Warhammer 40k Dawn Of War: Dark Crusade(версия из инфы EXE 1.4, из инфы самой игры 1.11): Скрипт на бесконечные ресурсы (значение обоих ресов установленно как 50000, вы можете по желанию поставить своё значение): [ENABLE] alloc(newmem,2048) label(returnhere) label(hack) //назовите как хотите, у меня названа метка так newmem: cmp [eax+30],(float)7 je hack fstp dword ptr [eax] fld dword ptr [ecx+04] jmp returnhere hack: mov dword ptr [eax],(float)50000 mov dword ptr [eax+04],0 jmp returnhere "WXPMod.dll"+5FB0A: jmp newmem returnhere: [DISABLE] dealloc(newmem) "WXPMod.dll"+5FB0A: fstp dword ptr [eax] fld dword ptr [ecx+04] Скрипт на бесконечную численность вашей армии и техники (автор скрипта Tiger): [ENABLE] aobscan(address, 8B 28 8D 4C 24 28) alloc(newMem, 2048) registersymbol(address) newMem: mov [eax],00 mov [eax+04],00 mov ebp,[eax] lea ecx,[esp+28] ret address: call newMem nop [DISABLE] address: mov ebp,[eax] lea ecx,[esp+28] dealloc(newMem) unregistersymbol(address) Скрипт на мгновенное исследование и подготовку войск в ваших зданиях: [ENABLE] alloc(newmem,2048) label(returnhere) label(exit) newmem: mov [edi+0C],0 mov [edi+10],0 exit: jmp returnhere "WXPMod.dll"+978B7: jmp newmem nop returnhere: [DISABLE] dealloc(newmem) "WXPMod.dll"+978B7: mov [edi+0C],edx mov [edi+10],eax Скрипт на мгновенное исследование и подготовку у ваших отрядов: [ENABLE] alloc(newmem,2048) label(returnhere) label(exit) newmem: mov [eax+08],0 mov [eax+0C],0 exit: jmp returnhere "WXPMod.dll"+C811B: jmp newmem nop returnhere: [DISABLE] dealloc(newmem) "WXPMod.dll"+C811B: mov [eax+08],ecx mov [eax+0C],edx Игра Worms Revolution(версия #0140): Скрипт на бессмертие ваших червей: [ENABLE] alloc(newmem,2048) label(returnhere) label(hack) newmem: cmp [ecx+44],0 je hack mov [ecx+34],eax ret 0004 jmp returnhere hack: mov [ecx+34],#1000 ret 0004 jmp returnhere "WormsRevolution.exe"+4E4984: jmp newmem nop returnhere: [DISABLE] dealloc(newmen) "WormsRevolution.exe"+4E4984: mov [ecx+34],eax ret 0004 Показать Из скриптов к вахе работает только скрипт на бесконечную численность армии. Скрипт на бесконечные ресурсы также рабочий только тот, который тебе @Tiger писал. Остальное все неробит Изменено 22 февраля, 2022 пользователем RAV Дополнил Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 22 февраля, 2022 Поделиться Опубликовано 22 февраля, 2022 В 22.02.2022 в 08:04, RAV сказал: Остальное все неробит Показать А чего ты хотел от скриптов 2014 года? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 февраля, 2022 Поделиться Опубликовано 22 февраля, 2022 В 22.02.2022 в 08:04, RAV сказал: Остальное все неробит Показать Не работают скрипты с фиксированным адресом инъекции (который и поменялся конечно), а скрипты, где адрес инъекции находится через аобскан работают. Ссылка на комментарий Поделиться на другие сайты Поделиться
DieVis Опубликовано 23 февраля, 2022 Поделиться Опубликовано 23 февраля, 2022 В 22.02.2022 в 08:04, RAV сказал: Из скриптов к вахе работает только Показать Вообще-то здесь все скрипты рабочие, только что проверил, правда фильтров не хватает и у врагов тоже самое что и у ГГ. Отдельное спасибище тигру за наводку, сам бы я до такого не дошёл. Если как следует покопаться, то всё что угодно душе можно будет менять, мне вот интересна скорость юнитов найти и подкрутить . Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения