X86Jumps
-
Постов
122 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные X86Jumps
-
-
если он как ты говоришь действительно меняется от уровня к уровню, то по-другому никак
нужен многоуровневый указатель, или просто ставь код там где используется текущий
-
даже если он меняется, он где то хранится, найти место где указатель хранится
-
скрипт автоматического нажатия кнопки numpad6
для версии 1.5.2
(4d - клавиша numpad6 в кодах dinput)Скрытый текст[ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat alloc(newmem,2048) label(returnhere) label(originalcode) label(exit) label(data) newmem: //this is allocated memory, you have read,write,execute access //place your code here call kernel32.GetTickCount sub eax,[data] cmp eax,200 jb @f mov byte ptr[00509A20+4d],1 call kernel32.GetTickCount mov [data],eax originalcode: xor eax,eax cmp ecx,ebx je ePSXe.exe+EC53 exit: jmp returnhere data: dd 0 "ePSXe.exe"+E697: jmp newmem nop nop nop nop nop returnhere: [DISABLE] //code from here till the end of the code will be used to disable the cheat dealloc(newmem) "ePSXe.exe"+E697: xor eax,eax cmp ecx,ebx je ePSXe.exe+EC53 //Alt: db 33 C0 3B CB 0F 84 B2 05 00 00
для версии 1.7.0
Скрытый текст[ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat alloc(newmem,2048) label(returnhere) label(originalcode) label(exit) label(data) newmem: //this is allocated memory, you have read,write,execute access //place your code here call kernel32.GetTickCount sub eax,[data] cmp eax,200 jb @f mov byte ptr[0050F0C0+4d],1 call kernel32.GetTickCount mov [data],eax originalcode: xor eax,eax cmp ecx,ebx je "ePSXe ENG.exe"+12AED exit: jmp returnhere data: "ePSXe ENG.exe"+124BA: jmp newmem nop nop nop nop nop returnhere: [DISABLE] //code from here till the end of the code will be used to disable the cheat dealloc(newmem) "ePSXe ENG.exe"+124BA: xor eax,eax cmp ecx,ebx je "ePSXe ENG.exe"+12AED //Alt: db 33 C0 3B CB 0F 84 29 06 00 00
- 2
-
у тебя скрипт там есть
вместо doKey или doKeyPress пиши writeBytes(0x0050F0C0+0xc8,1)
c8 я для примера набрал, это Arrow Up
потом у тебя sleep идет и уже keyUp, вместо его writeBytes(0x0050F0C0+0xc8,0)
примерно так (1 раз)
writeBytes(0x0050F0C0+0xc8,1) sleep(100) writeBytes(0x0050F0C0+0xc8,0)
2 раза
writeBytes(0x0050F0C0+0xc8,1) sleep(100) writeBytes(0x0050F0C0+0xc8,0) sleep(100) writeBytes(0x0050F0C0+0xc8,1) sleep(100) writeBytes(0x0050F0C0+0xc8,0)
- 1
-
для версии 1,7,0 iDirectInputDevice GetDeviceState возвращает данные в стек, а потом копирует в 0050F0C0
данные в этом случае - массив 256 байт, коды кнопок не VK как в винде, а DirectInput keyboard scan codes
http://www.flint.jp/misc/?q=dik&lang=en
например установка в 1 байта 0050F0C0+C8 даст эмуляцию нажатия Up arrow (DIK_UP)
пока так, если покопаться можно понять как кнопки конвертируются в кнопки пада (в текущей конфигурации)
- 1
-
2 часа назад, Razi сказал:
Нашел вот такое: call DINPUT.DirectInputCreateEx+2179 подойдет такое? Как к нему прицепиться?
нашел в программе где вызывается?
дальше результат куда сохраняет?обычно результат в eax, после вызова
но для подобных функций (COM) обычно это один из параметров
тут он 4й будет, в коде он будет 3 параметров (параметры от конца к началу идут)
у меня в версии 1,5,2 типа такого есть
ePSXe.exe+E05B - E8 80900200 - call ePSXe.exe+370E0 { ->->DINPUT.DirectInputCreateA }
ePSXe.exe+E060 - 8B F8 - mov edi,eax -
там нет никаких параметров?если просто ярлыком то CreateProcess работал бы
-
я когда разбирался как ре5 запускается из стима (потому что напрямую ошибку давал)
вроде понял что устанавливается в оурежении чтото и еще что то
-
именно в ePsxe я еще давно пробовал не работало всякие там SendInput,doKeyDown,KeyDown
там не долго искать, через поиск кода ищи вызов этой функции (ищи call DirectInput8Create)
-
он про стим ничего не говорил вроде
-
2 минуты назад, Razi сказал:
Давно не пользовался CE, почти все забыл. Обьясни более подробно, если можно.
ну запустить ePsxe, открыть дизасемблер и там в enumerate dll чего то, поищи что то из DirectInput8Input
посмотри где она вызывается в коде и смотри куда сохраняется -
найти уже созданную
проверяя где создается через DirectInput8Create -
в ePSXe точно кажется через AutoIt не работало нажатие, скорее всего те 2 функции в CE тоже не помогут
нужно ловить DirectInput -
я находил функцию, которая возвращает нужный указатель по строке
там ничего не выделяется, потому что все данные уже есть
cSetItemInfo созданы уже были на каждый объект (бочки, зомби)
-
ну я же с чего-то должен был начать, нужна была зацепка
в файлах спавна (.lot) указаны именно названия моделей, поэтому можно использовать
хотя там же рядом есть вызов функции, которая по названию модели, вернула бы нужный указатель (который я вставлял)
-
точно не работает?может надо чтоб numpad включен был?
-
какой способ?)возможно тут сложнее чем в некоторых играх) потому что когда я спавню их (зомби), то они мне не дают ничего
у них где то там еще инфа лежит о том, что примерно выпадаетдля ознакомительного видео я думаю хватит и того что есть
это я еще не полез рассказывать про файлы .lot и еще другое)
в первом видео я не сразу понял почему они были в начале на уровне головы
там edi это CameraCtrl, поэтому у меня на видео они выше были чем голова
-
а ярлыком как запускается игра?
-
Записал видео в какой-то степени обучающего видео о том, как можно сделать спавн объектов и зомби.
Сначала определяется как создаются объекты в игре, потом пытаемся воспроизвести спавн
Так же используется condition breakpoint для отладки информации и еще некоторые возможности Cheat Engine
(первое видео было записано 9 декабря 2017 года, второе - 24 декабря 2017 года)Видео 1 и скрипт к нему:
SpoilerСкрытый текст[ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat alloc(newmem,2048) label(returnhere) label(originalcode) label(exit) label(data) newmem: //this is allocated memory, you have read,write,execute access //place your code here pushad pushf push 9 call user32.GetAsyncKeyState cmp eax,0 je originalcode mov [data],esi mov eax,eax mov ebx, 017FAA00 mov esi,[017C54C0] push 0 push ebx mov ecx,esi call 005752B0 mov edi,[data] mov edx,[edi+50] mov [eax+50],edx mov edx,[edi+54] mov [eax+54],edx mov edx,[edi+58] mov [eax+58],edx originalcode: popf popad mov cl,[esi+00004E88] exit: jmp returnhere data: dd 0 dd 0 dd 0 dd 0 dd 0 "BH6.exe"+64D4E9: jmp newmem nop returnhere: [DISABLE] //code from here till the end of the code will be used to disable the cheat dealloc(newmem) "BH6.exe"+64D4E9: mov cl,[esi+00004E88] //Alt: db 8A 8E 88 4E 00 00
Видео 2 и скрипт к нему:
SpoilerСкрытый текст[ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat alloc(newmem,2048) label(returnhere) label(originalcode) label(exit) label(data) newmem: //this is allocated memory, you have read,write,execute access //place your code here pushad pushf mov [data],esi push 9 call user32.GetAsyncKeyState cmp eax,0 je originalcode call kernel32.GetTickCount sub eax,[data+4] cmp eax,200 jb @f /* mov eax,eax mov ebx, 017FAA00 mov esi,[017C54C0] push 0 push ebx mov ecx,esi call 005752B0 mov [data+8],eax mov esi,[data] mov ecx,[esi+50] mov [eax+50],ecx mov ecx,[esi+54] mov [eax+54],ecx mov ecx,[esi+58] mov [eax+58],ecx */ /* spawn item mov eax,[data] mov ecx,[017C54C0] push 1 push eax call 005786B0 */ mov esi,[017C540C] mov ebp, 17D105C push 0 push 0 push ebp mov eax,[esi] mov edx,[eax+40] mov ecx,esi call edx mov esi,[data] mov ecx,[esi+50] mov [eax+50],ecx mov ecx,[esi+54] mov [eax+54],ecx mov ecx,[esi+58] mov [eax+58],ecx call kernel32.GetTickCount mov [data+4],eax originalcode: popf popad mov cl,[esi+00004E88] exit: jmp returnhere data: dd 0 //esi dd 0 //tick dd 0 //last created "BH6.exe"+64D4E9: jmp newmem nop returnhere: [DISABLE] //code from here till the end of the code will be used to disable the cheat dealloc(newmem) "BH6.exe"+64D4E9: mov cl,[esi+00004E88] //Alt: db 8A 8E 88 4E 00 00
- 3
-
В 22.11.2017 в 21:20, keng сказал:
Как найти адрес игрового девайса ?
создают D3DDevice снова и удаляют))
-
если задача просто чтоб [не] выполнился переход то не нужно знать адрес
а так вопрос вообще не понятен
-
08778ED4
это адрес меняется?
если он постоянно меняется то смотреть надо кто туда записывает
и определить
это защита такая что ли?
-
т.е. снимать один бряк и ставить следующий?
странно что это получается быстрее чем lua функцией))
-
если это видовая матрица (view*proj) он должен использоваться как-то d3d
в шейдер передаваться
Assault Cube Function Calling
in Вопросы по созданию читов в одиночных играх
Опубликовано · Изменено пользователем X86Jumps
а это ecx откуда берется?выше же видно должно быть
на скрине из чата видно что он берется из [eax+4], а eax из стека