Перейти к содержанию

заменить [exe+xxxxxx] на символ.


Рекомендуемые сообщения

exe+xxxxxx,  где xxxxxx это адрес который меняется с каждым апдейтом игры, собственно как его заменить на символ.

скрипт:

Спойлер

[ENABLE]
aobscan(INJECT0,xxxxxxxxxxxxxxxx)
alloc(newmem,$64)
label(code)
label(return)
registersymbol(INJECT0)

newmem:

code:
  movzx ecx,byte ptr [exe+xxxxxx]
  jmp return

INJECT0:
  jmp newmem
  nop
  nop
return:

[DISABLE]
INJECT0:
  movzx ecx,byte ptr [exe+xxxxxx]

unregistersymbol(INJECT0)
dealloc(newmem)

 

 

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 84
  • Создана
  • Последний ответ

Топ авторов темы

Популярные дни

53 минуты назад, SpiritWithim сказал:

собственно как его заменить на символ

Тотуриал 4 шаг х64 ...  как пример ниже.. Или способ @Garik66 где то тут выкладывал.. искать надо, мне лень. 

Спойлер

[ENABLE]
aobscanmodule(INJECT,Tutorial-x86_64.exe,F3 0F ? ? ? ? ? ? 0F 2F ? ? ? ? ? 7A ? 72)
alloc(newmem,$1000,INJECT)
label(code)
label(return)
newmem:
push rax  // кидаешь в стек рег, либо там свободны смотри ниже
mov eax,[code+04]   // копируешь с функции офсет - почему +4 а не + 3 ? регистр не нужен, да и рег на 4 байта для офсета норм
mov dword [rax+rbx],(float)5000   // далее берешь испольуемый игрой рег (как баз адрес) а это rbx и дописываешь офсет к нему хранящийся в rax
pop rax
code:
readmem(INJECT,8)
jmp return
INJECT:
jmp newmem
db 90 90 90
return:
registersymbol(INJECT)
registersymbol(code)
[DISABLE]
INJECT:
readmem(code,8)
unregistersymbol(code)
unregistersymbol(INJECT)
dealloc(newmem)

 

Ps: Нашел вариант Игоря..  хотя и выше указанным образом можно подобное провернуть.

Спойлер

[ENABLE]
aobscan(Test,8bxxxxxxxxxx33xxxxxx33xxxxxx3b)
alloc(newmem,$1000,unepic.exe+2D455)
label(code)
registersymbol(code)
label(return)
registersymbol(Test)

newmem:
  mov edx,[code+2]
  mov [edx],deaddead

code:
  readmem(Test,6)
  jmp return

Test:
  jmp newmem
  nop
return:

[DISABLE]
Test:
  readmem(code,6)

unregistersymbol(code)
unregistersymbol(Test)
dealloc(newmem)

 

 

Ссылка на комментарий
Поделиться на другие сайты

50 минут назад, SpiritWithim сказал:

это адрес который меняется с каждым апдейтом игры

скинь нормальный скрипт с логами и адрес только не модулем а так как в таблице отображается. Может сумею помочь.

Ссылка на комментарий
Поделиться на другие сайты

Спойлер

[ENABLE]
aobscan(up,75xx3bxxxx7cxx33xx89)
alloc(newmem,$64)
label(code)
label(return)
registersymbol(up)

newmem:

code:
  db 90 90
  cmp eax,[ebx+58]
  jmp return

up:
  jmp newmem
return:

[DISABLE]
up:
  jne exe+19EF49
  cmp eax,[ebx+58]

unregistersymbol(up)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: exe+19EF23

exe+19EF02: E8 CB7BFFFF                      - call 01596AD2
exe+19EF07: E9 FFFEFFFF                      - jmp 0159EE0B
exe+19EF0C: 8B 43 04                         - mov eax,[ebx+04]
exe+19EF0F: 3B C7                            - cmp eax,edi
exe+19EF11: 74 36                            - je 0159EF49
exe+19EF13: 8B 43 5C                         - mov eax,[ebx+5C]
exe+19EF16: 8B 8B 9C000000                   - mov ecx,[ebx+0000009C]
exe+19EF1C: 40                               - inc eax
exe+19EF1D: 89 43 5C                         - mov [ebx+5C],eax
exe+19EF20: F6 C1 04                         - test cl,04
// ---------- INJECTING HERE -----------
exe+19EF23: 75 24                            - jne 0159EF49
// ---------- DONE INJECTING  ----------
exe+19EF25: 3B 43 58                         - cmp eax,[ebx+58]
exe+19EF28: 7C 1F                            - jl 0159EF49
exe+19EF2A: 33 C0                            - xor eax,eax
exe+19EF2C: 89 43 5C                         - mov [ebx+5C],eax
exe+19EF2F: 8B 43 64                         - mov eax,[ebx+64]
exe+19EF32: F6 C1 02                         - test cl,02
exe+19EF35: 0F84 4B010000                    - je 0159F086
exe+19EF3B: 83 E8 01                         - sub eax,01
exe+19EF3E: 89 43 64                         - mov [ebx+64],eax
exe+19EF41: 75 06                            - jne 0159EF49
}

 

Спойлер

[ENABLE]
aobscan(INJECT0,0fb6xxxxxxxxxxxx8dxxxxe8xxxxxxxx0fb7xx66xxxx74xx8bxxxxxxxxxx8b)
alloc(newmem,$64)
label(code)
label(return)
registersymbol(INJECT0)

newmem:

code:
  mov byte ptr [exe+704F63],0
  jmp return

INJECT0:
  jmp newmem
  nop
  nop
return:

[DISABLE]
INJECT0:
  movzx eax,byte ptr [exe+704F63]

unregistersymbol(INJECT0)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: exe+134C7F

exe+134C64: FF 45 FC                         - inc [ebp-04]
exe+134C67: 8B C2                            - mov eax,edx
exe+134C69: 83 65 F8 00                      - and dword ptr [ebp-08],00
exe+134C6D: 2B C1                            - sub eax,ecx
exe+134C6F: 89 45 F0                         - mov [ebp-10],eax
exe+134C72: 85 DB                            - test ebx,ebx
exe+134C74: 78 5B                            - js 01534CD1
exe+134C76: 8B 55 FC                         - mov edx,[ebp-04]
exe+134C79: 89 55 EC                         - mov [ebp-14],edx
exe+134C7C: 8B 4D F8                         - mov ecx,[ebp-08]
// ---------- INJECTING HERE -----------
exe+134C7F: 0FB6 05 634FB001                 - movzx eax,byte ptr [01B04F63]
// ---------- DONE INJECTING  ----------
exe+134C86: 50                               - push eax
exe+134C87: 8D 0C 31                         - lea ecx,[ecx+esi]
exe+134C8A: E8 CC010000                      - call 01534E5B
exe+134C8F: 0FB7 C0                          - movzx eax,ax
exe+134C92: 66 85 C0                         - test ax,ax
exe+134C95: 74 13                            - je 01534CAA
exe+134C97: 8B 15 DC19A701                   - mov edx,[01A719DC]
exe+134C9D: 8B 4D F0                         - mov ecx,[ebp-10]
exe+134CA0: 98                               - cwde
exe+134CA1: 50                               - push eax
}

 

 

Ссылка на комментарий
Поделиться на другие сайты

ты не сигнатурой аоб скинь а обычными байтами в своём скрипте потом сделаешь сигнатура, дело в том что в аоб перевёрнутый адрес а я его в иксах не вижу и ещё я адрес просил чтоб правильно скрипт написать вот так адрес скинь [27A6A58]  имено числом как в примере.

Изменено пользователем Pitronic
Ссылка на комментарий
Поделиться на другие сайты

и в [DISABLE] мне тож надо так чтоб правильно количество байт посчитать, на один больше один меньше вылет из игры будет

 AllAutoMach:
 db 8B 90 28 8C 00 00

а в своём потом изменишь

Изменено пользователем Pitronic
Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, Pitronic сказал:

мне тож надо так чтоб правильно количество байт посчитать,

А что там считать.. хук на сколько ? не 5 байт разве.... и nop nop у него в 2 байта..  Выходит 7 , что там считать то.

Ссылка на комментарий
Поделиться на другие сайты

Спойлер

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
movzx eax,byte ptr [01B04F63]

exit:
jmp returnhere

"exe"+134C7F:
jmp newmem
nop
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"exe"+134C7F:
movzx eax,byte ptr [01B04F63]
//Alt: db 0F B6 05 63 4F B0 01

 

 

Ссылка на комментарий
Поделиться на другие сайты

32 минуты назад, LIRW сказал:

не 5 байт разве..

Женя прав скинь только аддрес

 

сейчас сделаю

 

Попробуй скрипт

Спойлер

[ENABLE]
aobscan(_Chtohoxesh_,xxxxxxxxxxxxxxxxxxxxxxx) // твоя сигнатура на поиск
alloc(newmem,$1000)
label(return)
label(code)
registersymbol(_Chtohochesh_)
registersymboll(code)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here
push eax
mov eax,[code+3]
// и код тебе для примера
mov [eax],#512

code:
// movzx eax,byte ptr [01B04F63]
readmem(_Chtohochesh_,7)  //здесь де семёрка пишешь  чсло сколько байт в [DISABLE]
pop eax
jmp return

_Chtohoxesh_:
jmp newmem
db 90 90
return:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
_Chtohoxesh_:
//  db 0F B6 05 63 4F B0 01
readmem(code,7)
unregistersymbol(code)
unregistersymbol(_Chtohochesh_)
dealloc(newmem)

 

 

 

Отпишись, работает не?

Ссылка на комментарий
Поделиться на другие сайты

спасибо,  как протестирую отпишусь.

upd: спасибо, работает, вылетов нет, но неизвестно что будет когда игра обновиться и еще вопрос про mov eax,[code+3] почему именно +3?

Изменено пользователем SpiritWithim
Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, SpiritWithim сказал:

и еще вопрос про mov eax,[code+3]

обрати внимание на адрес [01B04F63] раэбиваем на байты 01 B0 4F 63 теперь пишем байты наоборот  63 4F B0 01 и теперь глянь в [DISABLE]

_Chtohoxesh_:

                                       // db 0F B6 05 63 4F B0 01

наш перевернуты адрес в байтах  63 4F B0 01

и прочитай с третьего байта, вот потому и +3

 

5 часов назад, SpiritWithim сказал:

но неизвестно что будет

в eax запишется другой обновлённый адрес

 

вот как раз по нашей теме Чпок

Ссылка на комментарий
Поделиться на другие сайты

13 минут назад, Pitronic сказал:

обрати внимание на адрес [01B04F63] раэбиваем на байты 01 B0 4F 63 теперь пишем байты наоборот  63 4F B0 01 и теперь глянь в [DISABLE]

_Chtohoxesh_:

                                       // db 0F B6 05 63 4F B0 01

наш перевернуты адрес в байтах  63 4F B0 01

и прочитай с третьего байта, вот потому и +3

вот тут я не особо понял)), если адрес из 4 байт то откуда +3 и почему с 3 байта?, хочу понять логику

Изменено пользователем SpiritWithim
Ссылка на комментарий
Поделиться на другие сайты

9 минут назад, SpiritWithim сказал:

вот тут я не особо понял))

что опять не понял?  смотри под спойлером

Спойлер

 

[DISABLE]

_Chtohoxesh_:

  // db 0F B6 05 63 4F B0 01

ещё раз объясняю тока наоборот

наш перевёрнутый адрес

63 4F B0 01

если байты написать наоборот

01 B0 4F 63

а теперь соединим

01B04F01 видишь именно наш адрес получился

в db 0F B6 05 63 4F B0 01

63 идет с третьего байта за ним остальные байты нашего адреса

с третьего байта наш перевёрнутый адрес 63 4F B0 01

 

Изменено пользователем Pitronic
Ссылка на комментарий
Поделиться на другие сайты

8 минут назад, Pitronic сказал:

что опять не понял? с третьего байта наш перевёрнутый адрес 63 4F B0 01

[DISABLE]

_Chtohoxesh_:

  // db 0F B6 05 63 4F B0 01

ещё раз объясняю тока наоборот

наш перевёрнутый адрес

63 4F B0 01

если байты написать наоборот

01 B0 4F 63

атеперь соеденим // это я так понял 01B04F63

01B04F01 видешь именно наш адрес получился //наш адрес 01 B0 4F 63

в db 0F B6 05 63 4F B0 01// получаеться наш адресс из 4 байт 63 4F B0 01

63 идет с третьего байта за ним остальные байты нашего адреса//db 0F B6 05 63 4F B0 01  а не с 4? что слева что справа 

 

Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, SpiritWithim сказал:

что опять не понял?

запутал я тебя +3 это пропуск трёх байт теперь понятно?

Изменено пользователем Pitronic
Ссылка на комментарий
Поделиться на другие сайты

объясни пожалуйста почему 3?

это как то связанно вот с этим?

jmp newmem
  nop
  nop

Изменено пользователем SpiritWithim
Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, SpiritWithim сказал:

объясни пожалуйста почему 3?

Оригинальные байты:
0F B6 05 63 4F B0 01
0F B6 05 < op код - адрес > 63 4F B0 01 // тебе нужен адрес. Значит опкод в 3 байта надо пропустить. +3 и копировать сам адрес 63 4F B0 01

 

  • Понравилось 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.