-
Постов
5 750 -
Зарегистрирован
-
Победитель дней
292
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент Garik66
-
Dison, если ты про фильтр Vlad2, то Baracuda написал: или ты использовал другой фильтр, если да - то выложи для всех. Baracuda, обрати внимание, что сигнатура отличается также всего на один байт (Для "Update3" 7С, Для "Update2" E2, а для для лицензии 1.0.335.2 (Update 3) 8C .
-
Baracuda, ок! Тогда конечно нужно подбирать универсальный фильтр и смотреть сигнатуры на разных версиях, чтобы попробовать сделать скрипт для всех версий. Но я пока в неё не играю, подожду, когда патчи повыпускают и репакеры доразберутся. А пока смотрю видеопрохождение. (В подобные игры раньше не играл - впечатляет, в хорошем смысле!)
-
Baracuda, тогда уж лучше использовать фильтр Vlad2 из этого скрипта. Он точно рабочий и эксклюзивный.
-
Тогда вот это: нужно поподробней изложить. Какую инструкцию nopиш? И на какой переход меняешь?
-
Самый точный (но очень долгий) поиск: "неизвестное значение", тип "все", метод - изменилось/не изменилось. Смотри уроки Xipho. Тип "4 байта" (самый универсальный из всех типов), включает в себя при это методе - значения 4 байта, закодированное значение и float. В нашем случае (Fallout3 поиск нанесённого урона): "неизвестное значение", тип "float", метод - уменьшилось (при лечении)/увеличилось (при нанесении урона)/не изменилось (если ничего не поменялось).
-
Не можешь найти потому что в fallout3 текущее здоровье это "здоровье - нанесённый урон". Вот тебе нужно и обнулять нанесённый урон. Если что по fallout3 смотри мою тему здесь.
-
Во-первых не понятно - на что ты ставил бряк (на дамаг?) // Бряк на запись сработал здесь. PS: И ещё jg - это оригинальный прыжок или уже изменённый тобой? Во-вторых предположу, что раз ты игрался с переходом jg zbotcz.weapon_usp+602., то видимо игра не получает значение дамага и тебе его нужно занести в адрес, наверное нужно сделать так, перед прыжком jg zbotcz.weapon_usp+602 записать в адрес [zbotcz.worldspawn+E750], какое-нибудь значение, типа: mov dword ptr [zbotcz.worldspawn+E750],(float)1000 а после пусть инструкция fld dword ptr [zbotcz.worldspawn+E750] // (float)1000ret выталкивает это значение в стек. Попробуй, может получиться.
-
Проверил смещение, только на Франклине (играть в игру буду попозже, поэтому только в доме Франклина в самом начале) - у меня работает: [ENABLE]aobscanmodule(InfiniteCash,GTA5.exe,E2 48 83 C1 10 48 89 4C 24 10 8B 01 33 C9 89 44 24 08) alloc(newmem,$1000,"GTA5.exe"+C31565) // Для "Update3" E2 в сигнатуре замените на 7Сlabel(return)label(Odin)registersymbol(Odin)registersymbol(InfiniteCash)newmem:cmp byte ptr[Odin],1 // Чтобы один раз.jne @f // Защита от переполнения, т.к. думаю, что инструкцияmov byte ptr[Odin],0 // очень часто обращается к адресу.cmp [rcx+fc4],00005345// Фильтр Baracudajne @fxor [rcx],rcx // Раскодируем значение денюжков прямо в адресе.add [rcx],#100000 // Добавим в кошелёк обещанные 100000 $.(Если нужно больше, // исправьте цифру (100000 на нужную) прямо в скрипте.xor [rcx],rcx // И снова закодируем денюжкки.@@:mov eax,[rcx] // Оригинальные инструкции игры.xor ecx,ecxmov [rsp+08],eaxjmp returnOdin: // Добавим в таблицу адрес с адресом "Odin" и названиемdb 1 // "1 - добавим 100000$ нашему чуваку :)"InfiniteCash+0A:jmp newmemnopnopnopreturn:[DISABLE]InfiniteCash+0A: // GTA5.exe+C31565db 8B 01 33 C9 89 44 24 08unregistersymbol(Odin)unregistersymbol(InfiniteCash)dealloc(newmem)
-
На деньги - уже не проблема. Здесь выложен скрипт на добавление денег: Vlad2 - фильтр, Garik66 - логика дешифрования и Dison - сигнатуры для двух версий игры.
-
Отлично теперь есть уже для двух версий. Хотя, если бы использовался изначально Plugin AA (для сигнатуры), то уверен, что подошёл бы для всех версий.
-
PS: Еле еле доехал до дома по-моему первый парень Франклин. Вошёл в телефон. Да скрипт работает. Так что Dison, логика шифрования такая же как и везде - главное понять, где шифрованное значение, а где константа. Комментарии внутри скрипта.
-
По этим байтам (F3 0F 11 40 20 - байты) находятся две инструкции. Так что скорее всего может случиться глюк, при включении скрипта. Вот допустим как Plugin AA делает: [ENABLE]aobscan(Timer, f3xxxxxxxx00xx00xx01xx00xx00xxxx0d)alloc(newMem, 64)label(returnHere)registersymbol(Timer)newMem:mov [rax+20],1jmp returnHereTimer:jmp newMemreturnHere:[DISABLE]Timer:movss [rax+20],xmm0unregistersymbol(Timer)dealloc(newMem) minesweeper.exe+2B75B - F3 0F11 40 20 - movss [rax+20],xmm0minesweeper.exe+2B760 - 00 00 - add [rax],alminesweeper.exe+2B762 - 00 CD - add ch,clminesweeper.exe+2B764 - 01 00 - add [rax],eaxminesweeper.exe+2B766 - 00 00 - add [rax],alminesweeper.exe+2B768 - 00 48 8B - add [rax-75],clminesweeper.exe+2B76B - 0D F0F40700 - or eax,7F4F0
-
Если пойдёт тот же "разовый" скрипт, то также как делали недавно: [ENABLE]alloc(newmem,2048)label(returnhere)label(odin)newmem:cmp byte ptr [odin],1jne @fmov byte ptr [odin],0mov [ecx+24],(float)210@@:fstp dword ptr [ecx+24]pop ebpret 0004jmp returnhereodin:db 1"CLOS2.exe"+A881D:jmp newmemnopnopreturnhere:[DISABLE]"CLOS2.exe"+A881D:fstp dword ptr [ecx+24]pop ebpret 0004dealloc(newmem)
-
Dison, пока ещё не играл (чёй-то я начитался сообщений на форуме где качал репак, решил попозже). Но проанализировав код игры, делаю вывод, что Vlad2 не много нас запутал своим кодом. Думаю там всё по стандартной схеме: т.е. в [rcx] - лежит закодированное значение. а rcx - одновременно и адрес закодированного значение и константа через которую кодируется значение. Тогда скрипт можно переписать попроще (взял за основу твой скрипт): [ENABLE]aobscanmodule(InfiniteCash,GTA5.exe,E2 48 83 C1 10 48 89 4C 24 10 8B 01 33 C9 89 44 24 08) alloc(newmem,$1000,"GTA5.exe"+C31565) // Для "Update3" E2 в сигнатуре замените на 7Сlabel(code)label(return)label(go)label(michael)label(franklin)label(trevor) label(Odin) registersymbol(Odin)registersymbol(InfiniteCash)newmem:cmp [rcx+d4],'MONE'//Y_SPENT_IN_CLOTHESje franklincmp [rcx+134],'MONE'//Y_SPENT_IN_CLOTHESje michaelcmp [rcx+94],'MONE'//Y_SPENT_IN_CLOTHESje trevormichael:cmp [rcx+144],'LOTH'je gojmp codefranklin:cmp [rcx+e4],'LOTH'je gojmp codetrevor:cmp [rcx+a4],'LOTH' // Надеюсь фильтры правильные.je gojmp codego:cmp byte ptr[Odin],1 // Чтобы один раз.jne code // Защита от переполнения, т.к. думаю, что инструкцияmov byte ptr[Odin],0 // очень часто обращается к адресу. xor [rcx],rcx // Раскодируем значение денюжков прямо в адресе.add [rcx],#100000 // Добавим в кошелёк обещанные 100000 $.(Если нужно больше, // исправьте цифру (100000 на нужную) прямо в скрипте. xor [rcx],rcx // И снова закодируем денюжкки. code:mov eax,[rcx]xor ecx,ecxmov [rsp+08],eaxjmp returnOdin: // Добавим в таблицу адрес с адресом "Odin" и названием db 1 // "1 - добавим 100000$ нашему чуваку :)"InfiniteCash+0A:jmp newmemnopnopnopreturn:[DISABLE]InfiniteCash+0A:db 8B 01 33 C9 89 44 24 08unregistersymbol(Odin) unregistersymbol(InfiniteCash)dealloc(newmem)
-
NullAlex, в этой строчке mov byte ptr [_money],#1 // Если не равно "1" - скрипт не активировался, значит выставляем единицу, и продолжаем выполнениеты не прав, т.к. скрипт будет выполняться постоянно, а соответственно будет переполнение денюжков. (и скорее всего вылет, если Dison, использует инструкцию, которая часто обращается к адресу. ЗЫ: Я ошибся у NullAlex правильный скрипт, просто не посмотрел значение флага и прыжок (je), а так у нас одинаковые скрипты. Dison, попробуй мой вариант: [ENABLE]alloc(newmem,128)label(_money)label(_money2)label(originalcode)label(returnhere)registersymbol(_money2)aobscan(aob_money2,8B 88 E8 00 00 00 8B 46 58 3B C8 76 2B 2B C8 89 4E 5C)newmem:cmp byte ptr [_money],1 jne originalcodemov byte ptr [_money],0 cmp dword ptr [eax+00000128],1 jne originalcode // так как я не знаю для чего 1 (для наших/или нет -ты об этом не написал), // то поставил jne (но может нужно наоборот je). add [eax+000000E8],#10000originalcode:mov ecx,[eax+000000E8]jmp returnhere_money: db 1 // для метки достаточно byteaob_money2:_money2:jmp newmemnopreturnhere:[DISABLE]_money2:mov ecx,[eax+000000E8]unregistersymbol(_money2)dealloc(newmem)
-
Нашёл решение. Вылеты происходили из-за того, что не у всех адресов, работающих с инструкцией по смещению [eax+20] есть поинтеры и соответственно, при выполнении cmp dword ptr [ecx+10],5F766E69, происходил вылет из игры. Так что поставил заслон из фильтров и скрипт заработал, кстати заработал и у Manchkin. [ENABLE]alloc(newMem, 64)label(returnHere)label(OK)newMem:cmp [eax],3jne OKcmp [eax+18],4jne OKcmp [eax+28],4jne OKmov ecx,[eax+20]cmp [ecx+10],5F766E69 //'inv_'jne OKmov [eax+08],00000000mov [eax+0C],40240000OK:mov ecx,[eax+08]mov [edx+08],ecxjmp returnHereGame.exe+113B69:jmp newMemnopreturnHere:[DISABLE]Game.exe+113B69:mov ecx,[eax+08]mov [edx+08],ecxdealloc(newMem)
-
Обид ни каких. Просто интересно, как шифруется. Игру пока не установил, не могу разобраться с инсталлятором. Вроде разобрался - нужно было удалить/переименовать один файл из скачанной раздачи.