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

Yuzia

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

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

  • Посещение

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

  1. 50 минут назад, Pigsy сказал:

    А если так - брать в руку разное оружие и отсеивать число его урона?

    Так а если (прям шанс выше 60%) при смене оружия, сам адрес меняется?
    И ты просто "найдешь" 0 значений.

  2. Спойлер

     

    52 минуты назад, Pigsy сказал:

    Как изменить на 999?

     

    Интересный вопрос.
    Вот 120,
    Берешь и меняешь на 999.

    Все очень просто :D

     

     

    39 минут назад, Pigsy сказал:

    Чтобы найти адрес - надо изменять число урона, а я не знаю, как это делать

    Вообще.
    есть 2 варианта.
     

    1. Найти адрес игрока, найти класс игрока, и уже в классе игрока найти его инвентарь и там найти это оружие | (или) найти класс игрока и найти класс оружия. 
      После чего (в классе нужного оружия) уже можно менять все что хочешь.
    2. Найти инструкцию что обращается к ХП игрока и к ХП других игроков/врагов. После сделать проверку (свой/чужой), и при нанесении урона ВРАГУ установить урон 999.
      // Этот вариант будет проще. Ибо работать будет для любого вида оружия и урона.
  3. 16 часов назад, nedix сказал:

    Вообще хочу подобное реализовать в мультиплеере.

    Если значения/данные хранятся на сервере. То это дохлый номер.
     

     

    16 часов назад, nedix сказал:

    newmem:
      mov [edi],eax
      pop edi
      xor al,al

    code:
      mov [edi],eax
      pop edi
      xor al,al
      jmp return

    Так ты же ничего не поменял. Оно просто взяло и повторило то что и должно было быть сделано.
    К примеру.
    Если бы ты сделал:

    newmem:
      add eax, #100
      mov [edi],eax
      pop edi
      xor al,al

    Вот тогда, может быть, ты бы что-то получил.

  4. Доброе утро день всем.
    // Хотя кому как. Я только недавно проснулся.

    На днях, взламывал игру [Son of Bitch Witch]
    Точнее использовал на практике свои (скудные, но все же) навыки.

    На данный момент, имеется небольшая таблица:
    2018_07_25_142443.png

    Таблица простенькая. На некоторые вещи проверки пока-что не стал делать. (типо HP, MANA, Rage (ака ярость), Деньги, Урон. А ну и для боссов похоже инструкция взята отдельно.) позже сделаю еще варианты что бы можно было и для игроков фильтровать.
    Цель с которой я создал тему (как можно догадаться из названия) попросить об оптимизации.
    зачем? - спросите вы. Хочу посмотреть как на это (чудо) посмотрят другие люди, оценят, укажут на ошибки и прочее. Возможно скорее всего, вам понадобится игра для этого, так что, можете написать в ЛС, я кину игру. Если не надо - еще лучше.

    А и еще пару слов про игру. Некоторые значения (по типу HP) немного ... зашифрованные что ли? Потому-что я их искал в типе float,double,4byte  - и они не являются обычными значениями (обычно идет так: 100 хп == 100.0:d;100:s;100:4 (флоат вроде буквой s позначается же?) а они были что-то типо: 1.225252525:d == 100 хп, 5234324600:4 (и в 4-байтном менялось, обычно, только последняя часть значения. т.е. если 100 хп =12345600, то 0 хп == 12345500; Это адрес?) а на счет флоата .... не помню.

    Игра очень вые....тая, и там овер9999+ проверок и всяких инструкциях на HP, потому его немного не удобно "ловить" ибо
    во-первых, игра тупит.
    во-вторых, игра спамит ошибкой и самоликвидируется. (ор что?)

    а и тут сразу ОЧЕНЬ важный вопрос. (Прямо вопрос Жизни и Взлома)
    Через отладчик (тот что ловит инструкции что обращаются к адресам и не только) можно ли делать так, что бы некоторые инструкции он тупо не ловил?
    Например, в этой игре, как я говорит чуточку ранее, на ХП есть множество проверок (аля cmp [edx+xxxxxx],01 и аналогичные и их может быть по штук 20. А выполняются они чуть ли не раз 10 в секунду. За пару минут может до 20К раз эта инструкция сплыть) естественно из за этого игра жутко лагает, тупит и (как я говорил ранее) вылетает.
    Хотелось бы пунктик "не считывать/отлавливать данную инструкцию" есть чет типо такого? Или может плагин какой есть для этого?

    Такс, вернемся к оптимизации.
    Ниже я опишу отдельно мои скрипты, а также приложу сам lolwhatitis.ct 
    Скорее всего не приложу. Ибо я только что увидел что нельзя приложить файл... а заливать куда-либо чет не хочется. Разве что в Диске пните я кину фулл пак скриптов. (но это не точно)

    Но перед этим, хотелось что бы кто-то подсказал такой момент:
    Как можно заметить со скрина (выше) у меня есть скрипт на "Бессмертие + OHK" (это один из немногих где есть проверка свой/чужой, правда... я взял значение что может меняться потому слетает в некоторых случаях (не по середине игры а именно либо работает всю игру, либо не пашет всю игру.). Так что надо переделать... но это совсем другая история.)

    А также "Только Бессмертие" и "Только One Hit - One Kill"
    Так как я не могу инжектить в одно и то же место 2 и более скрипта (не могу же?) то мне бы хотелось сделать что-то типо "выбора":
     

    Спойлер


    [X] "Бессмертие && OHK" ---> (и в этой же таблице, строчкой ниже) "Settings" = "0/1/2" // если 0 - онли бессмертие, если 1 - онли OHK, если 3 - то и то и то. 
    //[X] - типо активация
    Подскажите как это сделать, а то видел в таблицах а как - не шарю.
     
    //Я думаю это выделяется память под значение (типо: push edx (если он = "0" и нигде не юзается)
    //и делается проверка, типо: если 0 то выполняем эту часть кода, если 1 то эту и тд. 


    На счет этого вроде бы все.
    На счет оптимизации самих скриптов.
    Гляньте, посмотрите и, кому не лень, укажите на косяки, недочёты или как можно было бы сделать лучше, проще или эффективнее скрипт(ы) и тд и тп. 


    А вот и сами скрипты написанные на кооленке лежа на голове, на коленке.

    Скрипт на Увеличение Макс. ХП:

    Спойлер
    
    { Game   : game.exe
      Version:
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(max_hp,game.exe,0F BF 8F A4 02 00 00 0F) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov word ptr [edi+000002A4],#1000 // Самый оригинальный код в моей жизни. 
                                        //Кстати, а тут можно выводить вместо #1000, скажем "#{value}", а само значение уже указывать непосредственно в самой таблцие. 
                                        //А то что я как [CENSORED] буду 100500 раз скрипты переписывать?
    code:
      movsx ecx,word ptr [edi+000002A4] // такс, а movsx на сколько я понял, работает с строкой с отображаемым ХП, и она ее просто добавляет к ней значение и "растягивает".
      jmp return
    
    max_hp:
      jmp newmem
      nop
      nop
    return:
    registersymbol(max_hp)
    
    [DISABLE]
    
    max_hp:
      db 0F BF 8F A4 02 00 00
    
    unregistersymbol(max_hp)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+CB781
    
    "game.exe"+CB757: 89 45 98                 -  mov [ebp-68],eax
    "game.exe"+CB75A: 8B 85 68 01 00 00        -  mov eax,[ebp+00000168]
    "game.exe"+CB760: 89 4D DC                 -  mov [ebp-24],ecx
    "game.exe"+CB763: 8D 4D 8B                 -  lea ecx,[ebp-75]
    "game.exe"+CB766: 68 4C 49 F3 00           -  push game.exe+D9494C
    "game.exe"+CB76B: 89 7D E8                 -  mov [ebp-18],edi
    "game.exe"+CB76E: 89 45 B8                 -  mov [ebp-48],eax
    "game.exe"+CB771: E8 5A 3F F4 FF           -  call game.exe+F6D0
    "game.exe"+CB776: 89 5D FC                 -  mov [ebp-04],ebx
    "game.exe"+CB779: F2 0F 10 8E 30 02 00 00  -  movsd xmm1,[esi+00000230]
    // ---------- INJECTING HERE ----------
    "game.exe"+CB781: 0F BF 8F A4 02 00 00     -  movsx ecx,word ptr [edi+000002A4]
    // ---------- DONE INJECTING  ----------
    "game.exe"+CB788: 0F 28 C1                 -  movaps xmm0,xmm1
    "game.exe"+CB78B: F2 0F 59 05 C0 A3 F3 00  -  mulsd xmm0,[game.exe+D9A3C0]
    "game.exe"+CB793: 0F 28 D1                 -  movaps xmm2,xmm1
    "game.exe"+CB796: F2 0F 59 15 78 AC F3 00  -  mulsd xmm2,[game.exe+D9AC78]
    "game.exe"+CB79E: F2 0F 2C C0              -  cvttsd2si eax,xmm0
    "game.exe"+CB7A2: 89 45 A8                 -  mov [ebp-58],eax
    "game.exe"+CB7A5: B8 67 66 66 66           -  mov eax,nvd3dum.dll+D6667
    "game.exe"+CB7AA: F7 E9                    -  imul ecx
    "game.exe"+CB7AC: C1 FA 03                 -  sar edx,03
    "game.exe"+CB7AF: 8B C2                    -  mov eax,edx
    }

     

    Скрипт на выдачу 1000 ХП при использовании зелья здоровья:

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(add_poison_hp,game.exe,66 89 86 A6 02 00 00 66 83) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov ax,#1000 // В идеале, я бы этот скрипт и еще пару совместил в одно. Что бы не делать 1000 скриптов с практически одним эффектом.
      jmp code     // ax ... помните я говорил что меняется только последняя часть значения здоровья? а вот ax вам все и объяснит (я же прав да? если да - похвалите меня Я ведь такой ми-ми-ми :d)
    code:
      mov [esi+000002A6],ax // по адресу "АДРЕС_ХП_ИГРОКА-2A6", находится указатель. Тут бы совет кулхацкера. Что бы пояснил как это работает и как "работать" с таким адресом. Я например сравнить даже ХП не могу игроков. Они в адресах. :c А это же много таких указателей может быть (на вещи, инвентарь статы и тд). #HELP
      jmp return
    
    add_poison_hp:
      jmp newmem
      nop
      nop
    return:
    registersymbol(add_poison_hp)
    
    [DISABLE]
    
    add_poison_hp:
      db 66 89 86 A6 02 00 00
    
    unregistersymbol(add_poison_hp)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+4F6221
    
    "game.exe"+4F61FC: 8D 57 01                       -  lea edx,[edi+01]
    "game.exe"+4F61FF: 90                             -  nop 
    "game.exe"+4F6200: 8B 74 BD CC                    -  mov esi,[ebp+edi*4-34]
    "game.exe"+4F6204: 85 F6                          -  test esi,esi
    "game.exe"+4F6206: 0F 84 82 0C 00 00              -  je game.exe+4F6E8E
    "game.exe"+4F620C: 0F B7 8E A6 02 00 00           -  movzx ecx,word ptr [esi+000002A6]
    "game.exe"+4F6213: 0F BF C1                       -  movsx eax,cx
    "game.exe"+4F6216: 89 45 E4                       -  mov [ebp-1C],eax
    "game.exe"+4F6219: 66 8B 44 BD C4                 -  mov ax,[ebp+edi*4-3C]
    "game.exe"+4F621E: 66 03 C1                       -  add ax,cx
    // ---------- INJECTING HERE ----------
    "game.exe"+4F6221: 66 89 86 A6 02 00 00           -  mov [esi+000002A6],ax
    // ---------- DONE INJECTING  ----------
    "game.exe"+4F6228: 66 83 F8 01                    -  cmp ax,01
    "game.exe"+4F622C: 7D 07                          -  jnl game.exe+4F6235
    "game.exe"+4F622E: 66 89 96 A6 02 00 00           -  mov [esi+000002A6],dx
    "game.exe"+4F6235: 0F B7 86 A4 02 00 00           -  movzx eax,word ptr [esi+000002A4]
    "game.exe"+4F623C: 66 39 86 A6 02 00 00           -  cmp [esi+000002A6],ax
    "game.exe"+4F6243: 7E 07                          -  jle game.exe+4F624C
    "game.exe"+4F6245: 66 89 86 A6 02 00 00           -  mov [esi+000002A6],ax
    "game.exe"+4F624C: 6A 0A                          -  push 0A
    "game.exe"+4F624E: C7 85 60 01 00 00 00 00 00 00  -  mov [ebp+00000160],00000000
    "game.exe"+4F6258: 8D 8D 50 01 00 00              -  lea ecx,[ebp+00000150]
    }

     

    Скрипт на бессмертие+OHK: (3 в 1 - акция :D)

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(dmg_enemy,game.exe,66 29 9F A6 02 00 00 8B CE FF) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      //cmp [edi+0c],1 // просто закомментированный код. не обращайте внимания.
      //je code
      //cmp [edi+0c],24 
    
    // Это Бессмертие и OHK.
      cmp [edi+64],#10000 
      jne @f
      mov bx,#0
      jmp code
    
    @@:
     mov bx,1000
     jmp code
    
    code:
      sub [edi+000002A6],bx
      jmp return
    
    // Не стал показывать 3 разных скрипта, решил показать все вариации в одном. (А так то. Там просто кусок кода какой-либо убирается и все)
    //Это ТОЛЬКО бессмертие:
      cmp [edi+64],#10000 // т.е. проверяем 10000 ли
      jne code          // если нет - валим в код
      mov bx,#0        // если да - bx == 0
      jmp code        // валим в код
    
    code:
      sub [edi+000002A6],bx  // Х - 0 = Х
      jmp return
    // end script
    // а это ТОЛЬКО OHK
    newmem:
      cmp [edi+64],#10000
      jne @f
      jmp code
    
    @@:
     mov bx,#1000
     jmp code
    // end script
    
    dmg_enemy:
      jmp newmem
      nop
      nop
    return:
    registersymbol(dmg_enemy)
    
    [DISABLE]
    
    dmg_enemy:
      db 66 29 9F A6 02 00 00
    
    unregistersymbol(dmg_enemy)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+2BAFAC
    
    "game.exe"+2BAF83: 68 B0 D3 0A 02                 -  push game.exe+D8D3B0
    "game.exe"+2BAF88: E8 43 92 D7 FF                 -  call game.exe+341D0
    "game.exe"+2BAF8D: 84 C0                          -  test al,al
    "game.exe"+2BAF8F: 75 18                          -  jne game.exe+2BAFA9
    "game.exe"+2BAF91: 8B 4F 18                       -  mov ecx,[edi+18]
    "game.exe"+2BAF94: 68 2C 01 00 00                 -  push 0000012C
    "game.exe"+2BAF99: 68 B0 D3 0A 02                 -  push game.exe+D8D3B0
    "game.exe"+2BAF9E: 8B 89 D4 0F 00 00              -  mov ecx,[ecx+00000FD4]
    "game.exe"+2BAFA4: E8 A7 84 D7 FF                 -  call game.exe+33450
    "game.exe"+2BAFA9: FF 75 B4                       -  push [ebp-4C]
    // ---------- INJECTING HERE ----------
    "game.exe"+2BAFAC: 66 29 9F A6 02 00 00           -  sub [edi+000002A6],bx
    // ---------- DONE INJECTING  ----------
    "game.exe"+2BAFB3: 8B CE                          -  mov ecx,esi
    "game.exe"+2BAFB5: FF 75 C4                       -  push [ebp-3C]
    "game.exe"+2BAFB8: FF 75 C0                       -  push [ebp-40]
    "game.exe"+2BAFBB: FF 75 0C                       -  push [ebp+0C]
    "game.exe"+2BAFBE: 53                             -  push ebx
    "game.exe"+2BAFBF: 57                             -  push edi
    "game.exe"+2BAFC0: E8 8B 12 E2 FF                 -  call game.exe+DC250
    "game.exe"+2BAFC5: 8A 45 D7                       -  mov al,[ebp-29]
    "game.exe"+2BAFC8: 66 83 BF A6 02 00 00 01        -  cmp word ptr [edi+000002A6],01
    "game.exe"+2BAFD0: C7 87 F8 05 00 00 00 00 00 00  -  mov [edi+000005F8],00000000
    }

     

    Скрипт на выдачу маны после прохождения комнаты:
    // Игра - это карта с комнатами. Вы можете выходить и входить в другие. Новая комната дает вам 1 ману. Я просто словил это и решил влепить +100 маны за 1 раз. (100  маны хватит с головой)

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(addinfmana,game.exe,66 01 86 A8 02 00 00) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov ax,#100           // На счет маны не помню. Вроде бы она так же как и ХП было. т.е менялся только конец значения (ax есть, значит так и есть. Такие значения кстати тяжело (мне) искать, надо значение уменьшилось/увеличилось. А это, иногда, сложно реализовать, к примеру с ХП. Минус ХП - и ты сдох.) 
      jmp code
    code:
      add [esi+000002A8],ax
      jmp return
    
    addinfmana:
      jmp newmem
      nop
      nop
    return:
    registersymbol(addinfmana)
    
    [DISABLE]
    
    addinfmana:
      db 66 01 86 A8 02 00 00
    
    unregistersymbol(addinfmana)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+249C3A
    
    "game.exe"+249C20: 50                    -  push eax
    "game.exe"+249C21: 53                    -  push ebx
    "game.exe"+249C22: 56                    -  push esi
    "game.exe"+249C23: A1 54 A8 1A 01        -  mov eax,[game.exe+F4A854]
    "game.exe"+249C28: 33 C5                 -  xor eax,ebp
    "game.exe"+249C2A: 50                    -  push eax
    "game.exe"+249C2B: 8D 45 F4              -  lea eax,[ebp-0C]
    "game.exe"+249C2E: 64 A3 00 00 00 00     -  mov fs:[00000000],eax
    "game.exe"+249C34: 8B F1                 -  mov esi,ecx
    "game.exe"+249C36: 66 8B 45 08           -  mov ax,[ebp+08]
    // ---------- INJECTING HERE ----------
    "game.exe"+249C3A: 66 01 86 A8 02 00 00  -  add [esi+000002A8],ax
    // ---------- DONE INJECTING  ----------
    "game.exe"+249C41: B8 C7 00 00 00        -  mov eax,000000C7
    "game.exe"+249C46: 66 39 86 A8 02 00 00  -  cmp [esi+000002A8],ax
    "game.exe"+249C4D: 7E 69                 -  jle game.exe+249CB8
    "game.exe"+249C4F: 68 94 81 00 01        -  push game.exe+DA8194
    "game.exe"+249C54: 68 34 13 00 00        -  push 00001334
    "game.exe"+249C59: 68 CC 66 00 01        -  push game.exe+DA66CC
    "game.exe"+249C5E: 8D 4D 0B              -  lea ecx,[ebp+0B]
    "game.exe"+249C61: E8 6A 5A DC FF        -  call game.exe+F6D0
    "game.exe"+249C66: C7 45 FC 00 00 00 00  -  mov [ebp-04],00000000
    "game.exe"+249C6D: 83 7E 68 00           -  cmp dword ptr [esi+68],00
    }

     

    Скрипт без траты маны:

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(nospendmana,game.exe,66 89 87 A8 02 00 00 8B) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov ax,100 // ну тут все просто. Записываем сотку в ax и она как бы и не тратиться 
                 //(я чет так и не понял разницы что с # что без #. Одинаково вроде пашет... НУ или может я еще не столкнулся с моментом когда оно вместо значения 100 влепит 00000100. Было бы интересно посмотреть на это. такой БУМ и ты [CENSORED] с 00000100 маны.
      jmp code
    code:
      mov [edi+000002A8],ax // Эта шкура кстати, при одном использовании маны (хоть у тебя будет 100 маны, а ты заюзаешь только 5 очков) перезаписывала ее на 0. 
      jmp return
    
    nospendmana:
      jmp newmem
      nop
      nop
    return:
    registersymbol(nospendmana)
    
    [DISABLE]
    
    nospendmana:
      db 66 89 87 A8 02 00 00
    
    unregistersymbol(nospendmana)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+243C9A
    
    "game.exe"+243C73: 8D 4F 08                 -  lea ecx,[edi+08]
    "game.exe"+243C76: E8 A5 7D E1 FF           -  call game.exe+5BA20
    "game.exe"+243C7B: 03 D8                    -  add ebx,eax
    "game.exe"+243C7D: B8 01 00 00 00           -  mov eax,00000001
    "game.exe"+243C82: 3B D8                    -  cmp ebx,eax
    "game.exe"+243C84: 0F 4C D8                 -  cmovl ebx,eax
    "game.exe"+243C87: 66 29 9F A8 02 00 00     -  sub [edi+000002A8],bx
    "game.exe"+243C8E: 66 83 BF A8 02 00 00 00  -  cmp word ptr [edi+000002A8],00
    "game.exe"+243C96: 7D 09                    -  jnl game.exe+243CA1
    "game.exe"+243C98: 33 C0                    -  xor eax,eax
    // ---------- INJECTING HERE ----------
    "game.exe"+243C9A: 66 89 87 A8 02 00 00     -  mov [edi+000002A8],ax
    // ---------- DONE INJECTING  ----------
    "game.exe"+243CA1: 8B 86 9C 00 00 00        -  mov eax,[esi+0000009C]
    "game.exe"+243CA7: 85 C0                    -  test eax,eax
    "game.exe"+243CA9: 7E 26                    -  jle game.exe+243CD1
    "game.exe"+243CAB: 83 C0 FF                 -  add eax,-01
    "game.exe"+243CAE: 89 86 9C 00 00 00        -  mov [esi+0000009C],eax
    "game.exe"+243CB4: 75 1B                    -  jne game.exe+243CD1
    "game.exe"+243CB6: 8B 8D 70 FD FF FF        -  mov ecx,[ebp-00000290]
    "game.exe"+243CBC: 8B 01                    -  mov eax,[ecx]
    "game.exe"+243CBE: 03 85 74 FD FF FF        -  add eax,[ebp-0000028C]
    "game.exe"+243CC4: 50                       -  push eax
    }

     

    Скрипт на получение макс. кол-ва ярости при первом ударе
    //В игре есть ярость. Дается за получение урона или его нанесение (?). Может использоваться для нанесения "топовых" ударов. (аля Ульта только это удар с повышенным уроном или спец прием)
     

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(unlim_rage,game.exe,66 01 87 AC 02 00 00) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov ax,100        // Ярость кстати тоже странной была. значения от 0 до 99 было обычным. (т.е. оно имело формат значениях. А вот если значение доходило до отметки 100, превращалось в значение типа 656353 (примерно так). 
    code:
      add [edi+000002AC],ax 
      jmp return
    
    unlim_rage:
      jmp newmem
      nop
      nop
    return:
    registersymbol(unlim_rage)
    
    [DISABLE]
    
    unlim_rage:
      db 66 01 87 AC 02 00 00
    
    unregistersymbol(unlim_rage)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+249DF1
    
    "game.exe"+249DD2: 8B 45 EC              -  mov eax,[ebp-14]
    "game.exe"+249DD5: 3B 47 08              -  cmp eax,[edi+08]
    "game.exe"+249DD8: 74 D5                 -  je game.exe+249DAF
    "game.exe"+249DDA: 8B 70 18              -  mov esi,[eax+18]
    "game.exe"+249DDD: C6 45 FC 00           -  mov byte ptr [ebp-04],00
    "game.exe"+249DE1: 8D 4D F2              -  lea ecx,[ebp-0E]
    "game.exe"+249DE4: E8 17 7A DC FF        -  call game.exe+11800
    "game.exe"+249DE9: 8B 45 08              -  mov eax,[ebp+08]
    "game.exe"+249DEC: 03 C3                 -  add eax,ebx
    "game.exe"+249DEE: 0F AF C6              -  imul eax,esi
    // ---------- INJECTING HERE ----------
    "game.exe"+249DF1: 66 01 87 AC 02 00 00  -  add [edi+000002AC],ax
    // ---------- DONE INJECTING  ----------
    "game.exe"+249DF8: 0F B7 87 AA 02 00 00  -  movzx eax,word ptr [edi+000002AA]
    "game.exe"+249DFF: 66 39 87 AC 02 00 00  -  cmp [edi+000002AC],ax
    "game.exe"+249E06: 7E 07                 -  jle game.exe+249E0F
    "game.exe"+249E08: 66 89 87 AC 02 00 00  -  mov [edi+000002AC],ax
    "game.exe"+249E0F: C7 45 FC FF FF FF FF  -  mov [ebp-04],FFFFFFFF
    "game.exe"+249E16: 8D 4D F1              -  lea ecx,[ebp-0F]
    "game.exe"+249E19: E8 E2 79 DC FF        -  call game.exe+11800
    "game.exe"+249E1E: 8B 4D F4              -  mov ecx,[ebp-0C]
    "game.exe"+249E21: 64 89 0D 00 00 00 00  -  mov fs:[00000000],ecx
    "game.exe"+249E28: 59                    -  pop ecx
    }

     

    Без траты ярости:

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(rage_nofall,game.exe,66 89 87 AC 02 00 00 EB) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov ax,100 //ну... просто "как бы" не тратим ярость при использовании. 
    code:
      mov [edi+000002AC],ax
      jmp return
    
    rage_nofall:
      jmp newmem
      nop
      nop
    return:
    registersymbol(rage_nofall)
    
    [DISABLE]
    
    rage_nofall:
      db 66 89 87 AC 02 00 00
    
    unregistersymbol(rage_nofall)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+243C36
    
    "game.exe"+243C1B: 8B CE                    -  mov ecx,esi
    "game.exe"+243C1D: E8 3E 7F E1 FF           -  call game.exe+5BB60
    "game.exe"+243C22: 83 F8 01                 -  cmp eax,01
    "game.exe"+243C25: 74 18                    -  je game.exe+243C3F
    "game.exe"+243C27: 83 F8 03                 -  cmp eax,03
    "game.exe"+243C2A: 74 13                    -  je game.exe+243C3F
    "game.exe"+243C2C: 83 F8 02                 -  cmp eax,02
    "game.exe"+243C2F: 75 70                    -  jne game.exe+243CA1
    "game.exe"+243C31: 33 C0                    -  xor eax,eax
    "game.exe"+243C33: FF 47 58                 -  inc [edi+58]
    // ---------- INJECTING HERE ----------
    "game.exe"+243C36: 66 89 87 AC 02 00 00     -  mov [edi+000002AC],ax
    // ---------- DONE INJECTING  ----------
    "game.exe"+243C3D: EB 62                    -  jmp game.exe+243CA1
    "game.exe"+243C3F: 6A 00                    -  push 00
    "game.exe"+243C41: 8D 5F 08                 -  lea ebx,[edi+08]
    "game.exe"+243C44: 6A 6B                    -  push 6B
    "game.exe"+243C46: 8B CB                    -  mov ecx,ebx
    "game.exe"+243C48: E8 D3 7D E1 FF           -  call game.exe+5BA20
    "game.exe"+243C4D: 01 87 8C 02 00 00        -  add [edi+0000028C],eax
    "game.exe"+243C53: 8B CB                    -  mov ecx,ebx
    "game.exe"+243C55: 6A 00                    -  push 00
    "game.exe"+243C57: 68 98 00 00 00           -  push 00000098
    }

     

    Скрипт на выдачу большого кол-ва монет при поднятии любой монетки: 
    //выпадают часто. так что изи мани

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(add_money,game.exe,01 86 08 03 00 00) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov eax,#1000 // Вместо любой поднятой монеты мы получаем +1000 монет(денег).
      jmp code      //Не уверен нужен ли этот jmp тут, так как мы все равно дойдем до "code", но мне так спокойнее. :3 // Ну чисто технически, jmp же как бы и не влияет особо ни на что? Верно же? 
    // Законом не запрещено. jmp-лю где хочу.
    code:
      add [esi+00000308],eax
      jmp return
    
    add_money:
      jmp newmem
      nop
    return:
    registersymbol(add_money)
    
    [DISABLE]
    
    add_money:
      db 01 86 08 03 00 00
    
    unregistersymbol(add_money)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+249017
    
    "game.exe"+249000: 64 89 0D 00 00 00 00           -  mov fs:[00000000],ecx
    "game.exe"+249007: 59                             -  pop ecx
    "game.exe"+249008: 5F                             -  pop edi
    "game.exe"+249009: 5E                             -  pop esi
    "game.exe"+24900A: 8B E5                          -  mov esp,ebp
    "game.exe"+24900C: 5D                             -  pop ebp
    "game.exe"+24900D: C2 08 00                       -  ret 0008
    "game.exe"+249010: 8B 44 24 04                    -  mov eax,[esp+04]
    "game.exe"+249014: 56                             -  push esi
    "game.exe"+249015: 8B F1                          -  mov esi,ecx
    // ---------- INJECTING HERE ----------
    "game.exe"+249017: 01 86 08 03 00 00              -  add [esi+00000308],eax
    // ---------- DONE INJECTING  ----------
    "game.exe"+24901D: 81 BE 08 03 00 00 3F 42 0F 00  -  cmp [esi+00000308],000F423F
    "game.exe"+249027: 7E 0A                          -  jle game.exe+249033
    "game.exe"+249029: C7 86 08 03 00 00 3F 42 0F 00  -  mov [esi+00000308],000F423F
    "game.exe"+249033: 81 BE 08 03 00 00 0F 27 00 00  -  cmp [esi+00000308],0000270F
    "game.exe"+24903D: 7E 31                          -  jle game.exe+249070
    "game.exe"+24903F: 8B 4E 18                       -  mov ecx,[esi+18]
    "game.exe"+249042: 6A 00                          -  push 00
    "game.exe"+249044: 68 4C D7 FE 00                 -  push game.exe+D8D74C
    "game.exe"+249049: 8B 89 D4 0F 00 00              -  mov ecx,[ecx+00000FD4]
    "game.exe"+24904F: E8 7C B1 DE FF                 -  call game.exe+341D0
    }

     

    Без траты денег в магазе:
    //В этой игре есть магаз (ОГА) где же деньги еще тратить? Ну так это. Изи ловим халяву и берем все за 0 рублей золотых. Вот бы мне такой скрипт в реале :c
    А да кстати, подскажите как его апгрейднуть до уровень БОГ @Xipho ?
    Сейчас, если вещь стоит 100 золотых, а у тебя в кармане лаве меньше 100-ки, ты хрен его купишь. Даже если включен скрипт.
    Подскажите как сделать так, что бы даже если у тебя в кармане 0 золотых, ты мог купить чет в магазе. Буду благодарен.

     

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(infinity_money,game.exe,29 87 08 03 00 00) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov eax,#0  // ничего нового. Хотя, в идеале, если влепить -100, как пример,то - на - дает +, а значит можно набить мани... 
    //но зачем если есть первый скрипт? :c ... тогда в целях оптимизации их можно слить воедино? Интересный вопрос.
      jmp code
    code:
      sub [edi+00000308],eax
      jmp return
    
    infinity_money:
      jmp newmem
      nop
    return:
    registersymbol(infinity_money)
    
    [DISABLE]
    
    infinity_money:
      db 29 87 08 03 00 00
    
    unregistersymbol(infinity_money)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+247F26
    
    "game.exe"+247F04: 8D 45 D8                       -  lea eax,[ebp-28]
    "game.exe"+247F07: 8B 4F 18                       -  mov ecx,[edi+18]
    "game.exe"+247F0A: 6A 00                          -  push 00
    "game.exe"+247F0C: 6A 00                          -  push 00
    "game.exe"+247F0E: 50                             -  push eax
    "game.exe"+247F0F: E8 9C CF DF FF                 -  call game.exe+44EB0
    "game.exe"+247F14: C6 45 FC 01                    -  mov byte ptr [ebp-04],01
    "game.exe"+247F18: 8D 4D D8                       -  lea ecx,[ebp-28]
    "game.exe"+247F1B: E8 B0 90 DC FF                 -  call game.exe+10FD0
    "game.exe"+247F20: 8B 85 28 FB FF FF              -  mov eax,[ebp-000004D8]
    // ---------- INJECTING HERE ----------
    "game.exe"+247F26: 29 87 08 03 00 00              -  sub [edi+00000308],eax
    // ---------- DONE INJECTING  ----------
    "game.exe"+247F2C: 79 0A                          -  jns game.exe+247F38
    "game.exe"+247F2E: C7 87 08 03 00 00 00 00 00 00  -  mov [edi+00000308],00000000
    "game.exe"+247F38: F7 D8                          -  neg eax
    "game.exe"+247F3A: 50                             -  push eax
    "game.exe"+247F3B: 8D 45 C0                       -  lea eax,[ebp-40]
    "game.exe"+247F3E: 50                             -  push eax
    "game.exe"+247F3F: E8 3C EF E0 FF                 -  call game.exe+56E80
    "game.exe"+247F44: C6 45 FC 21                    -  mov byte ptr [ebp-04],21
    "game.exe"+247F48: 0F 57 C0                       -  xorps xmm0,xmm0
    "game.exe"+247F4B: F2 0F 11 04 24                 -  movsd [esp],xmm0
    }

     

     

    Без траты золота при стрельбе из посоха:

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(money_spend_posoh,game.exe,FF 8E 08 03 00 00) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      add [esi+00000308],#2 // Не ну этот скрипт я бы точно слил в одно... наверное. Кхм, если кратко, есть посох что стреляет золотом с увеличенным дамагом (без золота дамаг меньше) фича веселая, но... дорогая. А так, мы не только не теряем золото, а еще и получаем +1 золота. (ну можно было убрать dec.. или заменить его на inc но ... оптимизация для лохов! (говорит человек который просит его код оптимизировать...)
    code:
      dec [esi+00000308]
      jmp return
    
    money_spend_posoh:
      jmp newmem
      nop
    return:
    registersymbol(money_spend_posoh)
    
    [DISABLE]
    
    money_spend_posoh:
      db FF 8E 08 03 00 00
    
    unregistersymbol(money_spend_posoh)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+256750
    
    "game.exe"+256728: E8 33 45 E0 FF                 -  call game.exe+5AC60
    "game.exe"+25672D: C7 40 34 00 00 00 00           -  mov [eax+34],00000000
    "game.exe"+256734: C6 45 FC 01                    -  mov byte ptr [ebp-04],01
    "game.exe"+256738: 8D 4D D2                       -  lea ecx,[ebp-2E]
    "game.exe"+25673B: E8 C0 B0 DB FF                 -  call game.exe+11800
    "game.exe"+256740: 8B 75 E4                       -  mov esi,[ebp-1C]
    "game.exe"+256743: 8B 4D B4                       -  mov ecx,[ebp-4C]
    "game.exe"+256746: 66 8B 46 6C                    -  mov ax,[esi+6C]
    "game.exe"+25674A: 66 3B 41 40                    -  cmp ax,[ecx+40]
    "game.exe"+25674E: 75 12                          -  jne game.exe+256762
    // ---------- INJECTING HERE ----------
    "game.exe"+256750: FF 8E 08 03 00 00              -  dec [esi+00000308]
    // ---------- DONE INJECTING  ----------
    "game.exe"+256756: 56                             -  push esi
    "game.exe"+256757: E8 74 B8 E5 FF                 -  call game.exe+B1FD0
    "game.exe"+25675C: EB 04                          -  jmp game.exe+256762
    "game.exe"+25675E: C6 45 F2 00                    -  mov byte ptr [ebp-0E],00
    "game.exe"+256762: 6A 00                          -  push 00
    "game.exe"+256764: 8B CE                          -  mov ecx,esi
    "game.exe"+256766: E8 85 16 00 00                 -  call game.exe+257DF0
    "game.exe"+25676B: 84 C0                          -  test al,al
    "game.exe"+25676D: 74 06                          -  je game.exe+256775
    "game.exe"+25676F: 8B 07                          -  mov eax,[edi]
    }

     

    Скрипт на урон добивания +1000:
    //Урон добивания, когда ты ударил врага,  и он упал на пол. В этот момент ты можего попытаться его добить (обычно, добивание больнее бьет чем обычный удар.)

    И этот удар/урон идет отдельной инструкцией.

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(down_attack,game.exe,8B B7 A0 02 00 00) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov [edi+000002A0],#1000 //Да, урон от добивания идет отдельным навыком/скиллом и пихать в OHK я чет не стал. (не спрашивайте почему.) Вы главное покажите, на примере одного скрипта, как их можно сливать в одно, а я там если что пойму. А если нет - что мешает спросить еще раз? :3 (БАН мешает :c)
      jmp code
    code:
      mov esi,[edi+000002A0]
      jmp return
    
    down_attack:
      jmp newmem
      nop
    return:
    registersymbol(down_attack)
    
    [DISABLE]
    
    down_attack:
      db 8B B7 A0 02 00 00
    
    unregistersymbol(down_attack)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+25B8CE
    
    "game.exe"+25B8A2: 8D 45 F4              -  lea eax,[ebp-0C]
    "game.exe"+25B8A5: 64 A3 00 00 00 00     -  mov fs:[00000000],eax
    "game.exe"+25B8AB: 8B F9                 -  mov edi,ecx
    "game.exe"+25B8AD: 89 7D B0              -  mov [ebp-50],edi
    "game.exe"+25B8B0: 68 D8 6B 0C 02        -  push game.exe+DA6BD8
    "game.exe"+25B8B5: 68 50 03 00 00        -  push 00000350
    "game.exe"+25B8BA: 68 CC 66 0C 02        -  push game.exe+DA66CC
    "game.exe"+25B8BF: 8D 4D BE              -  lea ecx,[ebp-42]
    "game.exe"+25B8C2: E8 09 3E DB FF        -  call game.exe+F6D0
    "game.exe"+25B8C7: C7 45 FC 00 00 00 00  -  mov [ebp-04],00000000
    // ---------- INJECTING HERE ----------
    "game.exe"+25B8CE: 8B B7 A0 02 00 00     -  mov esi,[edi+000002A0]
    // ---------- DONE INJECTING  ----------
    "game.exe"+25B8D4: 85 F6                 -  test esi,esi
    "game.exe"+25B8D6: 0F 8E 0B 02 00 00     -  jng game.exe+25BAE7
    "game.exe"+25B8DC: 6A 25                 -  push 25
    "game.exe"+25B8DE: C7 45 E8 00 00 00 00  -  mov [ebp-18],00000000
    "game.exe"+25B8E5: 8D 4D D8              -  lea ecx,[ebp-28]
    "game.exe"+25B8E8: C7 45 EC 00 00 00 00  -  mov [ebp-14],00000000
    "game.exe"+25B8EF: 68 F0 6B 0C 02        -  push game.exe+DA6BF0
    "game.exe"+25B8F4: C7 45 EC 0F 00 00 00  -  mov [ebp-14],0000000F
    "game.exe"+25B8FB: C7 45 E8 00 00 00 00  -  mov [ebp-18],00000000
    "game.exe"+25B902: C6 45 D8 00           -  mov byte ptr [ebp-28],00
    }

     


    Зелье добивания == 1000 урона:

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(poison_down_attack_max,game.exe,01 81 A0 02 00 00) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov eax,#1000 // просто зелье дает +1000 к урону от добивания. Отдельно потому-что хотел вывести это все в отдельную группу "зелья".  
                    //Но это уже совсем другая история. Может быть стоит все зелья определенной категории лепить в один скрипт? (скажем, зелья ярости в скрипт с яростью и тд)
      jmp code
    code:
      add [ecx+000002A0],eax
      jmp return
    
    poison_down_attack_max:
      jmp newmem
      nop
    return:
    registersymbol(poison_down_attack_max)
    
    [DISABLE]
    
    poison_down_attack_max:
      db 01 81 A0 02 00 00
    
    unregistersymbol(poison_down_attack_max)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+4FC12D
    
    "game.exe"+4FC108: 68 4A 07 00 00                 -  push 0000074A
    "game.exe"+4FC10D: 68 80 14 0D 02                 -  push game.exe+DB1480
    "game.exe"+4FC112: 8D 4D F3                       -  lea ecx,[ebp-0D]
    "game.exe"+4FC115: E8 B6 35 B1 FF                 -  call game.exe+F6D0
    "game.exe"+4FC11A: C7 45 FC 00 00 00 00           -  mov [ebp-04],00000000
    "game.exe"+4FC121: 8B 4D 0C                       -  mov ecx,[ebp+0C]
    "game.exe"+4FC124: 85 C9                          -  test ecx,ecx
    "game.exe"+4FC126: 74 1E                          -  je game.exe+4FC146
    "game.exe"+4FC128: 8B 45 14                       -  mov eax,[ebp+14]
    "game.exe"+4FC12B: 8B 00                          -  mov eax,[eax]
    // ---------- INJECTING HERE ----------
    "game.exe"+4FC12D: 01 81 A0 02 00 00              -  add [ecx+000002A0],eax
    // ---------- DONE INJECTING  ----------
    "game.exe"+4FC133: 83 B9 A0 02 00 00 01           -  cmp dword ptr [ecx+000002A0],01
    "game.exe"+4FC13A: 7D 0A                          -  jnl game.exe+4FC146
    "game.exe"+4FC13C: C7 81 A0 02 00 00 01 00 00 00  -  mov [ecx+000002A0],00000001
    "game.exe"+4FC146: C7 45 FC FF FF FF FF           -  mov [ebp-04],FFFFFFFF
    "game.exe"+4FC14D: 8D 4D F3                       -  lea ecx,[ebp-0D]
    "game.exe"+4FC150: E8 AB 56 B1 FF                 -  call game.exe+11800
    "game.exe"+4FC155: 33 C0                          -  xor eax,eax
    "game.exe"+4FC157: 8B 4D F4                       -  mov ecx,[ebp-0C]
    "game.exe"+4FC15A: 64 89 0D 00 00 00 00           -  mov fs:[00000000],ecx
    "game.exe"+4FC161: 59                             -  pop ecx
    }

     

     

    Убить босса (звучит как игра... или как фильм "Убить Боба") OHK BOSS:
     

    Спойлер
    
    { Game   : game.exe
      Version: 
      Date   : 2018-07-24
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(boos_kill,game.exe,66 29 B7 A6 02 00 00) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov si,#1000         // Может быть я бы и знал что такое si. Но я не учил С/С++, сорян пацаны :c
      jmp code
    code:
      sub [edi+000002A6],si
      jmp return
    
    boos_kill:
      jmp newmem
      nop
      nop
    return:
    registersymbol(boos_kill)
    
    [DISABLE]
    
    boos_kill:
      db 66 29 B7 A6 02 00 00
    
    unregistersymbol(boos_kill)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "game.exe"+2BA6C6
    
    "game.exe"+2BA69E: 6A 00                          -  push 00
    "game.exe"+2BA6A0: 68 B0 D3 EF 00                 -  push game.exe+D8D3B0
    "game.exe"+2BA6A5: E8 26 9B D7 FF                 -  call game.exe+341D0
    "game.exe"+2BA6AA: 84 C0                          -  test al,al
    "game.exe"+2BA6AC: 75 18                          -  jne game.exe+2BA6C6
    "game.exe"+2BA6AE: 8B 4F 18                       -  mov ecx,[edi+18]
    "game.exe"+2BA6B1: 68 2C 01 00 00                 -  push 0000012C
    "game.exe"+2BA6B6: 68 B0 D3 EF 00                 -  push game.exe+D8D3B0
    "game.exe"+2BA6BB: 8B 89 D4 0F 00 00              -  mov ecx,[ecx+00000FD4]
    "game.exe"+2BA6C1: E8 8A 8D D7 FF                 -  call game.exe+33450
    // ---------- INJECTING HERE ----------
    "game.exe"+2BA6C6: 66 29 B7 A6 02 00 00           -  sub [edi+000002A6],si
    // ---------- DONE INJECTING  ----------
    "game.exe"+2BA6CD: 8B CB                          -  mov ecx,ebx
    "game.exe"+2BA6CF: 68 0F 27 00 00                 -  push 0000270F
    "game.exe"+2BA6D4: FF 75 CC                       -  push [ebp-34]
    "game.exe"+2BA6D7: FF 75 C8                       -  push [ebp-38]
    "game.exe"+2BA6DA: FF 75 10                       -  push [ebp+10]
    "game.exe"+2BA6DD: 56                             -  push esi
    "game.exe"+2BA6DE: 57                             -  push edi
    "game.exe"+2BA6DF: E8 6C 1B E2 FF                 -  call game.exe+DC250
    "game.exe"+2BA6E4: 8B 4D C4                       -  mov ecx,[ebp-3C]
    "game.exe"+2BA6E7: 8A 45 D6                       -  mov al,[ebp-2A]
    }

     

     

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

    Думаю в будущем сделать еще более-менее улучшенный GOD. Там есть прям такой что тебя не дамажит вовсе. (Ибо тот что сейчас просто урон ставит на 0, а есть еще тот что тебя не могут коснуться (не коллизия, вроде как)

    Ну, вроде как все. Всем спасибо за внимание. Если что - пишите свои мнения об скриптах, возможные идеи и способы оптимизации или их реализации (хотя... там ничего такого оригинального нет, просто mov, add, dec, проверка свой чужой (cmp) и все (самые простые инструкции). А вот как доберусь до float с их fld, fstp и другими... вот там будет HARD.

    Планы на будущее:

    Спойлер


    В планах у меня еще стоит сделать парочку скриптов для зелий (там скорее всего будет отдельная инструкция под каждый вид зелья... так что не знаю как это я все должен буду ловить... 
    Парочку скриптов для урона (а именно там есть стихийные уроны (отравление, окаменение, заморозка, и тд)
    Сделать (может быть) телепорт hack. 
    Сделать speed hack. 
    Сделать InvisHack,
    Выдачу (или хотя бы не потерю) предметов
    Сломать инвентарь (на кол-во слотов)
    и другое (Размахнулся я конечно знатно. Надо еще все это научиться делать :D)
    Ну и под конец, если все получится, релизнуть свое "творение" в массы. Продавать по 500 рублей.

     

    Небольшое дополнение:

    • Как сделать шаблон для "подставляемого" значения?
      скажем, есть код:
      add [eax+1337],#100
      Вместо "#100", я хочу поставить "#{value}",  а само значение я хочу прописывать в самой таблице (например, при активации скрипта, откроется подменю, в котором буде указываться число)
      И я например могу решить, какое значение я хочу подставить.
       

    //если что, вопрос был задан в самом скрипте, но я подумал что если его не увидят... лучше продублировать и сюда

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

    Ты меня за кого принимаешь - за всевидящего. - мало инфы.

    Я думал ты и есть он :D

    Так ты ж уточняй. Я тут второй день "работаю". Не знаю всего.
    Тебе инструкции сами, что надо ломать, или может мои фото надо?
    Уточняй.

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

    fsubr dword ptr [ebx+04] fstp dword ptr [ebp-30]

    Можно еще более подробно объяснить зачем эти две инструкции и для чего и как их применяют?
    А то я их вижу раз сотый уже. А чет не могу понять как с ними работать.

    • Смешно 1
  6. @Garik66
    Вот пример:

    Спойлер

     

    
    
    
    code:
      fstp dword ptr [eax+3C]
      ret 
      lea esp,[esp-04]
      jmp return
    
    INJECT:
      jmp newmem
      nop
      nop
      nop
    return:
    registersymbol(INJECT)

    Пример №2

    Спойлер

     

    
    code:
      fsub dword ptr [ebx+3C]
      fdiv dword ptr [gtutorial-i386.exe+27D1BC]
      jmp return
    
    INJECT:
      jmp newmem
      nop
      nop
      nop
      nop
    return:
    registersymbol(INJECT)


    // Если код больше 10 строк принято прятать его под спойлер. Garik66


    Прочитай правила форума:

    1. Любой код, цитата и прочее - должны быть обернуты специальными тэгами. Кроме того, если фрагмент кода достаточно большой (более 10 строк кода), то его необходимо также обернуть тэгом спойлера (скрытый текст).

     

  7. Всем привет.
    С вами снова я. (КТО? Крузя в пальто - шутки для элитки. Не понял? Не элитка)

    Спрашивал я в Discord канале, мельком. Думал что тема слишком уж короткая для вопроса (вопросы был что-то типо: как с float работать то?). Но сел писать "Проверку СВОЙ/ЧУЖОЙ" и понял что раз есть материал на небольшую статью-вопрос, то чего бы и не сделать отдельную тему?
    Краткая предистория:

    Спойлер

    Посмотрел мануалы как сделать Проверку "Свой/Чужой". Вроде бы понял как и что делать. Ну а человек я простой, полез сразу в огонь и воду (в игры) а она в типе Double, а я как Валенок, ничего не понял. Подумал что рано туда лезть. Решил пойти сначала проверить себя на знание в простенький TrainMe, полез в тот что в папке с СЕ есть. Нашел указатели, поискал по структурке, нашел значения что отличаются у игроков и врагов [ebx+10] (вроде), сами хп находятся на [ebx+4].
    Ну, на этом можно закончить. Пошли к сути.

     

    Написал я не хитрый скрипт на ассемблере.
    Вот собственно и он:

    Спойлер
    
    { Game   : Tutorial-i386.exe
      Version: 
      Date   : 2018-07-22
      Author : YUZIA
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(INJECT,Tutorial-i386.exe,D8 6B 04 D9 5D D0) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:                       
      cmp byte ptr [ebx+10],1     // Сравнение, ebx со смещением +10 = 1 | Враг = 2, Игрок = 1.
      jne code                    // Если не равно то goto code. Если равно единице, то идем дальше.
      fld dword ptr [ebx+04]      // Не знаю зачем. Я человек простой, мне так сказали,
                                  // я так делаю. (Как я понял, это почти как push?)
      add [ebx+04],(float)100     // Добавляем +100 (float) единиц в значение типа float. (Вроде как?) | Способ был подсказан @partoftheworlD - если шо, кидайте тапки в него :D
      fstp dword ptr [ebx+04]     // Вроде как записывем (?)
                                  // Я так понимаю это же как "применить" изменения?
      jmp return                  // Сваливаем отсюда, что бы не выполнялся оригинальный код.
    code:
      fsubr dword ptr [ebx+04]
      fstp dword ptr [ebp-30]
      jmp return
    
    INJECT:
      jmp newmem
      nop
    return:
    registersymbol(INJECT)
    
                                  // Ниже уже Disabled функция. Не стал ее копировать ибо ничего там не редачил.
    

     

     

    По идее, все должно работать. Но должно и работает разные вещи. 

    Кратко что делал. Нашел указатели к Игрокам (2), Врагам (2). 
    // Не обращайте на кол-во скриптов. Я пробовал разными способами/методами что либо сделать.

    Спойлер


    hack1.png

    После чего, сверил их () структуру (Нашел отличия в eax+10).
    Правильность "проверки" проверял. Если менять в коде проверку с 1 на 2, то скрипт работал с врагами.
     

    Спойлер

    hack2.png


    После чего, брал инструкцию что работала с игроками/врагами (проверял на работу с другими адресами)
    Сама инструкция: 

    Спойлер

    Hack3.png


    После чего делал AOB Inject, писал свой код (с костылями или без. Не знаю. Мы писали как могли)

    И угадайте что я в конце ловил? А я сам и не знаю если честно.
    Если я ударял Игрока, ловил ошибку:
     

    Спойлер

    hackerror2.png
     

    И еще супер топове значение:

    Спойлер

    hackerror.png

    В случае если я ударял Врага, то ошибки не было. И значение убавлялось (ну логично да?) Хотел по позже сделать One hit --> One Kill, но сначала хотел разобраться с главной проблемой. (Example: mov [addres+04],0 // Оригинально не правда ли? Да я гений.) 

    Я так думаю я накосячил либо с типом данных (например, передаю 4 byte в float) либо ошибка в самом коде. (Скорее всего второе, но это не точно)


    И собственно что я хотел спросить то?

    • Помогите решить проблему с кривыми значениями, я новичок в Ассемблере, так что не кидайтесь тапками.
    • Кому не лень, распишите по подробнее как правильно вычитать, добавлять и перезаписывать значения в типе Float (и, в идеале, с double также, если можно) (желательно с примерами работающего скрипта, проще понять как работает если есть наглядные примеры.)

    Я еще пытался сделать как советовал @Garik66:
     

         fld  [eax+10]
         fadd  [const]
         fstp [eax +10]
    вверху объяви label(const) 
    и 
    const:
      dd (float)1
    
    // Но мне кажется тут еще надо кое-что что я забыл сделать, как например registersymbol(const) (ну или нет?)

    но чет пошло не так, и у меня не получилось. Была точно такая же ситуация со значениями (как на скрине выше)

     

     

    PS: Я только начинаю входить в тему с Ассемблером, так что вопросы могут быть слишком глупыми. 

  8. :offtopic:

    Спойлер


    30 минут назад, MEDBEDb сказал:

    Проще говоря, изобретать велосипед, когда тот уже есть.


    Велосипед != Костыли.

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

     

     

  9. 1 час назад, partoftheworlD сказал:

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

    Не сказал бы что это так.
    Я пересмотрел много тем по Ren'Py и по другим движкам.
    Много кто ищет, спрашивает, пытается найти  или сделать что-либо чем можно взламывать/редачить игры на данном (Ren'Py) движке,
    А так как есть аналоги в виде:

     

    21 час назад, Yuzia сказал:

    Save Editor for Ren'Py

     

    21 час назад, Yuzia сказал:

    консоль в Ren'Py


    То им остается лишь использовать то что уже есть, хотя это местами и не удобное, сложное или непонятное. Но, в отличии от другого, оно есть. Потому его  и юзают.

    Потому, лично мое мнение, если кто-то (например вы, или кто либо другой) сделает годную прогу/инструмент, что будет удобным, простым и эффективным.
    Все будут использовать именно это. А не  костыли в виде Консоли или Save Editor

    PS: Я назвал их костылями потому-что это немного не удобно и ограничено. К тому же, у каждого понятие "костылей" свое же?

  10. 6 часов назад, partoftheworlD сказал:

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

    Не вопрос, если есть желание можете сделать, я думаю многим поможет данная вещь.

  11. @partoftheworlD на данный момент нашел 2 способа решения данной проблемы. CE Сосет.
     

    • Костыли №1.
      Включить консоль в Ren'Py
      игре через которую можно "чудить".
      • Плюсы:
        • Быстро
        • Функциональность (Можно менять практически все что можно менять. Ору)
      • Минусы:
        • Сложно (Нужно знать что делаешь, что ищешь, что хочешь сменить)
        • Нужно знать имя команд (спасет: dir () )
    • Костыли №2.
      Save Editor for Ren'Py
      • Плюсы:
        • Просто и Быстро.
      • Минусы:
        • Ограничения данных в Save файлах.
          (т.е. если в save файле не хранится кол-во HP игрока, то хрен вы его поменяете.
          Потому данных, которые вы можете сменить, в данном случае не всегда много.
          Хотя, взял был две игры. В одной 600+ Значений в .save файле, а в другой игре их 40+.
          )
  12. 7 минут назад, partoftheworlD сказал:

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

    тут такое дело. Декомпиляция, модуль для Ren'Py и написание чего либо не по моей части. Я в этом не знаток и даже не любитель. Потому-то и пишу сюда. Может кто кинул бы тапком и сделал все за меня подсказал как можно искать значения в любой игре написанной на Ren'Py, но за идею большое спасибо. Кто знает, может с годом к ней и вернусь. (А что, выучить Ren'Py, и пилить потом свои игры и их же ломать. Идеально)
    (Было бы здорово сделать модуль к Ren'Py + CE Plugin что бы была синхронизация с CE и можно было бы крякать ЛЮБУЮ игру на Ren'Py, а не делать специально под каждую из игр.)

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


     

  13. Всем привет.
    Столкнулся с таким видом игр, которые написаны на Ren'Py.

    Столкнулся с тем, что попытке найти что либо (Здоровье игрока, Деньги, Выносливость)
    просто не находились. Я пытался по разному:

    • "поиск неизвестного значения" --> "значение уменьшилось/увеличилось"
    • "поиск неизвестного значения" --> "значение изменилось/не изменилось"

    и поиск известного значения, пробовал все возможные типы адресов (float, double, 4 байта и тд и тп)

     

    И я вот подумал, написать сюда, может кто сталкивался уже с этим движком или же сам на нем писал и знает как "работают" значения в Ren'Py?

    Спасибо за внимание.

  14. Всём добрых времени суток.

    Нуждаюсь в помощи по взлому игры "Ninja Revenge"

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

    Надеюсь найдутся люди которые помогут.

    Подробности в ЛС (ссылки и тд всё там же)

    - Игра запускается через эмулятор BlueStacks на PC

    - Взломать её не так просто

    - Взломать нужно деньги+ ( можно еще ХП нинзи, но мне кажется это лишнее)

     

  15. Ну как бы я не профи  :)  а скажу как есть. 

    Значение в памяти на этом золоте, может быть и просто 27 к примеру, а на экране будет показывать - что у тебя его 100. Пробуешь вот как.  

    Не важно в чем там будет значение, в байте или в двух, четырех или восьми... Ищешь не известное значение во float и когда взял деньги, нажимай увеличилось. Потом поскакал по карте не много (что бы деньги не менялись только) и нажал значение не изменилось. Пошел на пример потратил не много, нажал уменьшилось... Нашел сколько не будь опять - нажал увеличилось и так далее... А потом когда значений станет очень мало - пробуй по одному изменять,на пример добавлять к  значению цифру 1 - этого достаточно и меньше шансов будет, что игра вылетит. Если значение не изменилось после прибавления числа 1 - то ставь значение опять какое было до изменения.. Это что бы игра не вылетела и по новой не пришлось искать всё это.  

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

    Тогда придется искать значение во float неизвестное и когда берешь деньги, нажимаешь изменилось, и когда с деньгами не чего не происходит - не изменилось.  

    А по чему во float искать - потому что он найдет все адреса, в чем бы там не было. Просто потом когда адресов останется мало, ты переведи эти float в 4 байта на пример.   

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

    Попробую (PS: там как бы рекламы и прочих ПО не даёт хотя кто знает...)

    ну а способ не плохой :D

    кстати да, вот не знаю только как СЕ отреагирует, ведь в прошлый раз когда я искал, мне выдало писец как много значений, и всё залагало и зависло...

  16. Добрый день! у меня не получается взломать игру "plants vs zombies" на монеты когда делаю поиск отсеиваю у меня не находит значение,а вот с солнцами получается.Спасибо заранее! ^_^

     

    Скрины:

    http://s018.radikal.ru/i522/1512/ab/a5b3c93635ce.png

    http://s019.radikal.ru/i629/1512/77/bff59ca4e513.png

    http://s47.radikal.ru/i117/1512/be/7fbbe665356a.png

    (если он сам  хочет взломать деньги, то там (кажется)  последний ноль НЕ пишут и тогда ищут, а если нет то просто забудь(забудьте) что я написал и идите дальше ^^) 

    (Знаю это ибо сам ломал that game :D )

  17. А с чего ты взял, что в игре оно увеличилось ??? Наверно по тому, что деньги то я как бы взял да  :)  и значит они по любому должны увеличится. Ну так вот, они могли и уменьшится,а не увеличится.  

    Да и вопросик один,а вот по ссылке что ты дал, там с этим эмулятором случаем бредятина всякая не ставится ??? А то я раз поставил подобное, потом чистил от всякого мусора весь день.

    по теме не должно, я скачивал там только Ехе файл с прогой больше ничего не наблюдал (если что кидай в меня камень)

    по теме не должно, я скачивал там только Ехе файл с прогой больше ничего не наблюдал (если что кидай в меня камень)

    PS: на счёт уменьшилось/увеличилось, я находил значение значит всё правильно было нет? 

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

    А с чего ты взял, что в игре оно увеличилось ??? Наверно по тому, что деньги то я как бы взял да  :)  и значит они по любому должны увеличится. Ну так вот, они могли и уменьшится,а не увеличится.  

    Да и вопросик один,а вот по ссылке что ты дал, там с этим эмулятором случаем бредятина всякая не ставится ??? А то я раз поставил подобное, потом чистил от всякого мусора весь день.

    кстати да, на счёт этого думал, но чёт не понял по какому принципу оно работает, так что можно совета "профи" ?

  18. Скажу так если ты еще плохо знаешь как простые значения искать, неизвестные например и тому подобные. То о шифрованых тебе еще рановато думать. Сначало познай простой хакинг, почитай статейки не ленись, готовое тебе на блюдечке не кто не принесет. А по твоему это звучит так - хочу все знать сразу про все, незная простых вещей. :)

    1)я лишь чайник

    2)когда я такое говорил?

    3)Ну не знаю я как взломать игру, вот и прошу помочь, а что там и как я без помощи не разберусь , только если кто поможет может получиться.

    4)Простые значения я искать умею, но вот если ничего из простых методов НЕ работает, остается к вам идти на форум

    5)я и не говорил что СДЕЛАЙТЕ ВСЁ ЗА МЕНЯ а я пока чаёк заварю D:

  19. Я же сказал отправь мне ссылки в личное сообщение. Просто Админы могут наказать тебя за размещение ссылок на постороннее ПО на форуме. Нажми на мой ник и отправь мне ссылки в ЛС.

    Вечером посмотрю что к чему.

    да да, я понял когда уже написал XD (отправил сразу после того как сюда отправил)

  20. Скинь мне ссылку на игру и этот эмулятор в лс я попробую.

    Как дома буду.

    момент

    http://bluestacks-app-player.ru.uptodown.com/ - вот BlueStacks

    А игра называется Ninja Revenge, и что бы ее скачать, нужно сначала блю стакс скачать, потом её искать и тд. (если что могу по скайпу, или просто тут Написать подробнее )

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

    Кстати, только что пытался Крякнуть за вашим методом еще раз,

    Значит что я делал:

    есть значение (Золото), ХХХ,

    я нажал, искать не известное значение,

    нашло много 1,ХХХ,ХХХ,ХХХ (то есть МНОГО)

    пока искало грузилось, ну да ладно,

    после, того как значение золота изменилось, (увеличилось)

    я нажал значение увеличилось, и нажал отсеять, тут то во всем и проблема:

    1)значений много, сильно грузит, а тут еще и игра грузит, так что ждать 1 час МИНИМУМ,

    2)Виснет, то есть не факт что оно отсеивает так как всё зависло, и ничего сделать нельзя.

    3)СЕ забирает >4 ГБ оперативки (у меня 6 ГБ)

    и делать я не знаю что, т.к. СЕ сканирует память, что долго, и много значений, (по другому ни как)

    и за твоим методом, получается так, что всё стоит.

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

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

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