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

[ Cheat Engine ] Нужна помощь с АА вставкой


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

Скрытый текст

[ENABLE]

aobscan(INJECT,89 4A 38 8B 4D F0 89 0D * * * * 8B E5 5D C3 CC) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  add ecx,5 // нужно чтобы эта строка выпонялась если ecx > 1400
  mov [edx+38],ecx
  mov ecx,[ebp-10]
  jmp return

INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 89 4A 38 8B 4D F0

unregistersymbol(INJECT)
dealloc(newmem)

 

Проблема в проверке условия, в метке code. Помогите пожалуйста, кто дружит с ассемблером)

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

  • ReWanet изменил название на [ Cheat Engine ] Нужна помощь с АА вставкой
10 минут назад, Paul сказал:

Помогите пожалуйста, кто дружит с ассемблером)

Вот так:
 

Скрытый текст

[ENABLE]

aobscan(INJECT,89 4A 38 8B 4D F0 89 0D * * * * 8B E5 5D C3 CC) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(newcode)

newmem:
  cmp ecx,#1400 // Если ecx > 1400	( #1400 - означает десятичное если без решетки то будет считать HEX значение ).
  jl newcode	// то прыгаем на newcode
  jmp code		// Если не "ecx > 1400" то выполняется эта часть кода в данном случае прыжок в оригинальный код
newcode:
  add ecx,5		
code:
  mov [edx+38],ecx
  mov ecx,[ebp-10]
  jmp return

INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 89 4A 38 8B 4D F0

unregistersymbol(INJECT)
dealloc(newmem)

 

 

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

Спасибо большое за ответ!
partoftheworlD, я гуглил, но не разобрался с флагами. После cmp вроде как значение флага меняется и условие решается глядя на этот флаг. У меня были сомнения, что вернувшись с инъекционного кода в основной будет косяк из - за того, что флаг уже не с тем значением))

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

34 минуты назад, what228 сказал:

Вот так:

1. У тебя получается, немного другое условия прыжка, а не которое просил ТС, ecx < 1400

2. Зачем лишняя метка и лишний прыжок? (чтобы стало понятнее ТС?)

 

Скрипт:

Скрытый текст

[ENABLE]
aobscan(INJECT,89 4A 38 8B 4D F0 89 0D * * * * 8B E5 5D C3 CC) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(INJECT)

newmem:
  cmp ecx,#1400    // нужно чтобы эта строка выпонялась если ecx > 1400
  jbe code
  add ecx,5

code:
  mov [edx+38],ecx
  mov ecx,[ebp-10]
  jmp return

INJECT:
  jmp newmem
  db 90
return:

[DISABLE]
INJECT:
  db 89 4A 38 8B 4D F0

unregistersymbol(INJECT)
dealloc(newmem)

 

 

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

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

1. У тебя получается, немного другое условия прыжка, а не которое просил ТС ecx  < 1 400

Тс написал лишь ecx > 1400 а не ровно. "нужно чтобы эта строка выпонялась если ecx > 1400"

 

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

2. Зачем лишняя метка и лишний прыжок? (чтобы стало понятнее ТС?)

да.

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

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

Тс написал лишь ecx > 1400 а не ровно. "нужно чтобы эта строка выпонялась если ecx > 1400"

И я об этом ;) - ты поменял условие на противоположное.

 

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

Только что, Garik66 сказал:

И я об этом ;) - ты поменял условие

Разве? А.. вижу буковкой ошибся. Признаюсь ошибся только не расстреливайте :D 

 

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

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

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

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