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

Warcraft 3 Frozen Throne God Mod and One Hit Kill


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

Пишем скрипт "God Mod + One Hit Kill" для игры "Warcraft 3 Frozen Throne" по заявке пользователя.

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

{ Game   : war3.exe
  Version: 
  Date   : 2016-08-03
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(GodMod,Game.dll,57 8B CE 89 17) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(flag)
registersymbol(flag)
registersymbol(GodMod)

newmem:
  cmp byte ptr [edi+13],14
  jne @f
  mov edx,[edi+0C]         // GodMod
  jmp code

@@:
  cmp [flag],1
  jne code
  mov edx,0                // OneHitCill

code:
  push edi
  mov ecx,esi
  mov [edi],edx
  jmp return

flag:
  dd 0

GodMod:
  jmp newmem
return:

[DISABLE]
GodMod:
  db 57 8B CE 89 17

unregistersymbol(flag)
unregistersymbol(GodMod)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Game.dll"+4A9304

"Game.dll"+4A92EE: D9 02              -  fld dword ptr [edx]
"Game.dll"+4A92F0: DE D9              -  fcompp 
"Game.dll"+4A92F2: DF E0              -  fnstsw ax
"Game.dll"+4A92F4: F6 C4 05           -  test ah,05
"Game.dll"+4A92F7: 7B 02              -  jnp Game.dll+4A92FB
"Game.dll"+4A92F9: 8B D1              -  mov edx,ecx
"Game.dll"+4A92FB: 8B 12              -  mov edx,[edx]
"Game.dll"+4A92FD: 6A 00              -  push 00
"Game.dll"+4A92FF: 8D 44 24 0C        -  lea eax,[esp+0C]
"Game.dll"+4A9303: 50                 -  push eax
// ---------- INJECTING HERE ----------
"Game.dll"+4A9304: 57                 -  push edi
"Game.dll"+4A9305: 8B CE              -  mov ecx,esi
"Game.dll"+4A9307: 89 17              -  mov [edi],edx
// ---------- DONE INJECTING  ----------
"Game.dll"+4A9309: E8 22 FF FF FF     -  call Game.dll+4A9230
"Game.dll"+4A930E: 5F                 -  pop edi
"Game.dll"+4A930F: 5E                 -  pop esi
"Game.dll"+4A9310: 59                 -  pop ecx
"Game.dll"+4A9311: C2 04 00           -  ret 0004
"Game.dll"+4A9314: CC                 -  int 3 
"Game.dll"+4A9315: CC                 -  int 3 
"Game.dll"+4A9316: CC                 -  int 3 
"Game.dll"+4A9317: CC                 -  int 3 
"Game.dll"+4A9318: CC                 -  int 3 

 

Видео:

 

И табличка: 

Окончательные скрипты и табличку выложил здесь.

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

Гарик, спасибо вам)

 

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

О, меня на канале тоже просили сделать, но у меня не было на это времени. Молодец, Гарик ) 

Тоже я просил)

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

20 минуты назад, krocki сказал:

Аммм...я уже давно это сделал тут.

И? А кто-то ещё раньше написал саму игру. ;)

 

6 часов назад, Xipho сказал:

О, меня на канале тоже просили сделать, но у меня не было на это времени. Молодец, Гарик ) 

:)

4 часа назад, saiberpro сказал:

Молодец Гар, познавательно было.

:D Спасибо на добром слове!

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

Warcraft 3 Frozen Throne God Mod and One Hit Kill часть 2

В этом видео меняем фильтр в первом скрипте, добавляем в него InfiniteMana и пишем следующий скрипт Characteristics Hero: где вытаскиваем характеристики героя: опыт, сила, очки улучшений,  ловкость и ещё одну.

Скрипт "God Mod + One Hit Kill + Infinite Mana":

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

{ Game   : war3.exe
  Version: 
  Date   : 2016-08-03
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(GodMod,Game.dll,57 8B CE 89 17) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(flag)
registersymbol(flag)
registersymbol(GodMod)

newmem:
  cmp [edi+68],0
  je @f
  mov edx,[edi+98]         // Infinite Mana
  mov [edi+8C],edx
  mov edx,[edi+0C]         // GodMod
  jmp code

@@:
  cmp [flag],1
  jne code
  mov edx,0                // OneHitCill

code:
  push edi
  mov ecx,esi
  mov [edi],edx
  jmp return

flag:
  dd 0

GodMod:
  jmp newmem
return:

[DISABLE]
GodMod:
  db 57 8B CE 89 17

unregistersymbol(flag)
unregistersymbol(GodMod)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Game.dll"+4A9304

"Game.dll"+4A92EE: D9 02              -  fld dword ptr [edx]
"Game.dll"+4A92F0: DE D9              -  fcompp 
"Game.dll"+4A92F2: DF E0              -  fnstsw ax
"Game.dll"+4A92F4: F6 C4 05           -  test ah,05
"Game.dll"+4A92F7: 7B 02              -  jnp Game.dll+4A92FB
"Game.dll"+4A92F9: 8B D1              -  mov edx,ecx
"Game.dll"+4A92FB: 8B 12              -  mov edx,[edx]
"Game.dll"+4A92FD: 6A 00              -  push 00
"Game.dll"+4A92FF: 8D 44 24 0C        -  lea eax,[esp+0C]
"Game.dll"+4A9303: 50                 -  push eax
// ---------- INJECTING HERE ----------
"Game.dll"+4A9304: 57                 -  push edi
"Game.dll"+4A9305: 8B CE              -  mov ecx,esi
"Game.dll"+4A9307: 89 17              -  mov [edi],edx
// ---------- DONE INJECTING  ----------
"Game.dll"+4A9309: E8 22 FF FF FF     -  call Game.dll+4A9230
"Game.dll"+4A930E: 5F                 -  pop edi
"Game.dll"+4A930F: 5E                 -  pop esi
"Game.dll"+4A9310: 59                 -  pop ecx
"Game.dll"+4A9311: C2 04 00           -  ret 0004
"Game.dll"+4A9314: CC                 -  int 3 
"Game.dll"+4A9315: CC                 -  int 3 
"Game.dll"+4A9316: CC                 -  int 3 
"Game.dll"+4A9317: CC                 -  int 3 
"Game.dll"+4A9318: CC                 -  int 3 
}

 

Скрипт "Characteristics Hero":

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

{ Game   : war3.exe
  Version: 
  Date   : 2016-08-04
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(Xar,Game.dll,8B 80 8C 00 00 00 C3) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(P_Hero)
registersymbol(P_Hero)
registersymbol(Xar)

newmem:
  mov [P_Hero],eax

code:
  mov eax,[eax+0000008C]
  jmp return

P_Hero:
dd 0

Xar:
  jmp newmem
  nop
return:

[DISABLE]
Xar:
  db 8B 80 8C 00 00 00

unregistersymbol(P_Hero)
unregistersymbol(Xar)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Game.dll"+26EB3B

"Game.dll"+26EB26: E9 85 90 F9 FF     -  jmp Game.dll+207BB0
"Game.dll"+26EB2B: CC                 -  int 3 
"Game.dll"+26EB2C: CC                 -  int 3 
"Game.dll"+26EB2D: CC                 -  int 3 
"Game.dll"+26EB2E: CC                 -  int 3 
"Game.dll"+26EB2F: CC                 -  int 3 
"Game.dll"+26EB30: 8B 81 F0 01 00 00  -  mov eax,[ecx+000001F0]
"Game.dll"+26EB36: 85 C0              -  test eax,eax
"Game.dll"+26EB38: 75 01              -  jne Game.dll+26EB3B
"Game.dll"+26EB3A: C3                 -  ret 
// ---------- INJECTING HERE ----------
"Game.dll"+26EB3B: 8B 80 8C 00 00 00  -  mov eax,[eax+0000008C]
// ---------- DONE INJECTING  ----------
"Game.dll"+26EB41: C3                 -  ret 
"Game.dll"+26EB42: CC                 -  int 3 
"Game.dll"+26EB43: CC                 -  int 3 
"Game.dll"+26EB44: CC                 -  int 3 
"Game.dll"+26EB45: CC                 -  int 3 
"Game.dll"+26EB46: CC                 -  int 3 
"Game.dll"+26EB47: CC                 -  int 3 
"Game.dll"+26EB48: CC                 -  int 3 
"Game.dll"+26EB49: CC                 -  int 3 
"Game.dll"+26EB4A: CC                 -  int 3 

 

Видео:

 

Сама табличка:

Окончательные скрипты и табличку выложил здесь.

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

20 минуты назад, krocki сказал:

 

Просто кому то лень было воспользоваться поиском! ;)

Человек попросил именно урок, а не готовую таблицу (или трейнер), тем более игра старая и как и таблиц, так и трейнеров в Инете думаю полно.

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

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

 

Просто кому то лень было воспользоваться поиском! ;)

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

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

Ясно! Тогда вот ещё чит...а то в моей старой таблице только карта открывается.

Открыть карту и рассеять туман войны.

[ENABLE]
Game.dll+406B56:
db C6 43 10 00
Game.dll+406B5C:
db C6 43 14 00

[DISABLE]
Game.dll+406B56:
db C6 43 10 01
Game.dll+406B5C:
db C6 43 14 01
Ссылка на комментарий
Поделиться на другие сайты

Warcraft 3 Frozen Throne God Mod and One Hit Kill часть 3

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

Итого скрипты:

"God Mod ":

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

{ Game   : war3.exe
  Version: 
  Date   : 2016-08-03
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(GodMod,Game.dll,57 8B CE 89 17) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(GodMod)

newmem:
  cmp [edi+28],000061D7
  jne @f
  mov edx,[edi+0C]         // GodMod

code:
  push edi
  mov ecx,esi
  mov [edi],edx
  jmp return

GodMod:
  jmp newmem
return:

[DISABLE]
GodMod:
  db 57 8B CE 89 17

unregistersymbol(GodMod)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Game.dll"+4A9304

"Game.dll"+4A92EE: D9 02              -  fld dword ptr [edx]
"Game.dll"+4A92F0: DE D9              -  fcompp 
"Game.dll"+4A92F2: DF E0              -  fnstsw ax
"Game.dll"+4A92F4: F6 C4 05           -  test ah,05
"Game.dll"+4A92F7: 7B 02              -  jnp Game.dll+4A92FB
"Game.dll"+4A92F9: 8B D1              -  mov edx,ecx
"Game.dll"+4A92FB: 8B 12              -  mov edx,[edx]
"Game.dll"+4A92FD: 6A 00              -  push 00
"Game.dll"+4A92FF: 8D 44 24 0C        -  lea eax,[esp+0C]
"Game.dll"+4A9303: 50                 -  push eax
// ---------- INJECTING HERE ----------
"Game.dll"+4A9304: 57                 -  push edi
"Game.dll"+4A9305: 8B CE              -  mov ecx,esi
"Game.dll"+4A9307: 89 17              -  mov [edi],edx
// ---------- DONE INJECTING  ----------
"Game.dll"+4A9309: E8 22 FF FF FF     -  call Game.dll+4A9230
"Game.dll"+4A930E: 5F                 -  pop edi
"Game.dll"+4A930F: 5E                 -  pop esi
"Game.dll"+4A9310: 59                 -  pop ecx
"Game.dll"+4A9311: C2 04 00           -  ret 0004
"Game.dll"+4A9314: CC                 -  int 3 
"Game.dll"+4A9315: CC                 -  int 3 
"Game.dll"+4A9316: CC                 -  int 3 
"Game.dll"+4A9317: CC                 -  int 3 
"Game.dll"+4A9318: CC                 -  int 3 
}

 

"Characteristics Hero":

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

{ Game   : war3.exe
  Version: 
  Date   : 2016-08-04
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(Xar,Game.dll,8B 80 8C 00 00 00 C3) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(P_Hero)
registersymbol(P_Hero)
registersymbol(Xar)

newmem:
  mov [P_Hero],eax

code:
  mov eax,[eax+0000008C]
  jmp return

P_Hero:
dd 0

Xar:
  jmp newmem
  nop
return:

[DISABLE]
Xar:
  db 8B 80 8C 00 00 00

unregistersymbol(P_Hero)
unregistersymbol(Xar)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Game.dll"+26EB3B

"Game.dll"+26EB26: E9 85 90 F9 FF     -  jmp Game.dll+207BB0
"Game.dll"+26EB2B: CC                 -  int 3 
"Game.dll"+26EB2C: CC                 -  int 3 
"Game.dll"+26EB2D: CC                 -  int 3 
"Game.dll"+26EB2E: CC                 -  int 3 
"Game.dll"+26EB2F: CC                 -  int 3 
"Game.dll"+26EB30: 8B 81 F0 01 00 00  -  mov eax,[ecx+000001F0]
"Game.dll"+26EB36: 85 C0              -  test eax,eax
"Game.dll"+26EB38: 75 01              -  jne Game.dll+26EB3B
"Game.dll"+26EB3A: C3                 -  ret 
// ---------- INJECTING HERE ----------
"Game.dll"+26EB3B: 8B 80 8C 00 00 00  -  mov eax,[eax+0000008C]
// ---------- DONE INJECTING  ----------
"Game.dll"+26EB41: C3                 -  ret 
"Game.dll"+26EB42: CC                 -  int 3 
"Game.dll"+26EB43: CC                 -  int 3 
"Game.dll"+26EB44: CC                 -  int 3 
"Game.dll"+26EB45: CC                 -  int 3 
"Game.dll"+26EB46: CC                 -  int 3 
"Game.dll"+26EB47: CC                 -  int 3 
"Game.dll"+26EB48: CC                 -  int 3 
"Game.dll"+26EB49: CC                 -  int 3 
"Game.dll"+26EB4A: CC                 -  int 3 
}

 

"Infinite Mana":

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

{ Game   : war3.exe
  Version: 
  Date   : 2016-08-06
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(InfiniteMana,Game.dll,8B 3A 8B DF 81 E3 00 00 80 7F) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(pointer)
registersymbol(pointer)
registersymbol(InfiniteMana)

newmem:
  cmp [edx+28],000061D7
  jne code
  mov edi,[edx+0c]         // Infinite HP
  mov [edx],edi
  mov edi,[edx+98]         // Infinite Mana
  mov [edx+8C],edi
  mov [pointer],edx

code:
  mov edi,[edx]
  mov ebx,edi
  and ebx,7F800000
  jmp return

pointer:
dd 0

InfiniteMana:
  jmp newmem
  db 90 90 90 90 90
return:

[DISABLE]
InfiniteMana:
  db 8B 3A 8B DF 81 E3 00 00 80 7F

unregistersymbol(pointer)
unregistersymbol(InfiniteMana)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Game.dll"+6EF005

"Game.dll"+6EEFFB: CC                 -  int 3 
"Game.dll"+6EEFFC: CC                 -  int 3 
"Game.dll"+6EEFFD: CC                 -  int 3 
"Game.dll"+6EEFFE: CC                 -  int 3 
"Game.dll"+6EEFFF: CC                 -  int 3 
"Game.dll"+6EF000: 51                 -  push ecx
"Game.dll"+6EF001: 53                 -  push ebx
"Game.dll"+6EF002: 55                 -  push ebp
"Game.dll"+6EF003: 56                 -  push esi
"Game.dll"+6EF004: 57                 -  push edi
// ---------- INJECTING HERE ----------
"Game.dll"+6EF005: 8B 3A              -  mov edi,[edx]
"Game.dll"+6EF007: 8B DF              -  mov ebx,edi
"Game.dll"+6EF009: 81 E3 00 00 80 7F  -  and ebx,7F800000
// ---------- DONE INJECTING  ----------
"Game.dll"+6EF00F: 89 4C 24 10        -  mov [esp+10],ecx
"Game.dll"+6EF013: 74 52              -  je Game.dll+6EF067
"Game.dll"+6EF015: 8B 44 24 18        -  mov eax,[esp+18]
"Game.dll"+6EF019: 8B 00              -  mov eax,[eax]
"Game.dll"+6EF01B: 8B E8              -  mov ebp,eax
"Game.dll"+6EF01D: 81 E5 00 00 80 7F  -  and ebp,7F800000
"Game.dll"+6EF023: 74 69              -  je Game.dll+6EF08E
"Game.dll"+6EF025: 8B D7              -  mov edx,edi
"Game.dll"+6EF027: 81 E2 FF FF 7F 00  -  and edx,007FFFFF
"Game.dll"+6EF02D: 81 CA 00 00 80 00  -  or edx,vehdebug-i386.dll
}

 

"Damage + 10000":

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

{ Game   : war3.exe
  Version: 
  Date   : 2016-08-06
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(Damage,Game.dll,03 84 BE A0 00 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(BonusDamage)
registersymbol(Damage)

newmem:
  cmp [esi+0c],000061DE
  jne code
  add eax,[BonusDamage]

code:
  add eax,[esi+edi*4+000000A0]
  jmp return

BonusDamage:
dd 10000

Damage:
  jmp newmem
  db 90 90
return:

[DISABLE]
Damage:
  db 03 84 BE A0 00 00 00

unregistersymbol(Damage)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Game.dll"+C6966

"Game.dll"+C6940: 51                    -  push ecx
"Game.dll"+C6941: 56                    -  push esi
"Game.dll"+C6942: 57                    -  push edi
"Game.dll"+C6943: 68 50 24 DE 02        -  push Game.dll+8B2450
"Game.dll"+C6948: 8B F1                 -  mov esi,ecx
"Game.dll"+C694A: 8B BE B8 02 00 00     -  mov edi,[esi+000002B8]
"Game.dll"+C6950: 68 D1 0F 00 00        -  push 00000FD1
"Game.dll"+C6955: 68 38 24 DE 02        -  push Game.dll+8B2438
"Game.dll"+C695A: E8 21 15 47 00        -  call Game.dll+537E80
"Game.dll"+C695F: 8B 84 BE AC 00 00 00  -  mov eax,[esi+edi*4+000000AC]
// ---------- INJECTING HERE ----------
"Game.dll"+C6966: 03 84 BE A0 00 00 00  -  add eax,[esi+edi*4+000000A0]
// ---------- DONE INJECTING  ----------
"Game.dll"+C696D: 8B 8C BE 94 00 00 00  -  mov ecx,[esi+edi*4+00000094]
"Game.dll"+C6974: 8B 94 BE 88 00 00 00  -  mov edx,[esi+edi*4+00000088]
"Game.dll"+C697B: 83 C4 0C              -  add esp,0C
"Game.dll"+C697E: 68 F4 E4 FD 02        -  push Game.dll+AAE4F4
"Game.dll"+C6983: 50                    -  push eax
"Game.dll"+C6984: 51                    -  push ecx
"Game.dll"+C6985: 52                    -  push edx
"Game.dll"+C6986: BA 02 00 00 00        -  mov edx,00000002
"Game.dll"+C698B: 8D 4C 24 18           -  lea ecx,[esp+18]
"Game.dll"+C698F: E8 BC E9 1B 00        -  call Game.dll+285350
}

 

Видео:

 

И табличка:

war3.CT

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

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

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

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