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

King's Bounty-The Legend The maximum number of troops


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

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

Скрипт "The maximum number of troops":

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

Уточнённый скрипт с защитой от ошибок пользователя и доп-видео выложил во втором сообщении этой темы.

Инструкция "как пользоваться скриптом" на видео.

Видео:

 

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

Уточнённый скрипт, по сравнению со скриптом, написанным во втором видео, скрипт оптимизирован - удалены лишние инструкции.

Скрипт "The maximum number of troops":

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

{ Game   : KB.exe
  Version: 
  Date   : 2016-07-31
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(Sum0,KB.exe,F3 0F 2A 40 10 EB) // should be unique
aobscanmodule(Sum,KB.exe,8B 43 10 8D 74 24 10)
alloc(newmem,$1000)
label(newmem1)
label(code)
label(code1)
label(return)
label(return1)
label(pointer1)
label(pointer2)
label(pointer3)
label(pointer4)
label(pointer5)
label(sum1)
label(sum2)
label(sum3)
label(sum4)
label(sum5)
label(flag1)
registersymbol(Sum0)
registersymbol(Sum)

newmem:
  push ebx
  push ecx
  cvtss2si ebx,xmm0
  cmp [flag1],1
  jne @f
  push [eax+4]
  pop [pointer1]
  mov [sum1],ebx
  inc [flag1]
  jmp code

@@:
  cmp [flag1],2
  jne @f
  mov ecx,[eax+4]
  cmp [pointer1],ecx
  je code
  mov [pointer2],ecx
  mov [sum2],ebx
  inc [flag1]
  jmp code

@@:
  cmp [flag1],3
  jne @f
  mov ecx,[eax+4]
  cmp [pointer1],ecx
  je code
  cmp [pointer2],ecx
  je code
  mov [pointer3],ecx
  mov [sum3],ebx
  inc [flag1]
  jmp code

@@:
  cmp [flag1],4
  jne @f
  mov ecx,[eax+4]
  cmp [pointer1],ecx
  je code
  cmp [pointer2],ecx
  je code
  cmp [pointer3],ecx
  je code
  mov [pointer4],ecx
  mov [sum4],ebx
  inc [flag1]
  jmp code

@@:
  cmp [flag1],5
  jne @f
  mov ecx,[eax+4]
  cmp [pointer1],ecx
  je code
  cmp [pointer2],ecx
  je code
  cmp [pointer3],ecx
  je code
  cmp [pointer4],ecx
  je code
  mov [pointer5],ecx
  mov [sum5],ebx
  mov [flag1],0
  jmp code

code:
  pop ebx
  pop ecx
  cvtsi2ss xmm0,[eax+10]
  jmp return

newmem1:
  mov eax,[ebx+4]
  cmp [pointer1],eax
  jne @f
  mov eax,[sum1]
  mov [sum1],0
  mov [pointer1],0
  mov [ebx+10],eax
  mov [ebx+10c],eax

@@:
  cmp [pointer2],eax
  jne @f
  mov eax,[sum2]
  mov [sum2],0
  mov [pointer2],0
  mov [ebx+10],eax
  mov [ebx+10c],eax

@@:
  cmp [pointer3],eax
  jne @f
  mov eax,[sum3]
  mov [sum3],0
  mov [pointer3],0
  mov [ebx+10],eax
  mov [ebx+10c],eax

 @@:
  cmp [pointer4],eax
  jne @f
  mov eax,[sum4]
  mov [sum4],0
  mov [pointer4],0
  mov [ebx+10],eax
  mov [ebx+10c],eax

 @@:
  cmp [pointer5],eax
  jne @f
  mov eax,[sum5]
  mov [sum5],0
  mov [pointer5],0
  mov [ebx+10],eax
  mov [ebx+10c],eax

code1:
  mov eax,[ebx+10]
  lea esi,[esp+10]
  jmp return1

flag1:
  dd 1
pointer1:
  dd 0
pointer2:
  dd 0
pointer3:
  dd 0
pointer4:
  dd 0
pointer5:
  dd 0
sum1:
  dd 0
sum2:
  dd 0
sum3:
  dd 0
sum4:
  dd 0
sum5:
  dd 0

Sum0:
  jmp newmem
return:

Sum:
  jmp newmem1
  db 90 90
return1:

[DISABLE]
Sum0:
  db F3 0F 2A 40 10
Sum:
  db 8B 43 10 8D 74 24 10

unregistersymbol(pointer1)
unregistersymbol(pointer2)
unregistersymbol(pointer3)
unregistersymbol(pointer4)
unregistersymbol(pointer5)
unregistersymbol(sum1)
unregistersymbol(sum2)
unregistersymbol(sum3)
unregistersymbol(sum4)
unregistersymbol(sum5)
unregistersymbol(Sum0)
unregistersymbol(Sum)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "KB.exe"+195533

"KB.exe"+195514: 68 C8 E9 FD 00           -  push KB.exe+BDE9C8
"KB.exe"+195519: 68 9C E9 FD 00           -  push KB.exe+BDE99C
"KB.exe"+19551E: 6A 00                    -  push 00
"KB.exe"+195520: 50                       -  push eax
"KB.exe"+195521: E8 7C CD 28 00           -  call KB.exe+4222A2
"KB.exe"+195526: 8B 40 04                 -  mov eax,[eax+04]
"KB.exe"+195529: 83 C4 14                 -  add esp,14
"KB.exe"+19552C: 85 C0                    -  test eax,eax
"KB.exe"+19552E: 74 0A                    -  je KB.exe+19553A
"KB.exe"+195530: 8B 40 70                 -  mov eax,[eax+70]
// ---------- INJECTING HERE ----------
"KB.exe"+195533: F3 0F 2A 40 10           -  cvtsi2ss xmm0,[eax+10]
// ---------- DONE INJECTING  ----------
"KB.exe"+195538: EB 08                    -  jmp KB.exe+195542
"KB.exe"+19553A: F3 0F 10 05 00 DA FD 00  -  movss xmm0,[KB.exe+BDDA00]
"KB.exe"+195542: F3 0F 11 44 24 04        -  movss [esp+04],xmm0
"KB.exe"+195548: D9 44 24 04              -  fld dword ptr [esp+04]
"KB.exe"+19554C: 51                       -  push ecx
"KB.exe"+19554D: 8D 4C 24 04              -  lea ecx,[esp+04]
"KB.exe"+195551: D9 1C 24                 -  fstp dword ptr [esp]
"KB.exe"+195554: E8 67 25 0C 00           -  call KB.exe+257AC0
"KB.exe"+195559: B8 01 00 00 00           -  mov eax,00000001
"KB.exe"+19555E: 83 C4 08                 -  add esp,08
}
{
// ORIGINAL CODE - INJECTION POINT: "KB.exe"+190C38

"KB.exe"+190C20: 5E                       -  pop esi
"KB.exe"+190C21: 5B                       -  pop ebx
"KB.exe"+190C22: 8B E5                    -  mov esp,ebp
"KB.exe"+190C24: 5D                       -  pop ebp
"KB.exe"+190C25: C2 10 00                 -  ret 0010
"KB.exe"+190C28: B9 84 5F F8 00           -  mov ecx,KB.exe+B85F84
"KB.exe"+190C2D: 8B C7                    -  mov eax,edi
"KB.exe"+190C2F: E8 5C 3F E9 FF           -  call KB.exe+24B90
"KB.exe"+190C34: 84 C0                    -  test al,al
"KB.exe"+190C36: 74 36                    -  je KB.exe+190C6E
// ---------- INJECTING HERE ----------
"KB.exe"+190C38: 8B 43 10                 -  mov eax,[ebx+10]
"KB.exe"+190C3B: 8D 74 24 10              -  lea esi,[esp+10]
// ---------- DONE INJECTING  ----------
"KB.exe"+190C3F: C7 44 24 10 00 00 00 00  -  mov [esp+10],00000000
"KB.exe"+190C47: E8 64 41 E9 FF           -  call KB.exe+24DB0
"KB.exe"+190C4C: 8B 00                    -  mov eax,[eax]
"KB.exe"+190C4E: 8B 75 0C                 -  mov esi,[ebp+0C]
"KB.exe"+190C51: 89 06                    -  mov [esi],eax
"KB.exe"+190C53: 85 C0                    -  test eax,eax
"KB.exe"+190C55: 74 03                    -  je KB.exe+190C5A
"KB.exe"+190C57: FF 40 0C                 -  inc [eax+0C]
"KB.exe"+190C5A: 8D 4C 24 10              -  lea ecx,[esp+10]
"KB.exe"+190C5E: E8 0D 32 E7 FF           -  call KB.exe+3E70
}

 

Видео:

 

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

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

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

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