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

SergBrNord

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

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

  • Посещение

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

    12

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

  1. 10 минуту назад, LIRW сказал:

    В ручную. Скопируй примерное количество байт - штук 20 к примеру и выбрав в СЕ в поиске "Массив байт" проверить их... Не забыв кубик поставить - копируемая при записи. Я просто что заметил - если СЕ не находит рядом в районе + - 20 байт от нужного места нужный сигнатуры, а не находит он из за повтора байт (где то ещо подобное есть) то он выдаёт подобную ошибку.  

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

     

    Попробовал поиском по массиву - 0 результатов, хотя AoB Scan выдаёт цифру в 4 совпадения.

  2. 8 минут назад, what228 сказал:

    AA Maker скрипт или ручками.
    Советую набить руку в этом деле ибо не всегда получится использовать каждый байт.
    Пример твоего AOB ("8B 54 24 XX 8B 08 89 XX XX XX XX") что то типа такого.
    Почему стоит набить руку и писать в подобном виде? Потому что есть игры в которых возможно часть кода поменяется.
    Пример
    xor eax,FFFFFFFF ("QW ER TY UI OP")
    а потом бац
    xor eax,FFFFFFF1 ("QW ER TY UI GG")

    Надеюсь ясно \:D/

    Достаточно явно написано.

    Но мне нужно пояснение. Я сейчас читаю параллельно статью Ридиана с форума CE. У него есть такой пример:

    14inz0x.jpg

     

    Я предполагал, что убираются одинаковые группы байт. Но глянул чуть подробнее — а там совсем не одинаковые группы байт. Т.е. идёт замена непосредственно адресов, которые используются в коде. Но у меня такого нет.

  3. Всем привет!

    Столкнулся с интересной проблемой.

    Есть такая старенькая игрушка "Гарри Поттер и Философский камень" =)

    Пытался сломать значение бобов в этой игрушке и получил в итоге:

    INJECT,Core.dll,ОШИБКА: Не удалось найти уникальный массив байт. Опробованный код "8B 08 89 0A C2 08 00"

    Насколько я понимаю, CE требуется уникальный массив байт, он же AoB.

    Пытался добавить вручную байт, получилось что-то вроде этого:

    aobscanmodule(INJECT,Core.dll,"8B 54 24 04 8B 08 89 0A C2 08 00") // should be unique

    Всё равно отказывается работать. Как таки получить уникальный массив байт?

     

    Весь текст скрипта полностью:

    Скрытый текст
    
    { Game   : game.exe
      Version: 
      Date   : 2017-04-24
      Author : SergBrNord
    
      This script does blah blah blah
    }
    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    
     
     
    aobscanmodule(INJECT,Core.dll,ОШИБКА: Не удалось найти уникальный массив байт. Опробованный код "8B 08 89 0A C2 08 00") // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
    
    code:
      mov ecx,[eax]
      mov [edx],ecx
      ret 0008
      jmp return
    
    INJECT+6380DA8:
      jmp newmem
      nop
      nop
    return:
    registersymbol(INJECT)
    
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    INJECT+6380DA8:
      db 8B 08 89 0A C2 08 00
    
    unregistersymbol(INJECT)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "Core.dll"+6CF40
    
    "Core.dll"+6CF24: 8B 54 24 04           -  mov edx,[esp+04]
    "Core.dll"+6CF28: 8B 08                 -  mov ecx,[eax]
    "Core.dll"+6CF2A: 89 0A                 -  mov [edx],ecx
    "Core.dll"+6CF2C: C2 08 00              -  ret 0008
    "Core.dll"+6CF2F: 90                    -  nop 
    "Core.dll"+6CF30: 8B 49 34              -  mov ecx,[ecx+34]
    "Core.dll"+6CF33: 83 F9 01              -  cmp ecx,01
    "Core.dll"+6CF36: 75 0F                 -  jne Core.dll+6CF47
    "Core.dll"+6CF38: 8B 44 24 08           -  mov eax,[esp+08]
    "Core.dll"+6CF3C: 8B 54 24 04           -  mov edx,[esp+04]
    // ---------- INJECTING HERE ----------
    "Core.dll"+6CF40: 8B 08                 -  mov ecx,[eax]
    "Core.dll"+6CF42: 89 0A                 -  mov [edx],ecx
    "Core.dll"+6CF44: C2 08 00              -  ret 0008
    // ---------- DONE INJECTING  ----------
    "Core.dll"+6CF47: 85 C9                 -  test ecx,ecx
    "Core.dll"+6CF49: 7E 0E                 -  jle Core.dll+6CF59
    "Core.dll"+6CF4B: 56                    -  push esi
    "Core.dll"+6CF4C: 8B 74 24 0C           -  mov esi,[esp+0C]
    "Core.dll"+6CF50: 57                    -  push edi
    "Core.dll"+6CF51: 8B 7C 24 0C           -  mov edi,[esp+0C]
    "Core.dll"+6CF55: F3 A5                 - repe  movsd 
    "Core.dll"+6CF57: 5F                    -  pop edi
    "Core.dll"+6CF58: 5E                    -  pop esi
    "Core.dll"+6CF59: C2 08 00              -  ret 0008
    }

     

     

  4. В 29.01.2017в21:31, Garik66 сказал:

    Благодарю!:)

     

    Если не к спеху, то посмотрю (на следующих длинных выходных).

    Если согласен - скинь в личку сейв с опытом, где опыт можно посмотреть и за что он в игре начисляется.

     

    Согласен, но я пока доламываю таймер времени. То что ты нашёл (огромное спасибо) - это всего лишь визуалка. Но! Вверх по коду есть следующее:

    Скрытый текст
    
    "Prince of Persia.exe"+34E5F5: 8B 44 24 14              -  mov eax,[esp+14]
    "Prince of Persia.exe"+34E5F9: F3 0F 10 80 98 00 00 00  -  movss xmm0,[eax+00000098]
    "Prince of Persia.exe"+34E601: F3 0F 10 0D 1C 73 10 01  -  movss xmm1,["Prince of Persia.exe"+D0731C]				[11.50]
    "Prince of Persia.exe"+34E609: F3 0F 5C 80 94 00 00 00  -  subss xmm0,[eax+00000094]
    "Prince of Persia.exe"+34E611: F3 0F 5C 0D 24 FC FE 00  -  subss xmm1,["Prince of Persia.exe"+BEFC24]				[0.50]

     

     

    Первый - 100% содержит количество времени, на которое разрешена отмотка. Я записал по "Prince of Persia.exe"+D0731C значение в 20 - и таймер увеличился на 9,5 секунд.

  5. 6 часов назад, Garik66 сказал:

    Вот, что получилось

    Отлично получилось! 

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

     

    Я бы хотел попросить тебя сломать ещё и опыт.. но как-то совестно =)

  6. 12 часа назад, Garik66 сказал:

    Ну фильтр я писать точно не буду (это уже сам - думаю там ничего сложного нет), играть в игру до момента встречи с босом я не буду.

     

    У меня есть скрипт же свой

    =)

     

    sergey-druzhko_135962096_orig_.jpg

     

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

    sergey-druzhko_135961996_orig_.jpg

     

  7. В 23.01.2017в23:16, Garik66 сказал:

    Вот здесь и вопрос - тебе нужно, чтобы убывание происходило быстро, или чтобы восстановление было быстрым? Что именно из этого и поясни на что это в игре влияет.

    Идеально было бы, чтобы полоска вообще не убывала.

     

    В 23.01.2017в23:16, Garik66 сказал:

    Полоска, при нажатии на Q вначале убывает, доходит до какого-то момента (видимо момента, когда принц в безопасности по расчётам игрового кода), а потом течёт по нормальному течению времени.

    Если смотреть по всем предыдущим играм серии - просто идёт запись действий игрока до определённого времени, около 20 секунд или выше, а при включении функции, обращает все действия игрока, вплоть до восстановления объектов и НПС.

     

    В 23.01.2017в23:16, Garik66 сказал:

    mov [ebx+18],edi

    Да, работает со здоровьем боссов, как ни странно.

  8. Гарик, нужно помочь со сломом таймера отмотки, а не числа количества отмоток. Если по простому - то это полукруглая заполняющаяся полоса под красной полоской здоровья.

     

    Я вышел на статический адрес значения, которое если приморозить, то морозится вся игра.

    Вот этот адрес; просто добавь:  "Prince of Persia.exe"+D09A08

    Сделать, естественно, надо так, чтобы полоска не убывала.

     

    P.S.

    На эту функцию, которая у тебя, надо писать фильтр, т.к. она ещё работает и со здоровьем боссов (по крайней мере с первым - точно). Вот мой, ещё не опубликованный скрипт.

    Скрытый текст
    
    { Game   : Prince of Persia.exe
      Version: 1.0
      Date   : 2017-01-14
      Author : SergBrNord
    }
    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    
    aobscanmodule(ENERGY_SLOTS,Prince of Persia.exe,8B 48 70 89 4C 24 10) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
       mov [eax+70], 9
    
    code:
      mov ecx,[eax+70]
      mov [esp+10],ecx
      jmp return
    
    ENERGY_SLOTS:
      jmp newmem
      nop
      nop
    return:
    registersymbol(ENERGY_SLOTS)
    
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    ENERGY_SLOTS:
      db 8B 48 70 89 4C 24 10
    
    unregistersymbol(ENERGY_SLOTS)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "Prince of Persia.exe"+34DAB2
    
    "Prince of Persia.exe"+34DA97: 51                       -  push ecx
    "Prince of Persia.exe"+34DA98: E8 73 E5 FA FF           -  call "Prince of Persia.exe"+2FC010
    "Prince of Persia.exe"+34DA9D: EB 31                    -  jmp "Prince of Persia.exe"+34DAD0
    "Prince of Persia.exe"+34DA9F: 33 C9                    -  xor ecx,ecx
    "Prince of Persia.exe"+34DAA1: 51                       -  push ecx
    "Prince of Persia.exe"+34DAA2: E8 69 E5 FA FF           -  call "Prince of Persia.exe"+2FC010
    "Prince of Persia.exe"+34DAA7: EB 27                    -  jmp "Prince of Persia.exe"+34DAD0
    "Prince of Persia.exe"+34DAA9: A1 58 53 1A 01           -  mov eax,["Prince of Persia.exe"+DA5358]
    "Prince of Persia.exe"+34DAAE: 85 C0                    -  test eax,eax
    "Prince of Persia.exe"+34DAB0: 74 09                    -  je "Prince of Persia.exe"+34DABB
    // ---------- INJECTING HERE ----------
    "Prince of Persia.exe"+34DAB2: 8B 48 70                 -  mov ecx,[eax+70]
    "Prince of Persia.exe"+34DAB5: 89 4C 24 10              -  mov [esp+10],ecx
    // ---------- DONE INJECTING  ----------
    "Prince of Persia.exe"+34DAB9: EB 08                    -  jmp "Prince of Persia.exe"+34DAC3
    "Prince of Persia.exe"+34DABB: C7 44 24 10 00 00 00 00  -  mov [esp+10],00000000
    "Prince of Persia.exe"+34DAC3: 8D 7C 24 10              -  lea edi,[esp+10]
    "Prince of Persia.exe"+34DAC7: 8D 74 24 14              -  lea esi,[esp+14]
    "Prince of Persia.exe"+34DACB: E8 30 74 D2 FF           -  call "Prince of Persia.exe"+74F00
    "Prince of Persia.exe"+34DAD0: 8B 7D 08                 -  mov edi,[ebp+08]
    "Prince of Persia.exe"+34DAD3: 8B 37                    -  mov esi,[edi]
    "Prince of Persia.exe"+34DAD5: 8B C6                    -  mov eax,esi
    "Prince of Persia.exe"+34DAD7: E8 74 04 01 00           -  call "Prince of Persia.exe"+35DF50
    "Prince of Persia.exe"+34DADC: 8B 17                    -  mov edx,[edi]
    }

     

     

    P.P.S.

    Про dxwnd узнал на пред-предпоследнем стриме Руслана, а так, в окне ломал. Хардкор, етить его +)

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

     

    Выкладываю два скрипта (ничего не делающих), в которых есть адрес функций, которые работают с этим значением.

     

    Скрытый текст
    
    { Game   : Prince of Persia.exe
      Version: 
      Date   : 2017-01-09
      Author : SergBrNord
    
      This script does blah blah blah
    }
    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    
     
     
    aobscanmodule(WTF,Prince of Persia.exe,8B 0D 08 9A 10 01 F3) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
    
    code:
      mov ecx,["Prince of Persia.exe"+D09A08]
      jmp return
    
    WTF:
      jmp code
      nop
    return:
    registersymbol(WTF)
    
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    WTF:
      db 8B 0D 08 9A 10 01
    
    unregistersymbol(WTF)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "Prince of Persia.exe"+10BFDB
    
    "Prince of Persia.exe"+10BFCA: CC                       -  int 3 
    "Prince of Persia.exe"+10BFCB: CC                       -  int 3 
    "Prince of Persia.exe"+10BFCC: CC                       -  int 3 
    "Prince of Persia.exe"+10BFCD: CC                       -  int 3 
    "Prince of Persia.exe"+10BFCE: CC                       -  int 3 
    "Prince of Persia.exe"+10BFCF: CC                       -  int 3 
    "Prince of Persia.exe"+10BFD0: 83 EC 18                 -  sub esp,18
    "Prince of Persia.exe"+10BFD3: A1 0C 9A 10 01           -  mov eax,["Prince of Persia.exe"+D09A0C]
    "Prince of Persia.exe"+10BFD8: 56                       -  push esi
    "Prince of Persia.exe"+10BFD9: 8B F1                    -  mov esi,ecx
    // ---------- INJECTING HERE ----------
    "Prince of Persia.exe"+10BFDB: 8B 0D 08 9A 10 01        -  mov ecx,["Prince of Persia.exe"+D09A08]
    // ---------- DONE INJECTING  ----------
    "Prince of Persia.exe"+10BFE1: F3 0F 7E 86 94 00 00 00  -  movq xmm0,[esi+00000094]
    "Prince of Persia.exe"+10BFE9: 89 4C 24 04              -  mov [esp+04],ecx
    "Prince of Persia.exe"+10BFED: 8B C8                    -  mov ecx,eax
    "Prince of Persia.exe"+10BFEF: 25 FF FF FF 7F           -  and eax,7FFFFFFF
    "Prince of Persia.exe"+10BFF4: 89 44 24 08              -  mov [esp+08],eax
    "Prince of Persia.exe"+10BFF8: DF 6C 24 04              -  fild qword ptr [esp+04]
    "Prince of Persia.exe"+10BFFC: 81 E1 00 00 00 80        -  and ecx,80000000
    "Prince of Persia.exe"+10C002: 89 4C 24 08              -  mov [esp+08],ecx
    "Prince of Persia.exe"+10C006: 8B 8E 90 00 00 00        -  mov ecx,[esi+00000090]
    "Prince of Persia.exe"+10C00C: C7 44 24 04 00 00 00 00  -  mov [esp+04],00000000
    }

     

     

    Скрытый текст
    
    { Game   : Prince of Persia.exe
      Version: 
      Date   : 2017-01-09
      Author : SergBrNord
    
      This script does blah blah blah
    }
    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    
     
     
    aobscanmodule(WTF2,Prince of Persia.exe,89 4E 18 DC 0D 20 38 01 01) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
    
    code:
      mov [esi+18],ecx
      fmul qword ptr [01013820]
      jmp return
    
    WTF2:
      jmp code
      nop
      nop
      nop
      nop
    return:
    registersymbol(WTF2)
    
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    WTF2:
      db 89 4E 18 DC 0D 20 38 01 01
    
    unregistersymbol(WTF2)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "Prince of Persia.exe"+59088
    
    "Prince of Persia.exe"+5906F: 89 54 24 0C              -  mov [esp+0C],edx
    "Prince of Persia.exe"+59073: 85 C0                    -  test eax,eax
    "Prince of Persia.exe"+59075: 7F 0A                    -  jg "Prince of Persia.exe"+59081
    "Prince of Persia.exe"+59077: 7C 04                    -  jl "Prince of Persia.exe"+5907D
    "Prince of Persia.exe"+59079: 85 C9                    -  test ecx,ecx
    "Prince of Persia.exe"+5907B: 77 04                    -  ja "Prince of Persia.exe"+59081
    "Prince of Persia.exe"+5907D: 33 C9                    -  xor ecx,ecx
    "Prince of Persia.exe"+5907F: 33 C0                    -  xor eax,eax
    "Prince of Persia.exe"+59081: DF 6C 24 08              -  fild qword ptr [esp+08]
    "Prince of Persia.exe"+59085: 89 46 1C                 -  mov [esi+1C],eax
    // ---------- INJECTING HERE ----------
    "Prince of Persia.exe"+59088: 89 4E 18                 -  mov [esi+18],ecx
    "Prince of Persia.exe"+5908B: DC 0D 20 38 01 01        -  fmul qword ptr ["Prince of Persia.exe"+C13820]
    // ---------- DONE INJECTING  ----------
    "Prince of Persia.exe"+59091: D9 54 24 08              -  fst dword ptr [esp+08]
    "Prince of Persia.exe"+59095: D9 56 38                 -  fst dword ptr [esi+38]
    "Prince of Persia.exe"+59098: D9 EE                    -  fldz 
    "Prince of Persia.exe"+5909A: D9 C9                    -  fxch st(1)
    "Prince of Persia.exe"+5909C: DF E9                    -  fucomip st(0),st(1)
    "Prince of Persia.exe"+5909E: DD D8                    -  fstp st(0)
    "Prince of Persia.exe"+590A0: 9F                       -  lahf 
    "Prince of Persia.exe"+590A1: F6 C4 44                 -  test ah,44
    "Prince of Persia.exe"+590A4: 7A 0C                    -  jp "Prince of Persia.exe"+590B2
    "Prince of Persia.exe"+590A6: 0F 57 C0                 -  xorps xmm0,xmm0
    }

     

     

    Статический адрес для steam-версии: "Prince of Persia.exe"+D09A08

     

    Ссылка на сохранения

  10. Ну и ладно =)

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

  11. Всем привет!

    Пытаюсь ломать Prince of Persia: The Two Thrones. В данный момент работаю над количеством песка и таймером реверса. Но вот незадача - значения находятся, прекрасно морозятся, но вот при попытке найти инструкции, которые обращаются к этим адресам - пустой вывод. Ломал её кто-нибудь раньше и как?

     

    P.S.

    Здоровье нашлось и сломалось просто прекрасно.

  12. Не с той игры ты начал. Надо было с "Prince of Persia: The Sands of Time" начинать. "Warrior Within" - маловразумительная, забагованная и несбалансированная хрень. Процентов 20 прошёл, понял что не нервов не хватит и полез на GHK за лекарством для них =)

  13. 6 часов назад, LIRW сказал:

    Вот скрипт фильтра чела с СЕ форума.

    Тоже видел. Может кто объяснить, как он работает? Там столько объявлений и переменных намешано, что он стал полностью нечитабельным.

  14. Всем привет!

    Может кто-нибудь помочь с выходом на здоровье персонажа в "The Bureau: XCOM Declassified"? У меня игра практически сразу падает при подключении к ней отладчика.

    Всё что смог сделать - бесконечные патроны.

    Таблица

  15. Кто-нибудь взламывал в этой игре выносливость?

    Пробовал неоднократно. При отсеивании остаются 2 динамических значения, отвечающих за камеру и одно статическое, отвечающее за отрисовку шкалы.

     

    P.S.

    Т.к. игра мало отличается от 4 части, думаю можно рассмотреть процесс и на Saints Row 4.

  16. А нету там свободных регистров; вообще =)

     

    И как я про то, что выгрузить можно, не подумал...

  17. Скрытый текст
    
    { Game   : TimeShift.Exe
      Version: 
      Date   : 2016-07-05
      Author : SergBrNord
    }
    
    [ENABLE]
    
    aobscanmodule(AMMO,TimeShift.Exe,F3 0F 10 40 08 0F 2F 05 * * * * 76 04 33 FF) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
    
    
    code:
      movss xmm0,[eax+08]
      jmp return
    
    AMMO:
      jmp newmem
    return:
    registersymbol(AMMO)
    
    [DISABLE]
    
    AMMO:
      db F3 0F 10 40 08
    
    unregistersymbol(AMMO)
    dealloc(newmem)

     

    Цитата

    Как поместить значение в структуру, имея указатель на другую структуру с ним?

     

  18. Есть структура, Выглядит так:

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

    08 - общее количество патронов

    0С - патроны в обойме

     

    kiss_22kb.1467725209.png

     

    Перед этими значениями есть указатель:

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

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

    08 - общее количество патронов

    14 - количество патронов в обойме

     

    kiss_22kb.1467725284.png

    Собственно, как это сделать?

  19. Посмотрел на форматирование темы и кода, и взял на себя смелость немного поправить форматирование кода и собрать его в одно сообщение.

     

    13 характеристик героя

    Скрытый текст
    
    { Game   : KB.exe  
      Version:   
      Date   : 2016-01-18  
      Author : Garik66 
      
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(WindowCharacter,KB.exe,8B 2C 81 89 6C 24 18) // should be unique
    alloc(newmem,$4000)
    
    label(code)
    label(return)
    label(XAR1)
    registersymbol(XAR1)
    label(XAR2)
    registersymbol(XAR2)
    label(XAR3)
    registersymbol(XAR3)
    label(XAR4)
    registersymbol(XAR4)
    label(XAR5)
    registersymbol(XAR5)
    label(XAR6)
    registersymbol(XAR6)
    label(XAR7)
    registersymbol(XAR7)
    label(XAR8)
    registersymbol(XAR8)
    label(XAR9)
    registersymbol(XAR9)
    label(XAR10)
    registersymbol(XAR10)
    label(XAR11)
    registersymbol(XAR11)
    label(XAR12)
    registersymbol(XAR12)
    label(XAR13)
    registersymbol(XAR13)
    registersymbol(WindowCharacter)
    
    newmem:  
    	push eax  
    	mov eax,[edi+04]  
    	cmp [eax+14],61747461  // attack  
    	jne @f  
    	cmp [eax+18],00006B63  
    	jne @f  
    	mov [XAR1],ecx
    	
    @@:  
    	cmp [eax+14],6B6F6F62  // booksize  
    	jne @f  
    	cmp [eax+18],657A6973  
    	jne @f  
    	mov [XAR2],ecx
    	
    @@:  
    	cmp [eax+14],73797263  // crystals  
    	jne @f  
    	cmp [eax+18],736C6174  
    	jne @f  
    	mov [XAR3],ecx
    	
    @@:  
    	cmp [eax+14],65666564  // defense  
    	jne @f  
    	cmp [eax+18],0065736E  
    	jne @f  
    	mov [XAR4],ecx
    	
    @@: cmp [eax+14],65707865  // experience  
    	jne @f  
    	cmp [eax+18],6E656972  
    	jne @f  
    	cmp [eax+1c],00006563  
    	jne @f  
    	mov [XAR5],ecx
    
    @@: cmp [eax+14],65746E69  // intellect  
    	jne @f  
    	cmp [eax+18],63656C6C  
    	jne @f  
    	cmp [eax+1c],00000074  
    	jne @f  
    	mov [XAR6],ecx
    	
    @@: cmp [eax+14],6461656C  // leadership  
    	jne @f  
    	cmp [eax+18],68737265  
    	jne @f  
    	cmp [eax+1c],00007069  
    	jne @f  
    	mov [XAR7],ecx
    
    @@: cmp [eax+14],616E616D  // mana  
    	jne @f  
    	mov [XAR8],ecx
    	
    @@: cmp [eax+14],656E6F6D  // money  
    	jne @f  
    	cmp byte ptr [eax+18],79  
    	jne @f  
    	mov [XAR9],ecx
    
    @@: cmp [eax+14],65676172  // rage  
    	jne @f  
    	mov [XAR10],ecx
    	
    @@: cmp [eax+14],656E7572  // rune_magic  
    	jne @f  
    	cmp [eax+18],67616D5F  
    	jne @f  
    	cmp [eax+1c],00006369  
    	jne @f  
    	mov [XAR11],ecx
    	
    @@: cmp [eax+14],656E7572  // rune_might  
    	jne @f  
    	cmp [eax+18],67696D5F  
    	jne @f  
    	cmp [eax+1c],00007468  
    	jne @f  
    	mov [XAR12],ecx
    	
    @@: cmp [eax+14],656E7572  // rune_mind  
    	jne code  
    	cmp [eax+18],6E696D5F  
    	jne code  
    	cmp [eax+1c],00000064  
    	jne code  
    	mov [XAR13],ecx
    	
    code:  
    	pop eax  
    	mov ebp,[ecx+eax*4]  
    	mov [esp+18],ebp  
    	jmp return
    	
    	XAR1:
    	  dd 0
    	XAR2:
    	  dd 0
    	XAR3:
    	  dd 0
    	XAR4:
    	  dd 0
    	XAR5:
    	  dd 0
    	XAR6:
    	  dd 0
    	XAR7:
    	  dd 0
    	XAR8:
    	  dd 0
    	XAR9:
    	  dd 0
    	XAR10:
    	  dd 0
    	XAR11:
    	  dd 0 
    	XAR12:
    	  dd 0
    	XAR13:
    	  dd 0
    	
    WindowCharacter:  
      jmp newmem  
      nop  
      nop
    
    return:
    	
    [DISABLE]
    WindowCharacter:  
      db 8B 2C 81 89 6C 24 18
    	
    	
    unregistersymbol(XAR1)
    unregistersymbol(XAR2)
    unregistersymbol(XAR3)
    unregistersymbol(XAR4)
    unregistersymbol(XAR5)
    unregistersymbol(XAR6)
    unregistersymbol(XAR7)
    unregistersymbol(XAR8)
    unregistersymbol(XAR9)
    unregistersymbol(XAR10)
    unregistersymbol(XAR11)
    unregistersymbol(XAR12)
    unregistersymbol(XAR13)
    unregistersymbol(WindowCharacter)
    dealloc(newmem)
    
    
    {
    // ORIGINAL CODE - INJECTION POINT: "KB.exe"+465A4
    "KB.exe"+46587: 8B F8              -  mov edi,eax
    "KB.exe"+46589: 85 FF              -  test edi,edi
    "KB.exe"+4658B: 0F 84 6D FF FF FF  -  je KB.exe+464FE
    "KB.exe"+46591: 8B 74 24 3C        -  mov esi,[esp+3C]
    "KB.exe"+46595: 56                 -  push esi
    "KB.exe"+46596: 8B CF              -  mov ecx,edi
    "KB.exe"+46598: E8 A3 79 1E 00     -  call KB.exe+22DF40
    "KB.exe"+4659D: 85 C0              -  test eax,eax
    "KB.exe"+4659F: 7C 0C              -  jnge KB.exe+465AD
    "KB.exe"+465A1: 8B 4F 0C           -  mov ecx,[edi+0C]
    // ---------- INJECTING HERE ----------
    "KB.exe"+465A4: 8B 2C 81           -  mov ebp,[ecx+eax*4]
    "KB.exe"+465A7: 89 6C 24 18        -  mov [esp+18],ebp
    // ---------- DONE INJECTING  ----------
    "KB.exe"+465AB: EB 06              -  jmp KB.exe+465B3
    "KB.exe"+465AD: 89 5C 24 18        -  mov [esp+18],ebx
    "KB.exe"+465B1: 8B EB              -  mov ebp,ebx
    "KB.exe"+465B3: 0F B6 16           -  movzx edx,byte ptr [esi]
    "KB.exe"+465B6: 8B 44 24 1C        -  mov eax,[esp+1C]
    "KB.exe"+465BA: 52                 -  push edx
    "KB.exe"+465BB: E8 D0 AE 00 00     -  call KB.exe+51490
    "KB.exe"+465C0: 84 C0              -  test al,al
    "KB.exe"+465C2: 0F 84 E4 00 00 00  -  je KB.exe+466AC
    "KB.exe"+465C8: 85 ED              -  test ebp,ebp
    }

     

     

    Бесконечные ОД

    Скрытый текст
    
    { Game   : KB.exe  
      Version:   
      Date   : 2016-01-20  
      Author : Garik66  
     
      This script does blah blah blah
     }
     
    [ENABLE]
    
    aobscanmodule(InfiniteMoveUnit,KB.exe,29 41 14 83 79 14 00) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    registersymbol(InfiniteMoveUnit)
    
    newmem:  
    	cmp [ecx+1cc],1  
    	jne code  
    	xor eax,eax
    	
    code:  
    	sub [ecx+14],eax  
    	cmp dword ptr [ecx+14],00  
    	jmp return
    	
    InfiniteMoveUnit:  
      jmp newmem  
      nop  
      nop
    
    return:
    
    [DISABLE]
    InfiniteMoveUnit:
      db 29 41 14 83 79 14 00
      
      
    unregistersymbol(InfiniteMoveUnit)
    dealloc(newmem)
    
    
    {
    // ORIGINAL CODE - INJECTION POINT: "KB.exe"+5E754
    "KB.exe"+5E732: 74 1A                       -  je KB.exe+5E74E
    "KB.exe"+5E734: 8B 17                       -  mov edx,[edi]
    "KB.exe"+5E736: 8B 82 60 24 01 00           -  mov eax,[edx+00012460]
    "KB.exe"+5E73C: 8B 4C 24 38                 -  mov ecx,[esp+38]
    "KB.exe"+5E740: 8B 4C B1 FC                 -  mov ecx,[ecx+esi*4-04]
    "KB.exe"+5E744: 50                          -  push eax
    "KB.exe"+5E745: 8B 44 24 7C                 -  mov eax,[esp+7C]
    "KB.exe"+5E749: E8 C2 8F 10 00              -  call KB.exe+167710
    "KB.exe"+5E74E: 8B 53 08                    -  mov edx,[ebx+08]
    "KB.exe"+5E751: 8B 4A 70                    -  mov ecx,[edx+70]
    // ---------- INJECTING HERE ----------
    "KB.exe"+5E754: 29 41 14                    -  sub [ecx+14],eax
    "KB.exe"+5E757: 83 79 14 00                 -  cmp dword ptr [ecx+14],00
    // ---------- DONE INJECTING  ----------
    "KB.exe"+5E75B: 7D 0D                       -  jnl KB.exe+5E76A
    "KB.exe"+5E75D: 8B 43 08                    -  mov eax,[ebx+08]
    "KB.exe"+5E760: 8B 48 70                    -  mov ecx,[eax+70]
    "KB.exe"+5E763: C7 41 14 00 00 00 00        -  mov [ecx+14],00000000
    "KB.exe"+5E76A: 8B 84 24 90 00 00 00        -  mov eax,[esp+00000090]
    "KB.exe"+5E771: 33 F6                       -  xor esi,esi
    "KB.exe"+5E773: 3B C6                       -  cmp eax,esi
    "KB.exe"+5E775: 74 09                       -  je KB.exe+5E780
    "KB.exe"+5E777: 8B 53 08                    -  mov edx,[ebx+08]
    "KB.exe"+5E77A: 8B 4A 70                    -  mov ecx,[edx+70]
    } 

     

     

    Инициатива юнитов

    Скрытый текст
    
    {
     Game   : KB.exe
     Version:
     Date   : 2016-01-20
     Author : Garik66
    
     This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(InitiativeUnits,KB.exe,8B 18 55 8B 6C 24 10) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      cmp [eax+170],1
      jne code
      mov [eax],a
      
    code:
      mov ebx,[eax]
      push ebp
      mov ebp,[esp+10]
      jmp return
      
    InitiativeUnits:
      jmp newmem
      nop
      nop
      
    return:
    
    registersymbol(InitiativeUnits)
    
    [DISABLE]
    InitiativeUnits:
      db 8B 18 55 8B 6C 24 10
      
    
    unregistersymbol(InitiativeUnits)
    dealloc(newmem)
    
    
    {
    // ORIGINAL CODE - INJECTION POINT: "KB.exe"+1F345
    "KB.exe"+1F338: CC                    -  int 3 
    "KB.exe"+1F339: CC                    -  int 3 
    "KB.exe"+1F33A: CC                    -  int 3 
    "KB.exe"+1F33B: CC                    -  int 3 
    "KB.exe"+1F33C: CC                    -  int 3 
    "KB.exe"+1F33D: CC                    -  int 3 
    "KB.exe"+1F33E: CC                    -  int 3 
    "KB.exe"+1F33F: CC                    -  int 3 
    "KB.exe"+1F340: 8B 44 24 04           -  mov eax,[esp+04]
    "KB.exe"+1F344: 53                    -  push ebx
    // ---------- INJECTING HERE ----------
    "KB.exe"+1F345: 8B 18                 -  mov ebx,[eax]
    "KB.exe"+1F347: 55                    -  push ebp
    "KB.exe"+1F348: 8B 6C 24 10           -  mov ebp,[esp+10]
    // ---------- DONE INJECTING  ----------
    KB.exe"+1F34C: 56                    -  push esi
    "KB.exe"+1F34D: 8B 70 08              -  mov esi,[eax+08]
    "KB.exe"+1F350: 57                    -  push edi
    "KB.exe"+1F351: 8B FB                 -  mov edi,ebx
    "KB.exe"+1F353: 85 F6                 -  test esi,esi
    "KB.exe"+1F355: 74 17                 -  je KB.exe+1F36E
    "KB.exe"+1F357: 55                    -  push ebp
    "KB.exe"+1F358: 57                    -  push edi
    "KB.exe"+1F359: 53                    -  push ebx
    "KB.exe"+1F35A: 8B C6                 -  mov eax,esi
    } 

     

     

    Здоровье юнитов

    Скрытый текст
    
    {
     Game   : KB.exe
     Version:
     Date   : 2016-01-20
     Author : Garik66
    
     This script does blah blah blah 
    }
    
    [ENABLE]
    
    aobscanmodule(GodMod,KB.exe,8B 49 0C 2B CB) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    label(OHK)
    registersymbol(OHK)
    registersymbol(GodMod)
    
    newmem:
      cmp [ecx+1cc],1
      jne @f  
      push [ecx+28]    // 4 инструкции нужны, если скрипт не был подключен
      pop [ecx+0c]     // перед боем для восстановления кол-ва юнитов и их
      push [ecx+10c]   // ХР.
      pop [ecx+10]
      xor ebx,ebx
      jmp code
      
    @@:
      cmp [OHK],1
      jne code
      add ebx,#1000000 // Поставил 1000000 на всякий случай вдруг у врага
    				   // Армия с суммарной ХР очень большой.
      
    code:
      mov ecx,[ecx+0c]
      sub ecx,ebx
      jmp return
      
      OHK:
        dd 0
      
    GodMod:
      jmp newmem
      
    return:
    
    [DISABLE]
    GodMod:
      db 8B 49 0C 2B CB
      
    unregistersymbol(OHK)
    unregistersymbol(GodMod)
    dealloc(newmem)
    
    
    {
    // ORIGINAL CODE - INJECTION POINT: "KB.exe"+5A1CD
    "KB.exe"+5A1AC: 81 C2 00 00 C0 B4     -  add edx,B4C00000
    "KB.exe"+5A1B2: 89 57 08              -  mov [edi+08],edx
    "KB.exe"+5A1B5: 8B 46 70              -  mov eax,[esi+70]
    "KB.exe"+5A1B8: 83 C0 50              -  add eax,50
    "KB.exe"+5A1BB: 50                    -  push eax
    "KB.exe"+5A1BC: E8 7F 51 FC FF        -  call KB.exe+1F340
    "KB.exe"+5A1C1: 8B 4E 70              -  mov ecx,[esi+70]
    "KB.exe"+5A1C4: 8B 51 10              -  mov edx,[ecx+10]
    "KB.exe"+5A1C7: 89 57 14              -  mov [edi+14],edx
    "KB.exe"+5A1CA: 8B 4E 70              -  mov ecx,[esi+70]
    // ---------- INJECTING HERE ----------
    "KB.exe"+5A1CD: 8B 49 0C              -  mov ecx,[ecx+0C]
    "KB.exe"+5A1D0: 2B CB                 -  sub ecx,ebx
    // ---------- DONE INJECTING  ----------
    "KB.exe"+5A1D2: 89 4F 10              -  mov [edi+10],ecx
    "KB.exe"+5A1D5: 85 C9                 -  test ecx,ecx
    "KB.exe"+5A1D7: 7F 1D                 -  jg KB.exe+5A1F6
    "KB.exe"+5A1D9: 8D A4 24 00 00 00 00  -  lea esp,[esp+00000000]
    "KB.exe"+5A1E0: FF 4F 14              -  dec [edi+14]
    "KB.exe"+5A1E3: 8B 4F 14              -  mov ecx,[edi+14]
    "KB.exe"+5A1E6: FF 47 0C              -  inc [edi+0C]
    "KB.exe"+5A1E9: 85 C9                 -  test ecx,ecx
    "KB.exe"+5A1EB: 7E 09                 -  jle KB.exe+5A1F6
    "KB.exe"+5A1ED: 01 47 10              -  add [edi+10],eax
    }

     

     

     

    Ссылка на таблицу

    • Плюс 1
  20. В 04.04.2016в19:25, Garik66 сказал:

    SergBrNord, переписал скрипт (пока только для НР = 99), в самом начале побегал, по подбирал аптечки - вылетов нет.

    Проверил - падает. Проблема не в фильтрах или скрипте. Проблема в достаточно нестабильном движке.

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

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

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