Перейти к содержанию
  • запись
    1
  • комментариев
    7
  • просмотра
    1 732

Напоминалка (для себя) - склероз однако:


Garik66

1 920 просмотров

1. 

Спойлер

{ Game   : Tutorial-i386.exe
  Version: 
  Date   : 2018-03-15
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
// Когда меняются регистры и смещения с патчем игры
aobscanmodule(INJECT,Tutorial-i386.exe,81 BB 80 04 00 00 E8 03 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(code)
registersymbol(INJECT)

newmem:
  mov [ebx+00000480],000003E8

code:
  readmem(INJECT,10)           // Когда меняются регистры и смещения с патчем игры
  jmp return

INJECT:
  jmp newmem
  db 90 90 90 90 90
return:

[DISABLE]
INJECT:
  readmem(code,10)             // Когда меняются регистры и смещения с патчем игры   

unregistersymbol(code)
unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Tutorial-i386.exe"+23AC3

"Tutorial-i386.exe"+23AB1: E8 0A 9D FE FF                 -  call Tutorial-i386.exe+D7C0
"Tutorial-i386.exe"+23AB6: 5E                             -  pop esi
"Tutorial-i386.exe"+23AB7: 5B                             -  pop ebx
"Tutorial-i386.exe"+23AB8: C9                             -  leave 
"Tutorial-i386.exe"+23AB9: C3                             -  ret 
"Tutorial-i386.exe"+23ABA: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+23ABC: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+23ABE: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+23AC0: 53                             -  push ebx
"Tutorial-i386.exe"+23AC1: 89 C3                          -  mov ebx,eax
// ---------- INJECTING HERE ----------
"Tutorial-i386.exe"+23AC3: 81 BB 80 04 00 00 E8 03 00 00  -  cmp [ebx+00000480],000003E8
// ---------- DONE INJECTING  ----------
"Tutorial-i386.exe"+23ACD: 75 2C                          -  jne Tutorial-i386.exe+23AFB
"Tutorial-i386.exe"+23ACF: 8B 83 68 04 00 00              -  mov eax,[ebx+00000468]
"Tutorial-i386.exe"+23AD5: B2 01                          -  mov dl,01
"Tutorial-i386.exe"+23AD7: 8B 8B 68 04 00 00              -  mov ecx,[ebx+00000468]
"Tutorial-i386.exe"+23ADD: 8B 09                          -  mov ecx,[ecx]
"Tutorial-i386.exe"+23ADF: FF 91 20 02 00 00              -  call dword ptr [ecx+00000220]
"Tutorial-i386.exe"+23AE5: 8B 83 78 04 00 00              -  mov eax,[ebx+00000478]
"Tutorial-i386.exe"+23AEB: B2 00                          -  mov dl,00
"Tutorial-i386.exe"+23AED: 8B 8B 78 04 00 00              -  mov ecx,[ebx+00000478]
"Tutorial-i386.exe"+23AF3: 8B 09                          -  mov ecx,[ecx]
}

 

 

7 Комментариев


Рекомендуемые комментарии

Актуально, если под code будет всегда оригинальный код в 10 байт и 10 байт будут другими на другой инструкции.

Я думаю, шаблонный генератор все сделает за нас. Помогает такие штуки не забывать и просто о них даже не думать.

  • Плюс 1
Ссылка на комментарий
newmem:
  mov [ebx+00000480],000003E8

code:
  readmem(INJECT,10)
  jmp return

 

У тебя получился дважды инструкция будет. Может знаешь может нет ( наверное знаешь )..

Вот так примерно можно:

Спойлер

[ENABLE]
aobscanmodule(readMemTest,Tutorial-i386.exe+23CC3,81xxxxxxxxxxxxxxxxxx75xx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxxxxxx00xx00xxxx89)
alloc(newmem,$1000,Tutorial-i386.exe+23CC3)
label(rm_code)
label(return)

newmem:
rm_code:
  readmem(readMemTest,10)
  jmp return

readMemTest:
  jmp newmem
  db 90 90 90 90 90
return:
registersymbol(readMemTest)
registersymbol(rm_code)

[DISABLE]
readMemTest:
  readmem(rm_code,10)
unregistersymbol(readMemTest)
unregistersymbol(rm_code)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Tutorial-i386.exe+23CC3

Tutorial-i386.exe+23CB1: C9                               - leave
Tutorial-i386.exe+23CB2: C3                               - ret
Tutorial-i386.exe+23CB3: 00 00                            - add [eax],al
Tutorial-i386.exe+23CB5: 00 00                            - add [eax],al
Tutorial-i386.exe+23CB7: 00 00                            - add [eax],al
Tutorial-i386.exe+23CB9: 00 00                            - add [eax],al
Tutorial-i386.exe+23CBB: 00 00                            - add [eax],al
Tutorial-i386.exe+23CBD: 00 00                            - add [eax],al
Tutorial-i386.exe+23CBF: 00 53 89                         - add [ebx-77],dl
Tutorial-i386.exe+23CC2: C3                               - ret
// ---------- INJECTING HERE -----------
Tutorial-i386.exe+23CC3: 81 BB 80040000 E8030000          - cmp [ebx+00000480],000003E8
// ---------- DONE INJECTING  ----------
Tutorial-i386.exe+23CCD: 75 2C                            - jne 00423CFB
Tutorial-i386.exe+23CCF: 8B 83 68040000                   - mov eax,[ebx+00000468]
Tutorial-i386.exe+23CD5: B2 01                            - mov dl,01
Tutorial-i386.exe+23CD7: 8B 8B 68040000                   - mov ecx,[ebx+00000468]
Tutorial-i386.exe+23CDD: 8B 09                            - mov ecx,[ecx]
Tutorial-i386.exe+23CDF: FF 91 20020000                   - call dword ptr [ecx+00000220]
Tutorial-i386.exe+23CE5: 8B 83 78040000                   - mov eax,[ebx+00000478]
Tutorial-i386.exe+23CEB: B2 00                            - mov dl,00
Tutorial-i386.exe+23CED: 8B 8B 78040000                   - mov ecx,[ebx+00000478]
Tutorial-i386.exe+23CF3: 8B 09                            - mov ecx,[ecx]
}

 

 

Изменено пользователем ReWanet
Ссылка на комментарий
15 минут назад, ReWanet сказал:

У тебя получился дважды инструкция будет. 

Каким образом?
Потесть у себя сперва, потом напишешь. :D

 

Ссылка на комментарий
17 минут назад, Garik66 сказал:

Каким образом?

Хехе я не заметил что там mov ну бывает :(

Изменено пользователем ReWanet
  • Смешно 1
Ссылка на комментарий

2. 

Спойлер

{ Game   : Game.exe
  Version: 
  Date   : 2018-02-08
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(Gold,Game.exe,8B XX 3B XX XX XX 89 XX 8B XX 8B XX XX XX XX XX)
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(Gold)

newmem:
  mov [eax],#50000

code:
  mov edi,[eax]
  cmp edi,ebx
  jle Gold+10                             // Если меняется адрес с патчем игры.
  jmp return

Gold:
  jmp newmem
  db 90
return:

[DISABLE]
Gold:
  db 8B 38 3B FB
  jle Gold+10                             // Если меняется адрес с патчем игры.

unregistersymbol(Gold)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Game.exe"+A7A76

"Game.exe"+A7A53: 33 C9                 -  xor ecx,ecx
"Game.exe"+A7A55: 33 D2                 -  xor edx,edx
"Game.exe"+A7A57: 53                    -  push ebx
"Game.exe"+A7A58: 57                    -  push edi
"Game.exe"+A7A59: 39 8E 34 4C 00 00     -  cmp [esi+00004C34],ecx
"Game.exe"+A7A5F: 7E 35                 -  jle TH2.exe+A7A96
"Game.exe"+A7A61: 8B 1D 9C 50 6F 01     -  mov ebx,[Game.exe+2F509C]
"Game.exe"+A7A67: 8D 86 D8 12 00 00     -  lea eax,[esi+000012D8]
"Game.exe"+A7A6D: 83 B8 44 FF FF FF 0B  -  cmp dword ptr [eax-000000BC],0B
"Game.exe"+A7A74: 75 12                 -  jne Game.exe+A7A88
// ---------- INJECTING HERE ----------
"Game.exe"+A7A76: 8B 38                 -  mov edi,[eax]
"Game.exe"+A7A78: 3B FB                 -  cmp edi,ebx
"Game.exe"+A7A7A: 7E 0A                 -  jle Game.exe+A7A86               // Если меняется адрес с патчем игры.
// ---------- DONE INJECTING  ----------
"Game.exe"+A7A7C: 89 18                 -  mov [eax],ebx
"Game.exe"+A7A7E: 8B FB                 -  mov edi,ebx
"Game.exe"+A7A80: 8B 1D 9C 50 6F 01     -  mov ebx,[Game.exe+2F509C]
"Game.exe"+A7A86: 03 CF                 -  add ecx,edi
"Game.exe"+A7A88: 42                    -  inc edx
"Game.exe"+A7A89: 05 74 01 00 00        -  add eax,00000174
"Game.exe"+A7A8E: 3B 96 34 4C 00 00     -  cmp edx,[esi+00004C34]
"Game.exe"+A7A94: 7C D7                 -  jl Game.exe+A7A6D
"Game.exe"+A7A96: 39 8E CC 01 00 00     -  cmp [esi+000001CC],ecx
"Game.exe"+A7A9C: 74 06                 -  je Game.exe+A7AA4
}

 

 

Ссылка на комментарий

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

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...

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

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