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

[Cossacks Back to War(Steam)] - ресурсы


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

Решил покопать стародобрые Казаки и обнаружил замудрённую систему шифрования. Нашёл инструкции которые обращаются к указателю.

Но не знаю как скрипт оформить и как расшифровать значение.

 

Инструкции

1

2

 

Скрипты с кодом

1

Спойлер

[ENABLE]

aobscanmodule(GoldTry,dmcr.exe,8B 2C 85 D0 61 1C 02) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  {mov ebp,[eax*4+dmcr.exe+1DC61D0]}
  jmp return

GoldTry:
  jmp newmem
  nop
  nop
return:
registersymbol(GoldTry)

[DISABLE]

GoldTry:
  db 8B 2C 85 D0 61 1C 02

unregistersymbol(GoldTry)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "dmcr.exe"+B350F

"dmcr.exe"+B34E7: 81 E3 FF 00 00 00     -  and ebx,000000FF
"dmcr.exe"+B34ED: 8B 04 BE              -  mov eax,[esi+edi*4]
"dmcr.exe"+B34F0: 8B 0C 9E              -  mov ecx,[esi+ebx*4]
"dmcr.exe"+B34F3: 89 44 24 34           -  mov [esp+34],eax
"dmcr.exe"+B34F7: 8B 44 24 2C           -  mov eax,[esp+2C]
"dmcr.exe"+B34FB: 89 4C 24 10           -  mov [esp+10],ecx
"dmcr.exe"+B34FF: 25 FF 00 00 00        -  and eax,000000FF
"dmcr.exe"+B3504: 89 44 24 2C           -  mov [esp+2C],eax
"dmcr.exe"+B3508: 8D 04 C1              -  lea eax,[ecx+eax*8]
"dmcr.exe"+B350B: 89 44 24 30           -  mov [esp+30],eax
// ---------- INJECTING HERE ----------
"dmcr.exe"+B350F: 8B 2C 85 D0 61 1C 02  -  mov ebp,[eax*4+dmcr.exe+1DC61D0]
// ---------- DONE INJECTING  ----------
"dmcr.exe"+B3516: 8B 44 24 38           -  mov eax,[esp+38]
"dmcr.exe"+B351A: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
"dmcr.exe"+B3520: 3B E8                 -  cmp ebp,eax
"dmcr.exe"+B3522: 7D 04                 -  jnl dmcr.exe+B3528
"dmcr.exe"+B3524: 89 6C 24 38           -  mov [esp+38],ebp
"dmcr.exe"+B3528: DB 44 24 38           -  fild dword ptr [esp+38]
"dmcr.exe"+B352C: DD 5C 24 20           -  fstp qword ptr [esp+20]
"dmcr.exe"+B3530: DD 44 24 20           -  fld qword ptr [esp+20]
"dmcr.exe"+B3534: DC 8C DE 8C 00 00 00  -  fmul qword ptr [esi+ebx*8+0000008C]
"dmcr.exe"+B353B: DC 74 FE 5C           -  fdiv qword ptr [esi+edi*8+5C]
}

 

2

Спойлер

[ENABLE]

aobscanmodule(GoldTry2,dmcr.exe,89 2C 8D D0 61 1C 02 8B 4C) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  {mov [ecx*4+dmcr.exe+1DC61D0],ebp}
  jmp return

GoldTry2:
  jmp newmem
  nop
  nop
return:
registersymbol(GoldTry2)

[DISABLE]

GoldTry2:
  db 89 2C 8D D0 61 1C 02

unregistersymbol(GoldTry2)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "dmcr.exe"+B355C

"dmcr.exe"+B3530: DD 44 24 20           -  fld qword ptr [esp+20]
"dmcr.exe"+B3534: DC 8C DE 8C 00 00 00  -  fmul qword ptr [esi+ebx*8+0000008C]
"dmcr.exe"+B353B: DC 74 FE 5C           -  fdiv qword ptr [esi+edi*8+5C]
"dmcr.exe"+B353F: E8 5C EC 0B 00        -  call dmcr.exe+1721A0
"dmcr.exe"+B3544: 8B 54 24 38           -  mov edx,[esp+38]
"dmcr.exe"+B3548: 8B 4C 24 30           -  mov ecx,[esp+30]
"dmcr.exe"+B354C: 2B EA                 -  sub ebp,edx
"dmcr.exe"+B354E: 8B 54 24 2C           -  mov edx,[esp+2C]
"dmcr.exe"+B3552: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
"dmcr.exe"+B3558: 89 44 24 18           -  mov [esp+18],eax
// ---------- INJECTING HERE ----------
"dmcr.exe"+B355C: 89 2C 8D D0 61 1C 02  -  mov [ecx*4+dmcr.exe+1DC61D0],ebp
// ---------- DONE INJECTING  ----------
"dmcr.exe"+B3563: 8B 4C 24 34           -  mov ecx,[esp+34]
"dmcr.exe"+B3567: DB 44 24 18           -  fild dword ptr [esp+18]
"dmcr.exe"+B356B: 8D 0C D1              -  lea ecx,[ecx+edx*8]
"dmcr.exe"+B356E: 8B 2C 8D D0 61 1C 02  -  mov ebp,[ecx*4+dmcr.exe+1DC61D0]
"dmcr.exe"+B3575: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
"dmcr.exe"+B357B: 03 E8                 -  add ebp,eax
"dmcr.exe"+B357D: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
"dmcr.exe"+B3583: 89 2C 8D D0 61 1C 02  -  mov [ecx*4+dmcr.exe+1DC61D0],ebp
"dmcr.exe"+B358A: 8B CA                 -  mov ecx,edx
"dmcr.exe"+B358C: C1 E1 04              -  shl ecx,04
}

 

 

mov ebp,[eax*4+dmcr.exe+1DC61D0] - я не понимаю что делать с [eax*4+dmcr.exe+1DC61D0]. Он даже в таблицу CE не компилируется.

 

Думаю для многих скорее это понятно. Дайте совет, пожалуйста.

 

P.S. В данном случае я искал золото.

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

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

 

Ясно. Всё поправил

Выложи СЕ-ный скрипт из вот этой инструкции:

"dmcr.exe"+B3552: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D

попробуем помочь.
только не затягивай, у меня не много времени есть.

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

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

Выложи СЕ-ный скрипт из вот этой инструкции:

Вот

Спойлер

[ENABLE]

aobscanmodule(XorGold,dmcr.exe,81 F5 7D 0D 02 00 3B E8) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  xor ebp,00020D7D
  jmp return

XorGold:
  jmp newmem
  nop
return:
registersymbol(XorGold)

[DISABLE]

XorGold:
  db 81 F5 7D 0D 02 00

unregistersymbol(XorGold)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "dmcr.exe"+B351A

"dmcr.exe"+B34F0: 8B 0C 9E              -  mov ecx,[esi+ebx*4]
"dmcr.exe"+B34F3: 89 44 24 34           -  mov [esp+34],eax
"dmcr.exe"+B34F7: 8B 44 24 2C           -  mov eax,[esp+2C]
"dmcr.exe"+B34FB: 89 4C 24 10           -  mov [esp+10],ecx
"dmcr.exe"+B34FF: 25 FF 00 00 00        -  and eax,000000FF
"dmcr.exe"+B3504: 89 44 24 2C           -  mov [esp+2C],eax
"dmcr.exe"+B3508: 8D 04 C1              -  lea eax,[ecx+eax*8]
"dmcr.exe"+B350B: 89 44 24 30           -  mov [esp+30],eax
"dmcr.exe"+B350F: 8B 2C 85 D0 61 1C 02  -  mov ebp,[eax*4+dmcr.exe+1DC61D0]
"dmcr.exe"+B3516: 8B 44 24 38           -  mov eax,[esp+38]
// ---------- INJECTING HERE ----------
"dmcr.exe"+B351A: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
// ---------- DONE INJECTING  ----------
"dmcr.exe"+B3520: 3B E8                 -  cmp ebp,eax
"dmcr.exe"+B3522: 7D 04                 -  jnl dmcr.exe+B3528
"dmcr.exe"+B3524: 89 6C 24 38           -  mov [esp+38],ebp
"dmcr.exe"+B3528: DB 44 24 38           -  fild dword ptr [esp+38]
"dmcr.exe"+B352C: DD 5C 24 20           -  fstp qword ptr [esp+20]
"dmcr.exe"+B3530: DD 44 24 20           -  fld qword ptr [esp+20]
"dmcr.exe"+B3534: DC 8C DE 8C 00 00 00  -  fmul qword ptr [esi+ebx*8+0000008C]
"dmcr.exe"+B353B: DC 74 FE 5C           -  fdiv qword ptr [esi+edi*8+5C]
"dmcr.exe"+B353F: E8 5C EC 0B 00        -  call dmcr.exe+1721A0
"dmcr.exe"+B3544: 8B 54 24 38           -  mov edx,[esp+38]
}

 

 

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

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

Вот

Не из этой а из нижней, она такая же, но ниже по коду. после sub

"вmcr.exe"+B354C: 2B EA                 -  sub ebp,edx
"dmcr.exe"+B354E: 8B 54 24 2C           -  mov edx,[esp+2C]
"dmcr.exe"+B3552: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D

 

ЗЫ: обрати внимание на адрес инструкции, которую я дал 

"dmcr.exe"+B3552
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

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

Не из этой а из нижней, она такая же, но ниже по коду. после sub

 

Эта?

Спойлер

[ENABLE]

aobscanmodule(Res,dmcr.exe,8B 54 24 2C 81 F5 7D 0D 02 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  mov edx,[esp+2C]
  xor ebp,00020D7D
  jmp return

Res:
  jmp newmem
  nop
  nop
  nop
  nop
  nop
return:
registersymbol(Res)

[DISABLE]

Res:
  db 8B 54 24 2C 81 F5 7D 0D 02 00

unregistersymbol(Res)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "dmcr.exe"+B354E

"dmcr.exe"+B3524: 89 6C 24 38           -  mov [esp+38],ebp
"dmcr.exe"+B3528: DB 44 24 38           -  fild dword ptr [esp+38]
"dmcr.exe"+B352C: DD 5C 24 20           -  fstp qword ptr [esp+20]
"dmcr.exe"+B3530: DD 44 24 20           -  fld qword ptr [esp+20]
"dmcr.exe"+B3534: DC 8C DE 8C 00 00 00  -  fmul qword ptr [esi+ebx*8+0000008C]
"dmcr.exe"+B353B: DC 74 FE 5C           -  fdiv qword ptr [esi+edi*8+5C]
"dmcr.exe"+B353F: E8 5C EC 0B 00        -  call dmcr.exe+1721A0
"dmcr.exe"+B3544: 8B 54 24 38           -  mov edx,[esp+38]
"dmcr.exe"+B3548: 8B 4C 24 30           -  mov ecx,[esp+30]
"dmcr.exe"+B354C: 2B EA                 -  sub ebp,edx
// ---------- INJECTING HERE ----------
"dmcr.exe"+B354E: 8B 54 24 2C           -  mov edx,[esp+2C]
"dmcr.exe"+B3552: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
// ---------- DONE INJECTING  ----------
"dmcr.exe"+B3558: 89 44 24 18           -  mov [esp+18],eax
"dmcr.exe"+B355C: 89 2C 8D D0 61 1C 02  -  mov [ecx*4+dmcr.exe+1DC61D0],ebp
"dmcr.exe"+B3563: 8B 4C 24 34           -  mov ecx,[esp+34]
"dmcr.exe"+B3567: DB 44 24 18           -  fild dword ptr [esp+18]
"dmcr.exe"+B356B: 8D 0C D1              -  lea ecx,[ecx+edx*8]
"dmcr.exe"+B356E: 8B 2C 8D D0 61 1C 02  -  mov ebp,[ecx*4+dmcr.exe+1DC61D0]
"dmcr.exe"+B3575: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
"dmcr.exe"+B357B: 03 E8                 -  add ebp,eax
"dmcr.exe"+B357D: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
"dmcr.exe"+B3583: 89 2C 8D D0 61 1C 02  -  mov [ecx*4+dmcr.exe+1DC61D0],ebp
}

 

 

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

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

Эта?

Ниже на одну, ну да ладно сойдет.
И обрати внимание на правила:

 

3. Если тема создается с вопросом по какой-то конкретно игре, название этой игры (в английском варианте) должно обязательно присутствовать в начале названия темы в квадратных скобках. Например, так:

[Assassin's Creed III] Вопрос по взлому мультиплеера. 

Попробуй скрипт;

Спойлер

[ENABLE]
aobscanmodule(Res,dmcr.exe,8B 54 24 2C 81 F5 7D 0D 02 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(Res)

newmem:
  mov ebp,#666

code:
  mov edx,[esp+2C]
  xor ebp,00020D7D
  jmp return

Res:
  jmp newmem
  db 90 90 90 90 90
return:

[DISABLE]
Res:
  db 8B 54 24 2C 81 F5 7D 0D 02 00

unregistersymbol(Res)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "dmcr.exe"+B354E

"dmcr.exe"+B3524: 89 6C 24 38           -  mov [esp+38],ebp
"dmcr.exe"+B3528: DB 44 24 38           -  fild dword ptr [esp+38]
"dmcr.exe"+B352C: DD 5C 24 20           -  fstp qword ptr [esp+20]
"dmcr.exe"+B3530: DD 44 24 20           -  fld qword ptr [esp+20]
"dmcr.exe"+B3534: DC 8C DE 8C 00 00 00  -  fmul qword ptr [esi+ebx*8+0000008C]
"dmcr.exe"+B353B: DC 74 FE 5C           -  fdiv qword ptr [esi+edi*8+5C]
"dmcr.exe"+B353F: E8 5C EC 0B 00        -  call dmcr.exe+1721A0
"dmcr.exe"+B3544: 8B 54 24 38           -  mov edx,[esp+38]
"dmcr.exe"+B3548: 8B 4C 24 30           -  mov ecx,[esp+30]
"dmcr.exe"+B354C: 2B EA                 -  sub ebp,edx
// ---------- INJECTING HERE ----------
"dmcr.exe"+B354E: 8B 54 24 2C           -  mov edx,[esp+2C]
"dmcr.exe"+B3552: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
// ---------- DONE INJECTING  ----------
"dmcr.exe"+B3558: 89 44 24 18           -  mov [esp+18],eax
"dmcr.exe"+B355C: 89 2C 8D D0 61 1C 02  -  mov [ecx*4+dmcr.exe+1DC61D0],ebp
"dmcr.exe"+B3563: 8B 4C 24 34           -  mov ecx,[esp+34]
"dmcr.exe"+B3567: DB 44 24 18           -  fild dword ptr [esp+18]
"dmcr.exe"+B356B: 8D 0C D1              -  lea ecx,[ecx+edx*8]
"dmcr.exe"+B356E: 8B 2C 8D D0 61 1C 02  -  mov ebp,[ecx*4+dmcr.exe+1DC61D0]
"dmcr.exe"+B3575: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
"dmcr.exe"+B357B: 03 E8                 -  add ebp,eax
"dmcr.exe"+B357D: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
"dmcr.exe"+B3583: 89 2C 8D D0 61 1C 02  -  mov [ecx*4+dmcr.exe+1DC61D0],ebp
}

 

 

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

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

Ниже

Понял.

Вот на всякий.

Спойлер

[ENABLE]

aobscanmodule(GoldX,dmcr.exe,81 F5 7D 0D 02 00 89 44) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  xor ebp,00020D7D
  jmp return

GoldX:
  jmp newmem
  nop
return:
registersymbol(GoldX)

[DISABLE]

GoldX:
  db 81 F5 7D 0D 02 00

unregistersymbol(GoldX)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "dmcr.exe"+B3552

"dmcr.exe"+B3528: DB 44 24 38           -  fild dword ptr [esp+38]
"dmcr.exe"+B352C: DD 5C 24 20           -  fstp qword ptr [esp+20]
"dmcr.exe"+B3530: DD 44 24 20           -  fld qword ptr [esp+20]
"dmcr.exe"+B3534: DC 8C DE 8C 00 00 00  -  fmul qword ptr [esi+ebx*8+0000008C]
"dmcr.exe"+B353B: DC 74 FE 5C           -  fdiv qword ptr [esi+edi*8+5C]
"dmcr.exe"+B353F: E8 5C EC 0B 00        -  call dmcr.exe+1721A0
"dmcr.exe"+B3544: 8B 54 24 38           -  mov edx,[esp+38]
"dmcr.exe"+B3548: 8B 4C 24 30           -  mov ecx,[esp+30]
"dmcr.exe"+B354C: 2B EA                 -  sub ebp,edx
"dmcr.exe"+B354E: 8B 54 24 2C           -  mov edx,[esp+2C]
// ---------- INJECTING HERE ----------
"dmcr.exe"+B3552: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
// ---------- DONE INJECTING  ----------
"dmcr.exe"+B3558: 89 44 24 18           -  mov [esp+18],eax
"dmcr.exe"+B355C: 89 2C 8D D0 61 1C 02  -  mov [ecx*4+dmcr.exe+1DC61D0],ebp
"dmcr.exe"+B3563: 8B 4C 24 34           -  mov ecx,[esp+34]
"dmcr.exe"+B3567: DB 44 24 18           -  fild dword ptr [esp+18]
"dmcr.exe"+B356B: 8D 0C D1              -  lea ecx,[ecx+edx*8]
"dmcr.exe"+B356E: 8B 2C 8D D0 61 1C 02  -  mov ebp,[ecx*4+dmcr.exe+1DC61D0]
"dmcr.exe"+B3575: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
"dmcr.exe"+B357B: 03 E8                 -  add ebp,eax
"dmcr.exe"+B357D: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D
"dmcr.exe"+B3583: 89 2C 8D D0 61 1C 02  -  mov [ecx*4+dmcr.exe+1DC61D0],ebp
}

 

 

Кстати как нашли шифрующую инструкцию. Стало хоть понятнее))

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

 

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

Да! Работает

Не нужно копировать все цитируемое сообщение, достаточно одной строчки, а то отправлю  "В угол" . Garik66 

 

Надеюсь, ты понял как я это сделал?

Первая выложенная тобой инструкция (которая выше по коду), там значение расшифровывается,
А вы нижнем наоборот зашифровывается,
Я записал значение в расшифрованное и она потом зашифровываясь, записывается в адрес ресурсов.

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

9 минут назад, Tzeentch сказал:

Почти понял. Но можно ли эти функции подписать/обозначить для наглядности)

Верхняя:

Спойлер

"dmcr.exe"+B350F: 8B 2C 85 D0 61 1C 02  -  mov ebp,[eax*4+dmcr.exe+1DC61D0] // из твоего адреса зашифрованное значение передается в ebp
"dmcr.exe"+B3516: 8B 44 24 38           -  mov eax,[esp+38]
// ---------- INJECTING HERE ----------
"dmcr.exe"+B351A: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D // после этой строчки, в ebp расшифрованное значение 

 

и нижняя:

Спойлер

"dmcr.exe"+B354C: 2B EA                 -  sub ebp,edx        // здесь от ресурсов отымается, то что ты потратил в игре
"dmcr.exe"+B354E: 8B 54 24 2C           -  mov edx,[esp+2C]
// ---------- INJECTING HERE ----------
"dmcr.exe"+B3552: 81 F5 7D 0D 02 00     -  xor ebp,00020D7D   // здесь значение снова зашифровывается. 
"dmcr.exe"+B3558: 89 44 24 18           -  mov [esp+18],eax
"dmcr.exe"+B355C: 89 2C 8D D0 61 1C 02  -  mov [ecx*4+dmcr.exe+1DC61D0],ebp // и здесь записывается в твой адрес

// так как мы меняем значение в ebp, после отнимания, то у нас пишется именно то, что мы хотим 
// в моем скрипте это 666

 


 

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

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

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

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