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

Strajder

Пользователи+
  • Постов

    48
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

Сообщения, опубликованные Strajder

  1. Подскажите пожалуйста что делает "cvttss2si"

    Читал в интернете но так толком ничего не понял.

    Заранее благодарен.

    Скрытый текст
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.dat"+39AC3D
    
    "game.dat"+39AC24: 51                 -  push ecx
    "game.dat"+39AC25: 56                 -  push esi
    "game.dat"+39AC26: 8B F1              -  mov esi,ecx
    "game.dat"+39AC28: 8B 0D C4 EC DF 00  -  mov ecx,[game.dat+9FECC4]
    "game.dat"+39AC2E: 56                 -  push esi
    "game.dat"+39AC2F: E8 00 E0 EE FF     -  call game.dat+288C34
    "game.dat"+39AC34: 85 C0              -  test eax,eax
    "game.dat"+39AC36: 89 44 24 08        -  mov [esp+08],eax
    "game.dat"+39AC3A: 74 5A              -  je game.dat+39AC96
    "game.dat"+39AC3C: 53                 -  push ebx
    // ---------- INJECTING HERE ----------
    "game.dat"+39AC3D: F3 0F 2C 5E 10     -  cvttss2si ebx,[esi+10]
    // ---------- DONE INJECTING  ----------
    "game.dat"+39AC42: 55                 -  push ebp
    "game.dat"+39AC43: 57                 -  push edi
    "game.dat"+39AC44: C6 44 24 13 01     -  mov byte ptr [esp+13],01
    "game.dat"+39AC49: 33 ED              -  xor ebp,ebp
    "game.dat"+39AC4B: FF 76 0C           -  push [esi+0C]
    "game.dat"+39AC4E: 8B 0D C4 EC DF 00  -  mov ecx,[game.dat+9FECC4]
    "game.dat"+39AC54: FF 74 24 18        -  push [esp+18]
    "game.dat"+39AC58: E8 4B EB EE FF     -  call game.dat+2897A8
    "game.dat"+39AC5D: 8B F8              -  mov edi,eax
    "game.dat"+39AC5F: 85 FF              -  test edi,edi
    }

     

     

  2. Да <_<  действительно, проблема была в собственном отладчике игры, который запускается при запуске game.dat

    По совету собственно ничего не получилось. Выход нашел при помощи Process hacker.

    Отключил родной дебаггер, подключился CE. Полет нормальный. Но главное уже отключать при запущенной карте, а то при создании карты игра  крашится.

  3. Привет всем.

    Собственно хотел поковырять старую игрушку The Lord of the Ring: The Battle for Minle Earth.

    По сути она построена на .ini файлах - в которых хранятся фиксированные характеристики и запресованных в один .DAT

    Как я понимаю Cheat Engine тут будет почти бесполезен - в плане написания скриптов, т.к. отладчик там работать не будет (в плане бряков) и устойчивой системы построения кода там нет (Заранее извиняюсь за ломаный язык написания - думаю изъяснил понятно).

    Возможность нахождения указателей значений в игре - Это предел для CE в таких играх? или же есть возможность расковырять данные игры без влезания в файлы .ini?

    Заранее благодарен.

     

  4. Ну и пожалуй последний гвоздь в игру Thea: The Awakening :D

    Выложу сразу все скрипты, может кому нужно будет, или трейнер кто соберет.

    Карточные скрипты:

    Здоровье:

    Скрытый текст
    
    { Game   : Thea.exe
      Version:
      Date   : 2017-06-12
      Author : MrAntiFun
    
      This script does blah blah blah
    }
    
    [ENABLE]
    aobscan(HP,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(HP)
    
    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
    
    HP+02:
      jmp newmem
    return:
    
    [DISABLE]
    HP+02:
      db 8B C8 39 09 8B 40 0C
    
    unregistersymbol(HP)
    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-11
      Author : ALEXSP
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscan(ARMOR,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
    
    ARMOR:
      jmp newmem
    return:
    registersymbol(ARMOR)
    
    [DISABLE]
    
    ARMOR:
      db 8B 46 30 85 C0
    
    unregistersymbol(ARMOR)
    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
    }

     

    Урон+100:

    Скрытый текст
    
    { Game   : Thea.exe
      Version: 
      Date   : 2017-06-13
      Author : ALEXSP
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscan(ATTACK,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
    
    ATTACK:
      jmp newmem
    return:
    registersymbol(ATTACK)
    
    [DISABLE]
    
    ATTACK:
      db 8B 4E 2C 03 C1
    
    unregistersymbol(ATTACK)
    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-14
      Author : ALEXSP
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscan(INJECTq,8B 43 18 85 C0 0F 85 43) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov [ebx+18],#1
    code:
      mov eax,[ebx+18]
      test eax,eax
      jmp return
    
    INJECTq:
      jmp newmem
    return:
    registersymbol(INJECTq)
    
    [DISABLE]
    
    INJECTq:
      db 8B 43 18 85 C0
    
    unregistersymbol(INJECTq)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: 0737AEA4
    
    ""+737AE87: 74 1B              -  je 0737AEA4
    ""+737AE89: 8B 43 18           -  mov eax,[ebx+18]
    ""+737AE8C: 48                 -  dec eax
    ""+737AE8D: 89 43 18           -  mov [ebx+18],eax
    ""+737AE90: 8B 05 30 B2 5C 06  -  mov eax,[065CB230]
    ""+737AE96: 83 EC 0C           -  sub esp,0C
    ""+737AE99: 50                 -  push eax
    ""+737AE9A: 39 00              -  cmp [eax],eax
    ""+737AE9C: E8 E7 06 00 00     -  call 0737B588
    ""+737AEA1: 83 C4 10           -  add esp,10
    // ---------- INJECTING HERE ----------
    ""+737AEA4: 8B 43 18           -  mov eax,[ebx+18]
    ""+737AEA7: 85 C0              -  test eax,eax
    // ---------- DONE INJECTING  ----------
    ""+737AEA9: 0F 85 43 00 00 00  -  jne 0737AEF2
    ""+737AEAF: 83 EC 08           -  sub esp,08
    ""+737AEB2: 6A 00              -  push 00
    ""+737AEB4: 53                 -  push ebx
    ""+737AEB5: E8 6E 75 FF FF     -  call 07372428
    ""+737AEBA: 83 C4 10           -  add esp,10
    ""+737AEBD: 85 C0              -  test eax,eax
    ""+737AEBF: 75 14              -  jne 0737AED5
    ""+737AEC1: 83 EC 08           -  sub esp,08
    ""+737AEC4: 6A 01              -  push 01
    }

     

     Общие - Игровые скрипты:

    Все ресурсы на 100, - лимит веса, - лимит обмундирования:

    Скрытый текст
    
    { Game   : Thea.exe
      Version: 
      Date   : 2017-06-11
      Author : ALEXSP
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscan(WSE,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
    
    WSE:
      jmp newmem
      nop
    return:
    registersymbol(WSE)
    
    [DISABLE]
    
    WSE:
      db 8B 40 5C 8B 4E 0C
    
    unregistersymbol(WSE)
    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(UPGRADE,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
    
    UPGRADE:
      jmp newmem
      nop
    return:
    registersymbol(UPGRADE)
    
    [DISABLE]
    
    UPGRADE:
      db 8B 40 44 89 45 94
    
    unregistersymbol(UPGRADE)
    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
    }

     

    Бесконечные ходы отряда:

    Скрытый текст
    
    { Game   : Thea.exe
      Version: 
      Date   : 2017-06-09
      Author : ALEXSP
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscan(HODE,8B 40 54 85 C0 7C) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov [eax+54],#5
    code:
      mov eax,[eax+54]
      test eax,eax
      jmp return
    
    HODE:
      jmp newmem
    return:
    registersymbol(HODE)
    
    [DISABLE]
    
    HODE:
      db 8B 40 54 85 C0
    
    unregistersymbol(HODE)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: 15C9C02A
    
    ""+15C9C016: 0E                 -  push cs
    ""+15C9C017: 40                 -  inc eax
    ""+15C9C018: C0 F0 00           -  rol al,00
    ""+15C9C01B: 00 00              -  add [eax],al
    ""+15C9C01D: 00 00              -  add [eax],al
    ""+15C9C01F: 00 55 8B           -  add [ebp-75],dl
    ""+15C9C022: EC                 -  in al,dx
    ""+15C9C023: 56                 -  push esi
    ""+15C9C024: 83 EC 04           -  sub esp,04
    ""+15C9C027: 8B 45 08           -  mov eax,[ebp+08]
    // ---------- INJECTING HERE ----------
    ""+15C9C02A: 8B 40 54           -  mov eax,[eax+54]
    ""+15C9C02D: 85 C0              -  test eax,eax
    // ---------- DONE INJECTING  ----------
    ""+15C9C02F: 7C 12              -  jl 15C9C043
    ""+15C9C031: 83 EC 0C           -  sub esp,0C
    ""+15C9C034: FF 75 08           -  push [ebp+08]
    ""+15C9C037: E8 2C 00 00 00     -  call 15C9C068
    ""+15C9C03C: 83 C4 10           -  add esp,10
    ""+15C9C03F: 85 C0              -  test eax,eax
    ""+15C9C041: 74 08              -  je 15C9C04B
    ""+15C9C043: 8B 45 08           -  mov eax,[ebp+08]
    ""+15C9C046: 8B 70 54           -  mov esi,[eax+54]
    ""+15C9C049: EB 02              -  jmp 15C9C04D
    }

     

    Опыт - Максимальный опыт божества:

    Скрытый текст
    
    { Game   : Thea.exe
      Version: 
      Date   : 2017-06-14
      Author : ALEXSP
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscan(INJECTff,8B 40 54 89 85 14 FF FF FF) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
     cmp [eax+54],#10000
     JGE code
     mov [eax+54],#10000
    code:
      mov eax,[eax+54]
      mov [ebp-000000EC],eax
      jmp return
    
    INJECTff:
      jmp newmem
      nop
      nop
      nop
      nop
    return:
    registersymbol(INJECTff)
    
    [DISABLE]
    
    INJECTff:
      db 8B 40 54 89 85 14 FF FF FF
    
    unregistersymbol(INJECTff)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: 06B2E3ED
    
    ""+6B2E3BE: FF B5 F4 FE FF FF  -  push [ebp-0000010C]
    ""+6B2E3C4: 8B 85 F4 FE FF FF  -  mov eax,[ebp-0000010C]
    ""+6B2E3CA: 39 00              -  cmp [eax],eax
    ""+6B2E3CC: E8 BF A1 80 FF     -  call 06338590
    ""+6B2E3D1: 83 C4 10           -  add esp,10
    ""+6B2E3D4: 8B 85 1C FF FF FF  -  mov eax,[ebp-000000E4]
    ""+6B2E3DA: 8B 8D 18 FF FF FF  -  mov ecx,[ebp-000000E8]
    ""+6B2E3E0: 03 C1              -  add eax,ecx
    ""+6B2E3E2: 89 85 1C FF FF FF  -  mov [ebp-000000E4],eax
    ""+6B2E3E8: E8 1B 68 BE 0E     -  call 15714C08
    // ---------- INJECTING HERE ----------
    ""+6B2E3ED: 8B 40 54           -  mov eax,[eax+54]
    ""+6B2E3F0: 89 85 14 FF FF FF  -  mov [ebp-000000EC],eax
    // ---------- DONE INJECTING  ----------
    ""+6B2E3F6: B9 32 00 00 00     -  mov ecx,00000032
    ""+6B2E3FB: 99                 -  cdq 
    ""+6B2E3FC: F7 F9              -  idiv ecx
    ""+6B2E3FE: 8D 04 80           -  lea eax,[eax+eax*4]
    ""+6B2E401: 03 C0              -  add eax,eax
    ""+6B2E403: 89 85 18 FF FF FF  -  mov [ebp-000000E8],eax
    ""+6B2E409: 8D 85 14 FF FF FF  -  lea eax,[ebp-000000EC]
    ""+6B2E40F: 83 EC 0C           -  sub esp,0C
    ""+6B2E412: 50                 -  push eax
    ""+6B2E413: E8 C0 B8 88 FF     -  call 063B9CD8
    }

     

    Все скрипты сделаны для версии Thea: The Awakening 1.20.2516.0

    Огромная благодарность всем кто помогал.B)

    • Плюс 2
  5. 10 часов назад, Garik66 сказал:

    Правильный подход. Тоже так предпочитаю делать.

     

    А новый скрипт то работает? а то не написал.

     

    Да скрипт работает. Но записал через mov, ибо через inc или add при выставлении карт идет увеличение значений, что не есть хорошо. Ну и еще 1 нюанс: Скрипт активируется только после того, как выставить одну карту. Видимо код срабатывает и прописывает себя, а до этого нужных сигнатур нет. Ну а дальше все норм.

  6. Доделать до конца и идти спать :ph34r:

     

    Скрытый текст
    
    { Game   : Thea.exe
      Version: 
      Date   : 2017-06-14
      Author : ALEXSP
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscan(INJECTq,8B 43 18 85 C0 0F 85 43) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov [ebx+18],#1
    code:
      mov eax,[ebx+18]
      test eax,eax
      jmp return
    
    INJECTq:
      jmp newmem
    return:
    registersymbol(INJECTq)
    
    [DISABLE]
    
    INJECTq:
      db 8B 43 18 85 C0
    
    unregistersymbol(INJECTq)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: 0737AEA4
    
    ""+737AE87: 74 1B              -  je 0737AEA4
    ""+737AE89: 8B 43 18           -  mov eax,[ebx+18]
    ""+737AE8C: 48                 -  dec eax
    ""+737AE8D: 89 43 18           -  mov [ebx+18],eax
    ""+737AE90: 8B 05 30 B2 5C 06  -  mov eax,[065CB230]
    ""+737AE96: 83 EC 0C           -  sub esp,0C
    ""+737AE99: 50                 -  push eax
    ""+737AE9A: 39 00              -  cmp [eax],eax
    ""+737AE9C: E8 E7 06 00 00     -  call 0737B588
    ""+737AEA1: 83 C4 10           -  add esp,10
    // ---------- INJECTING HERE ----------
    ""+737AEA4: 8B 43 18           -  mov eax,[ebx+18]
    ""+737AEA7: 85 C0              -  test eax,eax
    // ---------- DONE INJECTING  ----------
    ""+737AEA9: 0F 85 43 00 00 00  -  jne 0737AEF2
    ""+737AEAF: 83 EC 08           -  sub esp,08
    ""+737AEB2: 6A 00              -  push 00
    ""+737AEB4: 53                 -  push ebx
    ""+737AEB5: E8 6E 75 FF FF     -  call 07372428
    ""+737AEBA: 83 C4 10           -  add esp,10
    ""+737AEBD: 85 C0              -  test eax,eax
    ""+737AEBF: 75 14              -  jne 0737AED5
    ""+737AEC1: 83 EC 08           -  sub esp,08
    ""+737AEC4: 6A 01              -  push 01
    }

     

    Всем добрых.

    • Плюс 1
  7. 11 минуту назад, Garik66 сказал:

    Я же говорил про последнюю проверку:

    
    0777B49C - 8B 43 18              - mov eax,[ebx+18] // попробуй именно здесь написать, может будет нужен один скрипт
    0777B49F - 85 C0                 - test eax,eax

     

    Поздно уже) Час ночи. Затупил ;)...

    Хотя как ни странно с 1 скриптом не работает.. (Либо 1 либо 2) С двумя да.

    Теперь понятно почему.)

    Первый отвечает за левую часть карт. А второй за правую.

  8. Изменил

    Скрытый текст
    
    { Game   : Thea.exe
      Version: 
      Date   : 2017-06-14
      Author : ALEXSP
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscan(INJECT,1B 8B 43 18 48 89 43 18) // should be unique
    aobscan(INJECT1,2F 8B 43 18 48 89 43 18) // should be unique
    alloc(newmem,$1000)
    alloc(newmem1,$1000)
    registersymbol(INJECT)
    registersymbol(INJECT1)
    label(code)
    label(code1)
    label(return)
    label(return1)
    
    newmem:
      inc [ebx+18]
    code:
      mov eax,[ebx+18]
      dec eax
      mov [ebx+18],eax
      jmp return
    
    newmem1:
      inc [ebx+18]
    code1:
      mov eax,[ebx+18]
      dec eax
      mov [ebx+18],eax
      jmp return1
    
    INJECT+01:
      jmp newmem
      nop
      nop
    return:
    
    INJECT1+01:
      jmp newmem1
      nop
      nop
    return1:
    
    
    [DISABLE]
    
    INJECT+01:
      db 8B 43 18 48 89 43 18
    INJECT1+01:
      db 8B 43 18 48 89 43 18
    
    unregistersymbol(INJECT)
    unregistersymbol(INJECT1)
    dealloc(newmem)
    dealloc(newmem1)
    
    
    
    {
    // ORIGINAL CODE - INJECTION POINT: 0737AE89
    
    ""+737AE6F: 8B 05 30 B2 5C 06  -  mov eax,[065CB230]
    ""+737AE75: 51                 -  push ecx
    ""+737AE76: 57                 -  push edi
    ""+737AE77: FF 75 0C           -  push [ebp+0C]
    ""+737AE7A: 50                 -  push eax
    ""+737AE7B: 39 00              -  cmp [eax],eax
    ""+737AE7D: E8 46 8D 00 00     -  call 07383BC8
    ""+737AE82: 83 C4 10           -  add esp,10
    ""+737AE85: 85 C0              -  test eax,eax
    ""+737AE87: 74 1B              -  je 0737AEA4
    // ---------- INJECTING HERE ----------
    ""+737AE89: 8B 43 18           -  mov eax,[ebx+18]
    ""+737AE8C: 48                 -  dec eax
    ""+737AE8D: 89 43 18           -  mov [ebx+18],eax
    // ---------- DONE INJECTING  ----------
    ""+737AE90: 8B 05 30 B2 5C 06  -  mov eax,[065CB230]
    ""+737AE96: 83 EC 0C           -  sub esp,0C
    ""+737AE99: 50                 -  push eax
    ""+737AE9A: 39 00              -  cmp [eax],eax
    ""+737AE9C: E8 E7 06 00 00     -  call 0737B588
    ""+737AEA1: 83 C4 10           -  add esp,10
    ""+737AEA4: 8B 43 18           -  mov eax,[ebx+18]
    ""+737AEA7: 85 C0              -  test eax,eax
    ""+737AEA9: 0F 85 43 00 00 00  -  jne 0737AEF2
    ""+737AEAF: 83 EC 08           -  sub esp,08
    }

     

     

  9. 25 минут назад, Garik66 сказал:

    Попробуй качнуть это и с помощью него сделать оба скрипта.

    Сделал. Работает. Очки не уменьшаются.

    Почитал про "test" Честно говоря понял только то что он производит вычисления значений, но не записывает результат, а сравнивает. 

    Можно если не затруднит показать какой - нибудь пример решения. Но не к данному случаю. Хочу сам понять как обойти этот 

    "test eax,eax"

  10. 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 адреса вылезли.

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

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

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

     

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

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

  12. Пробуя ломать количество выставляемых карт за 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
    }

     

     

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

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

    Скрытый текст
    
    { 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
    }

     

     

    • Плюс 2
  14.  

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

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

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

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

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

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

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

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

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

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

  16. Проблему вроде удалось решить. 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)
    }

     

     

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

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

    Вот уже 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:

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

  18. Доброго времени суток.

    Хотел узнать по материалам:

    В частности ссылки на скачивание материалов уже не существуют.

    Появится ли возможность перезалить?

    http://nullalex.gamehacklab.ru/files/gamehacklab/articles_gamehacking/DevilMayCry.zip  - not Found

    Был бы признателен.

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

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

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

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