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

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

Доброго времени суток ;). Ну и конечно же здравствуйте.

Зовут меня Александр, - можно просто Саня.

Вот уже 2 день мучаю данную игру в поисках взлома значений жизни "карт-войнов" в битве.

Со взломом очков движения, ресурсов, очков исследования проблем собственно не возникло.

Как только не искал - не нашел значения, пробовал через броню, но там для фильтра не нашел значений. Терпения не хватило да и посмотрел как это устроено у MrAntiFun.

Сделал все 1в1 но все равно - итог 1: Вылет.

Может я что и не так в скрипте написал? Но складывается такое ощущение что еще где то у него в коде что то еще есть <_<

Строго не судите) Начал осваивать Cheat Engine относительно недавно. Навыков программирования нет. Из Всего - только желание и любознательность.

Ну а теперь собственно по делу:

До и после инъекции:

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

// Thea: The awakening v.1.20.2516.0

156E03C6 - E8 A9619DFA           - call mono.mono_inst_name+1407
156E03CB - 83 C4 10              - add esp,10 { 16 }
156E03CE - 83 EC 0C              - sub esp,0C { 12 }
156E03D1 - 50                    - push eax
156E03D2 - E8 A109B8F0           - call 06260D78
156E03D7 - 6A 44                 - push 44 { 68 }
156E03D9 - 68 43010000           - push 00000143 { 323 }
156E03DE - E8 550BB8F0           - call 06260F38
156E03E3 - 6A 5B                 - push 5B { 91 }
156E03E5 - EB F2                 - jmp 156E03D9
156E03E7 - 68 8A000000           - push 0000008A { 138 }
156E03EC - EB EB                 - jmp 156E03D9
156E03EE - 68 AA000000           - push 000000AA { 170 }
156E03F3 - EB E4                 - jmp 156E03D9
156E03F5 - 68 C9000000           - push 000000C9 { 201 }
156E03FA - EB DD                 - jmp 156E03D9
156E03FC - 00 00                 - add [eax],al
156E03FE - 00 00                 - add [eax],al
156E0400 - 55                    - push ebp
156E0401 - 8B EC                 - mov ebp,esp
156E0403 - 83 EC 18              - sub esp,18 { 24 }
156E0406 - 8B 45 08              - mov eax,[ebp+08]
156E0409 - 8B 40 08              - mov eax,[eax+08]
156E040C - 83 EC 08              - sub esp,08 { 8 }
156E040F - 6A 01                 - push 01 { 1 }
156E0411 - 50                    - push eax
156E0412 - 39 00                 - cmp [eax],eax
156E0414 - E8 4FF0FFFF           - call 156DF468
156E0419 - 83 C4 10              - add esp,10 { 16 }
156E041C - 8B 40 0C              - mov eax,[eax+0C]
156E041F - 8B C8                 - mov ecx,eax
//////////////////////////////////////////Здесь будет инъекция////////////////////
156E0421 - 39 09                 - cmp [ecx],ecx
156E0423 - 8B 40 0C              - mov eax,[eax+0C]
156E0426 - 50                    - push eax
156E0427 - DB 04 24              - fild dword ptr [esp]
156E042A - D9 1C 24              - fstp dword ptr [esp]
156E042D - D9 04 24              - fld dword ptr [esp]
156E0430 - 83 C4 04              - add esp,04 { 4 }
156E0433 - D9E8                  - fld1 
156E0435 - 8B 45 08              - mov eax,[ebp+08]
156E0438 - D9 40 20              - fld dword ptr [eax+20]
156E043B - DEE9                  - fsubp st(1),st(0)
156E043D - DEC9                  - fmulp st(1),st(0)
156E043F - D9 5D F4              - fstp dword ptr [ebp-0C]
156E0442 - D9 45 F4              - fld dword ptr [ebp-0C]
156E0445 - D9FC                  - frndint 
156E0447 - DD 5D F8              - fstp qword ptr [ebp-08]
156E044A - F2 0F10 45 F8         - movsd xmm0,[ebp-08]
156E044F - F2 0F2C C0            - cvttsd2si eax,xmm0
156E0453 - C9                    - leave 
156E0454 - C3                    - ret 
156E0455 - 00 00                 - add [eax],al
156E0457 - 00 55 8B              - add [ebp-75],dl

// После Инъекции
156E03C6 - E8 A9619DFA           - call mono.mono_inst_name+1407
156E03CB - 83 C4 10              - add esp,10 { 16 }
156E03CE - 83 EC 0C              - sub esp,0C { 12 }
156E03D1 - 50                    - push eax
156E03D2 - E8 A109B8F0           - call 06260D78
156E03D7 - 6A 44                 - push 44 { 68 }
156E03D9 - 68 43010000           - push 00000143 { 323 }
156E03DE - E8 550BB8F0           - call 06260F38
156E03E3 - 6A 5B                 - push 5B { 91 }
156E03E5 - EB F2                 - jmp 156E03D9
156E03E7 - 68 8A000000           - push 0000008A { 138 }
156E03EC - EB EB                 - jmp 156E03D9
156E03EE - 68 AA000000           - push 000000AA { 170 }
156E03F3 - EB E4                 - jmp 156E03D9
156E03F5 - 68 C9000000           - push 000000C9 { 201 }
156E03FA - EB DD                 - jmp 156E03D9
156E03FC - 00 00                 - add [eax],al
156E03FE - 00 00                 - add [eax],al
156E0400 - 55                    - push ebp
156E0401 - 8B EC                 - mov ebp,esp
156E0403 - 83 EC 18              - sub esp,18 { 24 }
156E0406 - 8B 45 08              - mov eax,[ebp+08]
156E0409 - 8B 40 08              - mov eax,[eax+08]
156E040C - 83 EC 08              - sub esp,08 { 8 }
156E040F - 6A 01                 - push 01 { 1 }
156E0411 - 50                    - push eax
156E0412 - 39 00                 - cmp [eax],eax
156E0414 - E8 4FF0FFFF           - call 156DF468
156E0419 - 83 C4 10              - add esp,10 { 16 }
156E041C - 8B 40 0C              - mov eax,[eax+0C]
156E041F - 8B C8                 - mov ecx,eax
156E0421 - E9 DAFB35EB           - jmp 00A40000
///////////////////////////////////////////////////////////////////////////////////
//00A40000 - 56                    - push esi                                    //
//00A40001 - 8B 75 08              - mov esi,[ebp+08]                            //
//00A40004 - 80 7E 29 01           - cmp byte ptr [esi+29],01 { 1 }              //
//00A40008 - 0F85 07000000         - jne 00A40015                                //
//00A4000E - C7 40 0C 0F270000     - mov [eax+0C],0000270F { 9999 }              //
//00A40015 - 5E                    - pop esi                                     //
//00A40016 - 39 09                 - cmp [ecx],ecx                               //
//00A40018 - 8B 40 0C              - mov eax,[eax+0C]                            //
//00A4001B - E9 A627FD55           - jmp 156E0426                                //
///////////////////////////////////////////////////////////////////////////////////
156E0426 - 50                    - push eax
156E0427 - DB 04 24              - fild dword ptr [esp]
156E042A - D9 1C 24              - fstp dword ptr [esp]
156E042D - D9 04 24              - fld dword ptr [esp]
156E0430 - 83 C4 04              - add esp,04 { 4 }
156E0433 - D9E8                  - fld1 
156E0435 - 8B 45 08              - mov eax,[ebp+08]
156E0438 - D9 40 20              - fld dword ptr [eax+20]
156E043B - DEE9                  - fsubp st(1),st(0)
156E043D - DEC9                  - fmulp st(1),st(0)
156E043F - D9 5D F4              - fstp dword ptr [ebp-0C]
156E0442 - D9 45 F4              - fld dword ptr [ebp-0C]
156E0445 - D9FC                  - frndint 
156E0447 - DD 5D F8              - fstp qword ptr [ebp-08]
156E044A - F2 0F10 45 F8         - movsd xmm0,[ebp-08]
156E044F - F2 0F2C C0            - cvttsd2si eax,xmm0
156E0453 - C9                    - leave 
156E0454 - C3                    - ret 
156E0455 - 00 00                 - add [eax],al
156E0457 - 00 55 8B              - add [ebp-75],dl

 

 

Ну и мой кривой скрипт :rolleyes:

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

// inf.Card Health

{ Game   : Thea.exe
  Version: 
  Date   : 2017-06-12
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(INJECT,8B C8 39 09 8B 40 0C 50 DB 04 24 D9 1C 24 D9 04 24 83 C4 04 D9 E8) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  jmp 00720000
  push esi
  mov esi,[ebp+08]
  cmp byte ptr [esi+29],01
  jne short 00720016
  mov [eax+0C],0000270F
  pop esi
  cmp [ecx],ecx
  mov eax,[eax+0C]
  jmp return

code:
//

INJECT+02:
  jmp newmem

return:
registersymbol(INJECT)


[DISABLE]

INJECT+02:
  db 8B C8 39 09 8B 40 0C

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 0EBFDDFF

""+EBFDDE3: 83 EC 18              -  sub esp,18
""+EBFDDE6: 8B 45 08              -  mov eax,[ebp+08]
""+EBFDDE9: 8B 40 08              -  mov eax,[eax+08]
""+EBFDDEC: 83 EC 08              -  sub esp,08
""+EBFDDEF: 6A 01                 -  push 01
""+EBFDDF1: 50                    -  push eax
""+EBFDDF2: 39 00                 -  cmp [eax],eax
""+EBFDDF4: E8 4F F0 FF FF        -  call 0EBFCE48
""+EBFDDF9: 83 C4 10              -  add esp,10
""+EBFDDFC: 8B 40 0C              -  mov eax,[eax+0C]
""+EBFDDFF: 8B C8                 -  mov ecx,eax
// ---------- INJECTING HERE ----------
""+EBFDE01: 39 09                 -  cmp [ecx],ecx
// ---------- DONE INJECTING  ----------
""+EBFDE03: 8B 40 0C              -  mov eax,[eax+0C]
""+EBFDE06: 50                    -  push eax
""+EBFDE07: DB 04 24              -  fild dword ptr [esp]
""+EBFDE0A: D9 1C 24              -  fstp dword ptr [esp]
""+EBFDE0D: D9 04 24              -  fld dword ptr [esp]
""+EBFDE10: 83 C4 04              -  add esp,04
""+EBFDE13: D9 E8                 -  fld1 
""+EBFDE15: 8B 45 08              -  mov eax,[ebp+08]
""+EBFDE18: D9 40 20              -  fld dword ptr [eax+20]
""+EBFDE1B: DE E9                 -  fsubp st(1),st(0)
""+EBFDE1D: DE C9                 -  fmulp st(1),st(0)
}

 

 

По сути сравнивал Инструкции MrAntifan и свою. Инструкции прописываются 1в1. Но чего то не хватает) Наверное Ума? :lol:

Буду рад любой помощи.

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

Проблему вроде удалось решить. Code caves поменял. При 1 сканировании code caves показало пустые адреса. Потом же оказались занятыми:ph34r:.

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

{ Game   : Thea.exe
  Version: 
  Date   : 2017-06-12
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(INJECT,8B C8 39 09 8B 40 0C 50 DB 04 24 D9 1C 24 D9 04 24 83 C4 04 D9 E8) // should be unique
alloc(newmem,$1000)

label(code)
label(return)


0E41F300:
  push esi
  mov esi,[ebp+08]
  cmp byte ptr [esi+29],01
  jne short 0E41F316
  mov [eax+0C],0000270F
  pop esi
  cmp [ecx],ecx
  mov eax,[eax+0C]
  jmp return

code:
//

INJECT+02:
  jmp 0E41F300

return:
registersymbol(INJECT)


[DISABLE]

INJECT+02:
  db 8B C8 39 09 8B 40 0C

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 0EBFDDFF

""+EBFDDE3: 83 EC 18              -  sub esp,18
""+EBFDDE6: 8B 45 08              -  mov eax,[ebp+08]
""+EBFDDE9: 8B 40 08              -  mov eax,[eax+08]
""+EBFDDEC: 83 EC 08              -  sub esp,08
""+EBFDDEF: 6A 01                 -  push 01
""+EBFDDF1: 50                    -  push eax
""+EBFDDF2: 39 00                 -  cmp [eax],eax
""+EBFDDF4: E8 4F F0 FF FF        -  call 0EBFCE48
""+EBFDDF9: 83 C4 10              -  add esp,10
""+EBFDDFC: 8B 40 0C              -  mov eax,[eax+0C]
""+EBFDDFF: 8B C8                 -  mov ecx,eax
// ---------- INJECTING HERE ----------
""+EBFDE01: 39 09                 -  cmp [ecx],ecx
// ---------- DONE INJECTING  ----------
""+EBFDE03: 8B 40 0C              -  mov eax,[eax+0C]
""+EBFDE06: 50                    -  push eax
""+EBFDE07: DB 04 24              -  fild dword ptr [esp]
""+EBFDE0A: D9 1C 24              -  fstp dword ptr [esp]
""+EBFDE0D: D9 04 24              -  fld dword ptr [esp]
""+EBFDE10: 83 C4 04              -  add esp,04
""+EBFDE13: D9 E8                 -  fld1 
""+EBFDE15: 8B 45 08              -  mov eax,[ebp+08]
""+EBFDE18: D9 40 20              -  fld dword ptr [eax+20]
""+EBFDE1B: DE E9                 -  fsubp st(1),st(0)
""+EBFDE1D: DE C9                 -  fmulp st(1),st(0)
}

 

 

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

Лучше не лазь больше в чужих трейнерах - пробуй сам.

А вот правильный скрипт:

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

{ Game   : Thea.exe
  Version:
  Date   : 2017-06-12
  Author : MrAntiFun

  This script does blah blah blah
}

[ENABLE]
aobscan(INJECT,8B C8 39 09 8B 40 0C 50 DB 04 24 D9 1C 24 D9 04 24 83 C4 04 D9 E8) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(INJECT)

newmem:
  push esi
  mov esi,[ebp+08]
  cmp byte ptr [esi+29],01
  pop esi
  jne code
  mov [eax+0C],0000270F

code:
  cmp [ecx],ecx
  mov eax,[eax+0C]
  jmp return

INJECT+02:
  jmp newmem
return:

[DISABLE]
INJECT+02:
  db 8B C8 39 09 8B 40 0C

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 0EBFDDFF

""+EBFDDE3: 83 EC 18              -  sub esp,18
""+EBFDDE6: 8B 45 08              -  mov eax,[ebp+08]
""+EBFDDE9: 8B 40 08              -  mov eax,[eax+08]
""+EBFDDEC: 83 EC 08              -  sub esp,08
""+EBFDDEF: 6A 01                 -  push 01
""+EBFDDF1: 50                    -  push eax
""+EBFDDF2: 39 00                 -  cmp [eax],eax
""+EBFDDF4: E8 4F F0 FF FF        -  call 0EBFCE48
""+EBFDDF9: 83 C4 10              -  add esp,10
""+EBFDDFC: 8B 40 0C              -  mov eax,[eax+0C]
""+EBFDDFF: 8B C8                 -  mov ecx,eax
// ---------- INJECTING HERE ----------
""+EBFDE01: 39 09                 -  cmp [ecx],ecx
// ---------- DONE INJECTING  ----------
""+EBFDE03: 8B 40 0C              -  mov eax,[eax+0C]
""+EBFDE06: 50                    -  push eax
""+EBFDE07: DB 04 24              -  fild dword ptr [esp]
""+EBFDE0A: D9 1C 24              -  fstp dword ptr [esp]
""+EBFDE0D: D9 04 24              -  fld dword ptr [esp]
""+EBFDE10: 83 C4 04              -  add esp,04
""+EBFDE13: D9 E8                 -  fld1
""+EBFDE15: 8B 45 08              -  mov eax,[ebp+08]
""+EBFDE18: D9 40 20              -  fld dword ptr [eax+20]
""+EBFDE1B: DE E9                 -  fsubp st(1),st(0)
""+EBFDE1D: DE C9                 -  fmulp st(1),st(0)
}

 

 

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

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

Лучше не лазь больше в чужих трейнерах - пробуй сам.

Согласен. Я если и смотрел на чужие трейнеры ( 1 раз лишь когда начинал ) то лишь на то как реализована функция а не сам код весь вытягивал :D
 

Цитата

Ну и мой кривой скрипт :rolleyes:

Получается что не твой.

Цитата

jmp 00720000

jne short 00720016

Тебя это не смущало?)

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

Garik66 Спасибо. Совет учту. 

Я стараюсь учится по уже сделанным скриптам. Пытаясь понять и разобраться. Анализирую. Что не ясно читаю в интернете. 

Начинаю вечерками с старых игр. Ищу, пробую, щупаю.

Чужой труд конечно брать нехорошо тут полностью с тобой согласен.

С Уважением Александр.

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

 

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

Согласен. Я если и смотрел на чужие трейнеры ( 1 раз лишь когда начинал ) то лишь на то как реализована функция а не сам код весь вытягивал :D
 

Получается что не твой.

Тебя это не смущало?)

Не "это" как раз я писал.:rolleyes:

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

1 час назад, Strajder сказал:

Я стараюсь учится по уже сделанным скриптам.

Бредово ) Если изначально не вникаешь то так лишь запутаешь или усложнишь путь изучения как я себе. Лучше сразу почитать про ASM и потом смотреть и изучать код игры. имхо.

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

2 часа назад, Strajder сказал:

Я стараюсь учится по уже сделанным скриптам.

Советую посмотреть видео-уроки @Xipho, @keng ну и мои тоже можно посмотреть. Многое станет более понятным. 

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

Прошу вас проверить остальные скрипты. Искал и делал сам. С удовольствием выслушаю все комментарии.

Скрипт на Ходы:

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

{ Game   : Thea.exe
  Version: 
  Date   : 2017-06-09
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(INJECT,8B 43 54 2B C1) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  cmp [ebx+54],#5
  je code
  mov [ebx+54],#5

code:
  mov eax,[ebx+54]
  sub eax,ecx
  jmp return

INJECT:
  jmp newmem
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 8B 43 54 2B C1

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 0765E0BD

0765E09E: 8B 48 10           -  mov ecx,[eax+10]
0765E0A1: 33 C0              -  xor eax,eax
0765E0A3: 81 F9 80 B7 A9 11  -  cmp ecx,11A9B780
0765E0A9: 0F 45 D8           -  cmovne ebx,eax
0765E0AC: 8B 45 08           -  mov eax,[ebp+08]
0765E0AF: 8B 48 08           -  mov ecx,[eax+08]
0765E0B2: 8B 49 08           -  mov ecx,[ecx+08]
0765E0B5: 8B 40 0C           -  mov eax,[eax+0C]
0765E0B8: 0F AF C8           -  imul ecx,eax
0765E0BB: 39 1B              -  cmp [ebx],ebx
// ---------- INJECTING HERE ----------
0765E0BD: 8B 43 54           -  mov eax,[ebx+54]
0765E0C0: 2B C1              -  sub eax,ecx
// ---------- DONE INJECTING  ----------
0765E0C2: 89 43 54           -  mov [ebx+54],eax
0765E0C5: 8D 65 F8           -  lea esp,[ebp-08]
0765E0C8: 5F                 -  pop edi
0765E0C9: 5B                 -  pop ebx
0765E0CA: C9                 -  leave 
0765E0CB: C3                 -  ret 
0765E0CC: 00 00              -  add [eax],al
0765E0CE: 00 00              -  add [eax],al
0765E0D0: 55                 -  push ebp
0765E0D1: 8B EC              -  mov ebp,esp
}

 

Скрипт на 100 ресурсов, обнуление веса носимого персонажем, обнуление веса при одевании одежды:

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

{ Game   : Thea.exe
  Version: 
  Date   : 2017-06-11
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(INJECT,8B 40 5C 8B 4E 0C) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  mov [eax+5C],#0
  mov [esi+0C],#100
code:
  mov eax,[eax+5C]
  mov ecx,[esi+0C]
  jmp return

INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 8B 40 5C 8B 4E 0C

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 30E00D0C

""+30E00CEC: 8B 45 A4              -  mov eax,[ebp-5C]
""+30E00CEF: 8B 00                 -  mov eax,[eax]
""+30E00CF1: 8B 00                 -  mov eax,[eax]
""+30E00CF3: 8B 40 08              -  mov eax,[eax+08]
""+30E00CF6: 8B 40 10              -  mov eax,[eax+10]
""+30E00CF9: 3D 00 1D C5 10        -  cmp eax,10C51D00
""+30E00CFE: 74 09                 -  je 30E00D09
""+30E00D00: C7 45 A0 00 00 00 00  -  mov [ebp-60],00000000
""+30E00D07: EB 00                 -  jmp 30E00D09
""+30E00D09: 8B 45 A0              -  mov eax,[ebp-60]
// ---------- INJECTING HERE ----------
""+30E00D0C: 8B 40 5C              -  mov eax,[eax+5C]
""+30E00D0F: 8B 4E 0C              -  mov ecx,[esi+0C]
// ---------- DONE INJECTING  ----------
""+30E00D12: 0F AF C1              -  imul eax,ecx
""+30E00D15: 50                    -  push eax
""+30E00D16: DB 04 24              -  fild dword ptr [esp]
""+30E00D19: D9 1C 24              -  fstp dword ptr [esp]
""+30E00D1C: D9 04 24              -  fld dword ptr [esp]
""+30E00D1F: 83 C4 04              -  add esp,04
""+30E00D22: DD 45 A8              -  fld qword ptr [ebp-58]
""+30E00D25: D9 C9                 -  fxch st(1)
""+30E00D27: DE C1                 -  faddp 
""+30E00D29: D9 5D B0              -  fstp dword ptr [ebp-50]
}

 

Скрипт на броню:

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

{ Game   : Thea.exe
  Version: 
  Date   : 2017-06-11
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(INJECT,8B 46 30 85 C0 0F 85 92) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  cmp byte ptr [esi+29],01
  je @F
  jmp code

@@:
mov [esi+30],#99999

code:
  mov eax,[esi+30]
  test eax,eax
  jmp return

INJECT:
  jmp newmem
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 8B 46 30 85 C0

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 2182FBAE

""+2182FB8A: 39 36              -  cmp [esi],esi
""+2182FB8C: E8 27 11 00 00     -  call 21830CB8
""+2182FB91: 83 C4 10           -  add esp,10
""+2182FB94: 83 EC 08           -  sub esp,08
""+2182FB97: 50                 -  push eax
""+2182FB98: FF B5 D4 FE FF FF  -  push [ebp-0000012C]
""+2182FB9E: 8B 85 D4 FE FF FF  -  mov eax,[ebp-0000012C]
""+2182FBA4: 39 00              -  cmp [eax],eax
""+2182FBA6: E8 75 4A 2C FD     -  call 1EAF4620
""+2182FBAB: 83 C4 10           -  add esp,10
// ---------- INJECTING HERE ----------
""+2182FBAE: 8B 46 30           -  mov eax,[esi+30]
""+2182FBB1: 85 C0              -  test eax,eax
// ---------- DONE INJECTING  ----------
""+2182FBB3: 0F 85 92 00 00 00  -  jne 2182FC4B
""+2182FBB9: 83 EC 0C           -  sub esp,0C
""+2182FBBC: 56                 -  push esi
""+2182FBBD: 39 36              -  cmp [esi],esi
""+2182FBBF: E8 1C DB FF FF     -  call 2182D6E0
""+2182FBC4: 83 C4 10           -  add esp,10
""+2182FBC7: 89 85 EC FD FF FF  -  mov [ebp-00000214],eax
""+2182FBCD: 83 EC 0C           -  sub esp,0C
""+2182FBD0: 56                 -  push esi
""+2182FBD1: 39 36              -  cmp [esi],esi
}

 

Скрипт на урон:

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

{ Game   : Thea.exe
  Version: 
  Date   : 2017-06-13
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(INJECT,8B 4E 2C 03 C1 89 85 1C) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  cmp byte ptr [esi+29],01
  jne code
  mov [esi+2C],#100
code:
  mov ecx,[esi+2C]
  add eax,ecx
  jmp return

INJECT:
  jmp newmem
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 8B 4E 2C 03 C1

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 06F627D5

""+6F627B1: FF B5 E0 FE FF FF  -  push [ebp-00000120]
""+6F627B7: 8B 85 E0 FE FF FF  -  mov eax,[ebp-00000120]
""+6F627BD: 39 00              -  cmp [eax],eax
""+6F627BF: E8 1C 1C 95 0E     -  call 158B43E0
""+6F627C4: 83 C4 10           -  add esp,10
""+6F627C7: 83 EC 0C           -  sub esp,0C
""+6F627CA: 56                 -  push esi
""+6F627CB: 39 36              -  cmp [esi],esi
""+6F627CD: E8 DE 15 00 00     -  call 06F63DB0
""+6F627D2: 83 C4 10           -  add esp,10
// ---------- INJECTING HERE ----------
""+6F627D5: 8B 4E 2C           -  mov ecx,[esi+2C]
""+6F627D8: 03 C1              -  add eax,ecx
// ---------- DONE INJECTING  ----------
""+6F627DA: 89 85 1C FE FF FF  -  mov [ebp-000001E4],eax
""+6F627E0: 8D 85 1C FE FF FF  -  lea eax,[ebp-000001E4]
""+6F627E6: 83 EC 0C           -  sub esp,0C
""+6F627E9: 50                 -  push eax
""+6F627EA: E8 E9 74 8E FF     -  call 06849CD8
""+6F627EF: 83 C4 10           -  add esp,10
""+6F627F2: 83 EC 08           -  sub esp,08
""+6F627F5: 50                 -  push eax
""+6F627F6: FF B5 DC FE FF FF  -  push [ebp-00000124]
""+6F627FC: 8B 85 DC FE FF FF  -  mov eax,[ebp-00000124]
}

 

Скрипт на очки улучшения:

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

{ Game   : Thea.exe
  Version: 
  Date   : 2017-06-11
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(INJECT,8B 40 44 89 45 94) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  mov [eax+44],100
code:
  mov eax,[eax+44]
  mov [ebp-6C],eax
  jmp return

INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 8B 40 44 89 45 94

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 34D07AFE

""+34D07ACD: 56                    -  push esi
""+34D07ACE: 83 EC 7C              -  sub esp,7C
""+34D07AD1: C7 45 A0 00 00 00 00  -  mov [ebp-60],00000000
""+34D07AD8: C7 45 A4 00 00 00 00  -  mov [ebp-5C],00000000
""+34D07ADF: C7 45 A8 00 00 00 00  -  mov [ebp-58],00000000
""+34D07AE6: C7 45 AC 00 00 00 00  -  mov [ebp-54],00000000
""+34D07AED: C7 45 B0 00 00 00 00  -  mov [ebp-50],00000000
""+34D07AF4: D9 EE                 -  fldz 
""+34D07AF6: D9 5D E4              -  fstp dword ptr [ebp-1C]
""+34D07AF9: E8 BA C7 20 E9        -  call 1DF142B8
// ---------- INJECTING HERE ----------
""+34D07AFE: 8B 40 44              -  mov eax,[eax+44]
""+34D07B01: 89 45 94              -  mov [ebp-6C],eax
// ---------- DONE INJECTING  ----------
""+34D07B04: 83 EC 0C              -  sub esp,0C
""+34D07B07: 68 90 34 21 1B        -  push 1B213490
""+34D07B0C: E8 97 90 86 D1        -  call 06570BA8
""+34D07B11: 83 C4 10              -  add esp,10
""+34D07B14: 8B F8                 -  mov edi,eax
""+34D07B16: 8B 45 08              -  mov eax,[ebp+08]
""+34D07B19: 8B 40 24              -  mov eax,[eax+24]
""+34D07B1C: 8D 4D A0              -  lea ecx,[ebp-60]
""+34D07B1F: 83 EC 08              -  sub esp,08
""+34D07B22: 50                    -  push eax
}

 

 

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

33 минуты назад, Strajder сказал:

Прошу вас проверить остальные скрипты.

У тебя во всех скриптах используется единственная метка для аобскана, т.е активировав скрипты, ты их не сможешь выключить.

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

38 минут назад, Strajder сказал:

С удовольствием выслушаю все комментарии.

Не плохо.

1 скрипт можно просто занопить:

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

{ Game   : Thea.exe
  Version:
  Date   : 2017-06-09
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]
aobscan(INJECT,2B C1 89 43 54) // should be unique
registersymbol(INJECT)

INJECT:
  db 90 90

[DISABLE]
INJECT:
  db 2B C1

unregistersymbol(INJECT)


{
// ORIGINAL CODE - INJECTION POINT: 0765E0BD

0765E09E: 8B 48 10           -  mov ecx,[eax+10]
0765E0A1: 33 C0              -  xor eax,eax
0765E0A3: 81 F9 80 B7 A9 11  -  cmp ecx,11A9B780
0765E0A9: 0F 45 D8           -  cmovne ebx,eax
0765E0AC: 8B 45 08           -  mov eax,[ebp+08]
0765E0AF: 8B 48 08           -  mov ecx,[eax+08]
0765E0B2: 8B 49 08           -  mov ecx,[ecx+08]
0765E0B5: 8B 40 0C           -  mov eax,[eax+0C]
0765E0B8: 0F AF C8           -  imul ecx,eax
0765E0BB: 39 1B              -  cmp [ebx],ebx
// ---------- INJECTING HERE ----------
0765E0BD: 8B 43 54           -  mov eax,[ebx+54]
0765E0C0: 2B C1              -  sub eax,ecx
// ---------- DONE INJECTING  ----------
0765E0C2: 89 43 54           -  mov [ebx+54],eax
0765E0C5: 8D 65 F8           -  lea esp,[ebp-08]
0765E0C8: 5F                 -  pop edi
0765E0C9: 5B                 -  pop ebx
0765E0CA: C9                 -  leave
0765E0CB: C3                 -  ret
0765E0CC: 00 00              -  add [eax],al
0765E0CE: 00 00              -  add [eax],al
0765E0D0: 55                 -  push ebp
0765E0D1: 8B EC              -  mov ebp,esp
}

 

3 скрипт короче записать так:

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

{ Game   : Thea.exe
  Version: 
  Date   : 2017-06-11
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(INJECT,8B 46 30 85 C0 0F 85 92) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  cmp byte ptr [esi+29],01
  jne code
  mov [esi+30],#99999

code:
  mov eax,[esi+30]
  test eax,eax
  jmp return

INJECT:
  jmp newmem
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 8B 46 30 85 C0

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 2182FBAE

""+2182FB8A: 39 36              -  cmp [esi],esi
""+2182FB8C: E8 27 11 00 00     -  call 21830CB8
""+2182FB91: 83 C4 10           -  add esp,10
""+2182FB94: 83 EC 08           -  sub esp,08
""+2182FB97: 50                 -  push eax
""+2182FB98: FF B5 D4 FE FF FF  -  push [ebp-0000012C]
""+2182FB9E: 8B 85 D4 FE FF FF  -  mov eax,[ebp-0000012C]
""+2182FBA4: 39 00              -  cmp [eax],eax
""+2182FBA6: E8 75 4A 2C FD     -  call 1EAF4620
""+2182FBAB: 83 C4 10           -  add esp,10
// ---------- INJECTING HERE ----------
""+2182FBAE: 8B 46 30           -  mov eax,[esi+30]
""+2182FBB1: 85 C0              -  test eax,eax
// ---------- DONE INJECTING  ----------
""+2182FBB3: 0F 85 92 00 00 00  -  jne 2182FC4B
""+2182FBB9: 83 EC 0C           -  sub esp,0C
""+2182FBBC: 56                 -  push esi
""+2182FBBD: 39 36              -  cmp [esi],esi
""+2182FBBF: E8 1C DB FF FF     -  call 2182D6E0
""+2182FBC4: 83 C4 10           -  add esp,10
""+2182FBC7: 89 85 EC FD FF FF  -  mov [ebp-00000214],eax
""+2182FBCD: 83 EC 0C           -  sub esp,0C
""+2182FBD0: 56                 -  push esi
""+2182FBD1: 39 36              -  cmp [esi],esi
}

 

ну и общая ошибка давай разные названия меткам. а то у тебя везде  INJECT, в результате деактивируется только один из пяти скриптов.

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

Пробуя ломать количество выставляемых карт за 1 ход: столкнулся с цепочкой проверки значения.

Попыткой задушить первый DEC eax - nop 

срабатывает но до второй проверки

Выход занопить оба DEC eax.

Или же как то можно лучше реализовать?

По проверке через AOB:

1)48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8 AC

2)48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8 E7

Всего по сигнатуре 48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8 находит 2 адреса в памяти. (Которые и участвуют)

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

0777B3E6 - FF 75 F0              - push [ebp-10]
0777B3E9 - 57                    - push edi
0777B3EA - FF 75 0C              - push [ebp+0C]
0777B3ED - 50                    - push eax
0777B3EE - 39 00                 - cmp [eax],eax
0777B3F0 - E8 23040000           - call 0777B818
0777B3F5 - 83 C4 10              - add esp,10 { 16 }
0777B3F8 - 85 C0                 - test eax,eax
0777B3FA - 74 2F                 - je 0777B42B
0777B3FC - 8B 43 18              - mov eax,[ebx+18]
/////////////////////////////////////////////////////////////////////////////////////////////
0777B3FF - 48                    - dec eax
/////////////////////////////////////////////////////////////////////////////////////////////
0777B400 - 89 43 18              - mov [ebx+18],eax
0777B403 - 8B 05 30B2A006        - mov eax,[06A0B230] { [1F536F00] }
0777B409 - 83 EC 0C              - sub esp,0C { 12 }
0777B40C - 50                    - push eax
0777B40D - 39 00                 - cmp [eax],eax
0777B40F - E8 AC48FFFF           - call 0776FCC0
0777B414 - 83 C4 10              - add esp,10 { 16 }
0777B417 - 8B 05 30B2A006        - mov eax,[06A0B230] { [1F536F00] }
0777B41D - 83 EC 0C              - sub esp,0C { 12 }
0777B420 - 50                    - push eax
0777B421 - 39 00                 - cmp [eax],eax
0777B423 - E8 58070000           - call 0777BB80
0777B428 - 83 C4 10              - add esp,10 { 16 }
0777B42B - 89 7D DC              - mov [ebp-24],edi
0777B42E - 89 7D E0              - mov [ebp-20],edi
0777B431 - 85 FF                 - test edi,edi
0777B433 - 74 1D                 - je 0777B452
0777B435 - 8B 45 DC              - mov eax,[ebp-24]
0777B438 - 8B 00                 - mov eax,[eax]
0777B43A - 8B 00                 - mov eax,[eax]
0777B43C - 8B 40 08              - mov eax,[eax+08]
0777B43F - 8B 40 08              - mov eax,[eax+08]
0777B442 - 33 C9                 - xor ecx,ecx
0777B444 - 3D 28BD001C           - cmp eax,1C00BD28 { [1C00BD28] }
0777B449 - 8B 45 E0              - mov eax,[ebp-20]
0777B44C - 0F45 C1               - cmovne eax,ecx
0777B44F - 89 45 E0              - mov [ebp-20],eax
0777B452 - 8B 45 E0              - mov eax,[ebp-20]
0777B455 - 89 45 E8              - mov [ebp-18],eax
0777B458 - 83 7D E0 00           - cmp dword ptr [ebp-20],00 { 0 }
0777B45C - 74 3E                 - je 0777B49C
0777B45E - 8B 45 E8              - mov eax,[ebp-18]
0777B461 - 8B 48 08              - mov ecx,[eax+08]
0777B464 - 89 4D E4              - mov [ebp-1C],ecx
0777B467 - 8B 05 30B2A006        - mov eax,[06A0B230] { [1F536F00] }
0777B46D - 51                    - push ecx
0777B46E - 57                    - push edi
0777B46F - FF 75 0C              - push [ebp+0C]
0777B472 - 50                    - push eax
0777B473 - 39 00                 - cmp [eax],eax
0777B475 - E8 AEAF0000           - call 07786428
0777B47A - 83 C4 10              - add esp,10 { 16 }
0777B47D - 85 C0                 - test eax,eax
0777B47F - 74 1B                 - je 0777B49C
0777B481 - 8B 43 18              - mov eax,[ebx+18]
/////////////////////////////////////////////////////////////////////////////////////////////
0777B484 - 48                    - dec eax
/////////////////////////////////////////////////////////////////////////////////////////////
0777B485 - 89 43 18              - mov [ebx+18],eax
0777B488 - 8B 05 30B2A006        - mov eax,[06A0B230] { [1F536F00] }
0777B48E - 83 EC 0C              - sub esp,0C { 12 }
0777B491 - 50                    - push eax
0777B492 - 39 00                 - cmp [eax],eax
0777B494 - E8 E7060000           - call 0777BB80
0777B499 - 83 C4 10              - add esp,10 { 16 }
0777B49C - 8B 43 18              - mov eax,[ebx+18]
0777B49F - 85 C0                 - test eax,eax

 

 

Правильным ли будет решение занопить 2 Dec eax по их общей сигнатуре 48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8

через такой скрипт? Или же есть другое решение?

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

{ Game   : Thea.exe
  Version: 
  Date   : 2017-06-13
  Author : ALEXSP

  This script does blah blah blah
}

[ENABLE]

aobscan(IN,48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8) // should be unique
registersymbol(IN)

IN:
  db 90

[DISABLE]
IN:
  db 48

unregistersymbol(IN)

{
// ORIGINAL CODE - INJECTION POINT: 0777B484

""+777B46D: 51                 -  push ecx
""+777B46E: 57                 -  push edi
""+777B46F: FF 75 0C           -  push [ebp+0C]
""+777B472: 50                 -  push eax
""+777B473: 39 00              -  cmp [eax],eax
""+777B475: E8 AE AF 00 00     -  call 07786428
""+777B47A: 83 C4 10           -  add esp,10
""+777B47D: 85 C0              -  test eax,eax
""+777B47F: 74 1B              -  je 0777B49C
""+777B481: 8B 43 18           -  mov eax,[ebx+18]
// ---------- INJECTING HERE ----------
""+777B484: 48                 -  dec eax
""+777B485: 89 43 18           -  mov [ebx+18],eax
""+777B488: 8B 05 30 B2 A0 06  -  mov eax,[06A0B230]
// ---------- DONE INJECTING  ----------
""+777B48E: 83 EC 0C           -  sub esp,0C
""+777B491: 50                 -  push eax
""+777B492: 39 00              -  cmp [eax],eax
""+777B494: E8 E7 06 00 00     -  call 0777BB80
""+777B499: 83 C4 10           -  add esp,10
""+777B49C: 8B 43 18           -  mov eax,[ebx+18]
""+777B49F: 85 C0              -  test eax,eax
""+777B4A1: 0F 85 43 00 00 00  -  jne 0777B4EA
""+777B4A7: 83 EC 08           -  sub esp,08
""+777B4AA: 6A 00              -  push 00
}

 

 

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

0777B3F8 - 85 C0                 - test eax,eax

тут у тебя количество карт с 0 сравниваются, думаю это то место которое решит все твои проблемы.

0777B431 - 85 FF                 - test edi,edi

В edi надо посмотреть что хранится и изменить под себя.

А нопить, дело не благородное, это может вызывать краши в непредвиденных обстоятельствах, пусть игра сама решает как будет работать код, а значения ты можешь менять не нарушая ход кода.

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

10 минут назад, Strajder сказал:

Или же есть другое решение?

Оба дека занопь:

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

[ENABLE]
aobscan(INJECT1,48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8 AC)
aobscan(INJECT2,48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8 E7)
registersymbol(INJECT1)
registersymbol(INJECT2)

INJECT1:
  db 90

INJECT2:
  db 90

[DISABLE]
INJECT1:
  db 48
INJECT2:
  db 48

unregistersymbol(INJECT1)
unregistersymbol(INJECT2)

 

 

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

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

тут у тебя количество карт с 0 сравниваются

Я не уверен, что на том участке кода в eax лежит именно кол-во карт.

 

 

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

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

Я не уверен, что на том участке кода в eax лежит именно кол-во карт.

 

 

Ну это я предположил по

 

17 минут назад, Strajder сказал:

Пробуя ломать количество выставляемых карт за 1 ход: столкнулся с цепочкой проверки значения.

Попыткой задушить первый DEC eax - nop 

 

, может и не количество карт.

 

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

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

Ну это я предположил по, может и не количество карт.

Как я понял код кол-во карт загружается только после:

mov eax,[ebx+18] // здесь

 

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

На столе есть 2 пары карт вида:

Игровые:                        Вспомогательные:

////    ////   ////                    ////    ////   //// 

 

Получается что, когда ноплю, то основные карты не тратят свое значение (уменьшение регистра eax не происходит)

Но когда использую вспомогательные, то значение кол-ва карт падает. Видимо Нужно копать глубже... 

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

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

Или же как то можно лучше реализовать?

Ещё, как мне кажется, исходя из кода, можно сделать из последней проверки скрипт:

0777B49C - 8B 43 18              - mov eax,[ebx+18] // Сделать скрипт отсюда и записывать в [ebx+18] нужное тебе кол-во карт.

// как раз именно здесь идёт и проверка, а 0 ли у тебя карт:
0777B49F - 85 C0                 - test eax,eax // про которую и писал partoftheworlD ранее 

 

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

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

Этот скрипт проверял?

Да. Сигнатуры убежали) Но не далеко. 48 89 43 18 8B 05 30 B2

4 адреса. Но это не суть. Удлиню цепочку. 

занопил. Очки не тратятся.

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

[ENABLE]
aobscan(INJECT1,48 89 43 18 8B 05 30 B2 EA 05 83 EC 0C 50 39 00 E8 5C)
aobscan(INJECT2,48 89 43 18 8B 05 30 B2 EA 05 83 EC 0C 50 39 00 E8 67)
aobscan(INJECT3,48 89 43 18 8B 05 30 B2 EA 05 83 EC 0C 50 39 00 E8 BC)
aobscan(INJECT4,48 89 43 18 8B 05 30 B2 EA 05 83 EC 0C 50 39 00 E8 37)
registersymbol(INJECT1)
registersymbol(INJECT2)
registersymbol(INJECT3)
registersymbol(INJECT4)

INJECT1:
  db 90

INJECT2:
  db 90

INJECT3:
  db 90

INJECT4:
  db 90

[DISABLE]
INJECT1:
  db 48
INJECT2:
  db 48
INJECT3:
  db 48
INJECT4:
  db 48

unregistersymbol(INJECT1)
unregistersymbol(INJECT2)
unregistersymbol(INJECT3)
unregistersymbol(INJECT4)

 

Осталось уточнить. Откуда еще 2 адреса вылезли.

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

5 минут назад, Strajder сказал:

Да. Сигнатуры убежали)

Сигнатуры придётся делать по другому. Они и будут так бегать так как в них попадают call -ы, например этот:

call 0777BB80 // а так как адрес динамический они будет меняться и соответсвенно будет меняться сигнатура.

 

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

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

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

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