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

Partizan

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

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

  • Посещение

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

    17

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

  1. 1. Жизни не кочаются

    Спойлер
    
    [ENABLE]
    aobscanmodule(Hp,cf3.exe,96 EB FF 8B 10 8B C8 8B 42 18 FF D0 89 44 24 04)
    registersymbol(Hp)
    Hp+0A:
    db 90 90
    
    [DISABLE]
    Hp+0A:
    db FF D0//call eax
    unregistersymbol(Hp)
    dealloc(newmem)
    {
    // ORIGINAL CODE - INJECTION POINT: cf3.exe+503EB9
    cf3.exe+503E9F: CC                 - int 3 
    cf3.exe+503EA0: 51                 - push ecx
    cf3.exe+503EA1: 56                 - push esi
    cf3.exe+503EA2: 8B 74 24 0C        - mov esi,[esp+0C]
    cf3.exe+503EA6: B8 01 00 00 00     - mov eax,00000001
    cf3.exe+503EAB: 8B CE              - mov ecx,esi
    cf3.exe+503EAD: E8 8E 96 EB FF     - call cf3.exe+3BD540
    cf3.exe+503EB2: 8B 10              - mov edx,[eax]
    cf3.exe+503EB4: 8B C8              - mov ecx,eax
    cf3.exe+503EB6: 8B 42 18           - mov eax,[edx+18]
    // ---------- INJECTING HERE ----------
    cf3.exe+503EB9: FF D0              - call eax
    // ---------- DONE INJECTING  ----------
    cf3.exe+503EBB: 89 44 24 04        - mov [esp+04],eax
    cf3.exe+503EBF: DB 44 24 04        - fild dword ptr [esp+04]
    cf3.exe+503EC3: 85 C0              - test eax,eax
    cf3.exe+503EC5: 7D 06              - jnl cf3.exe+503ECD
    cf3.exe+503EC7: D8 05 C0 02 B0 00  - fadd dword ptr [cf3.exe+7002C0]
    cf3.exe+503ECD: 51                 - push ecx
    cf3.exe+503ECE: D9 1C 24           - fstp dword ptr [esp]
    cf3.exe+503ED1: 56                 - push esi
    cf3.exe+503ED2: E8 B9 F3 C7 FF     - call cf3.exe+183290
    cf3.exe+503ED7: 83 C4 08           - add esp,08
    }

     

    2. Бесконечный боезапас

    Спойлер
    
    [ENABLE]
    aobscanmodule(Ammo,cf3.exe,F0 8B 46 20 85 C0 74 1A 83 78 50 00 75 14)
    alloc(newmem,$1000)
    label(return)
    registersymbol(Ammo)
    
    newmem:
      mov dword ptr [eax+50],#99
      cmp dword ptr [eax+50],00
      jne cf3.exe+339842
      jmp return
    
    Ammo+08:
      jmp newmem
      nop
    return:
    
    [DISABLE]
    Ammo+08:
    db 83 78 50 00 75 14
    unregistersymbol(Ammo)
    dealloc(newmem)
    {
    // ORIGINAL CODE - INJECTION POINT: cf3.exe+339828
    cf3.exe+33980E: CC                    - int 3 
    cf3.exe+33980F: CC                    - int 3 
    cf3.exe+339810: 8B 4C 24 04           - mov ecx,[esp+04]
    cf3.exe+339814: 56                    - push esi
    cf3.exe+339815: B8 01 00 00 00        - mov eax,00000001
    cf3.exe+33981A: E8 21 3D 08 00        - call cf3.exe+3BD540
    cf3.exe+33981F: 8B F0                 - mov esi,eax
    cf3.exe+339821: 8B 46 20              - mov eax,[esi+20]
    cf3.exe+339824: 85 C0                 - test eax,eax
    cf3.exe+339826: 74 1A                 - je cf3.exe+339842
    // ---------- INJECTING HERE ----------
    cf3.exe+339828: 83 78 50 00           - cmp dword ptr [eax+50],00
    // ---------- DONE INJECTING  ----------
    cf3.exe+33982C: 75 14                 - jne cf3.exe+339842
    cf3.exe+33982E: 8B C8                 - mov ecx,eax
    cf3.exe+339830: 85 C9                 - test ecx,ecx
    cf3.exe+339832: 74 0E                 - je cf3.exe+339842
    cf3.exe+339834: 8B 01                 - mov eax,[ecx]
    cf3.exe+339836: 8B 50 08              - mov edx,[eax+08]
    cf3.exe+339839: FF D2                 - call edx
    cf3.exe+33983B: C7 46 20 00 00 00 00  - mov [esi+20],00000000
    cf3.exe+339842: 8B C6                 - mov eax,esi
    cf3.exe+339844: E8 67 E6 FF FF        - call cf3.exe+337EB0
    }

     

    3. Враги не атакуют

    Спойлер
    
    [ENABLE]
    aobscanmodule(no_attac,cf3.exe,75 1F 8B 4E 10) // should be unique
    registersymbol(no_attac)
    no_attac:
    db 74 1F
    
    [DISABLE]
    no_attac:
    db 75 1F
    unregistersymbol(no_attac)
    dealloc(newmem)
    {
    // ORIGINAL CODE - INJECTION POINT: cf3.exe+199D66
    cf3.exe+199D47: E8 E4 E0 FF FF     - call cf3.exe+197E30
    cf3.exe+199D4C: 8B C8              - mov ecx,eax
    cf3.exe+199D4E: 83 C4 0C           - add esp,0C
    cf3.exe+199D51: 83 79 04 00        - cmp dword ptr [ecx+04],00
    cf3.exe+199D55: 89 4C 24 10        - mov [esp+10],ecx
    cf3.exe+199D59: 75 2C              - jne cf3.exe+199D87
    cf3.exe+199D5B: 8B 43 08           - mov eax,[ebx+08]
    cf3.exe+199D5E: 85 C0              - test eax,eax
    cf3.exe+199D60: 74 25              - je cf3.exe+199D87
    cf3.exe+199D62: F6 40 06 02        - test byte ptr [eax+06],02
    // ---------- INJECTING HERE ----------
    cf3.exe+199D66: 75 1F              - jne cf3.exe+199D87
    // ---------- DONE INJECTING  ----------
    cf3.exe+199D68: 8B 4E 10           - mov ecx,[esi+10]
    cf3.exe+199D6B: 8B 91 A8 00 00 00  - mov edx,[ecx+000000A8]
    cf3.exe+199D71: 52                 - push edx
    cf3.exe+199D72: 6A 01              - push 01
    cf3.exe+199D74: 50                 - push eax
    cf3.exe+199D75: E8 76 F0 FF FF     - call cf3.exe+198DF0
    cf3.exe+199D7A: 8B F8              - mov edi,eax
    cf3.exe+199D7C: 83 C4 0C           - add esp,0C
    cf3.exe+199D7F: 85 FF              - test edi,edi
    cf3.exe+199D81: 75 6E              - jne cf3.exe+199DF1
    }

     

    Посмотреть ролик

  2. Оччч интересно как ты сделал взлом читов разрабов?

    Просто находил флаг вкл/выкл?

    И заебегая вперёд если ДА. То как 0=выкл 1=вкл

    или как ещё 255=вкл.

    Или просто изменилось/не изменилось

    Если не серкрет то поведуй страждущим

  3. Это из-за hp_max. Оно сделано у меня на другой инструкции которая реже срабатывает.

    Можно было через структуру и hp и max_hp повесить на одну инструкцию. Но как я писал в другом посте игра странная. Смещения могут по структуре переезжать. Было у гг hp+50 max_hp+58. После перезагруза. Hp+50 а max_hp уедет в +f8

  4. Ох зря Вы начали про танцоров и то чего им мешает.(меня бомбануло)

    1. Начнём с версии движков Hatred и Medieval Dynasty

    Engine.png

    Как можно заметить по скрину. Разные версии.

    2. С Hatred нет ни каких проблем. 

    На адрессе патронов сработала инструкция которая работает ТОЛЬКО с адрессом патронов

    Hatred.png

    Поэтому отсеивать как  во многих современных играх ни чего не надо

    Спойлер
    
    [ENABLE]
    aobscanmodule(No_Reload,Hatred-Win64-Shipping.exe,8bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx48xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0fb6xxxxxxxxxxxxxxxxxxxxxxxxxxxx48xxxxxxxxxx48xxxxxx49)
    alloc(newmem,$1000,No_Reload)
    label(return)
    registersymbol(No_Reload)
    
    newmem:
      push [rcx+00000384]
       pop [rcx+00000354]
      mov eax,[rcx+00000354]
      jmp return
    
    No_Reload:
      jmp newmem
      nop
    return:
    
    [DISABLE]
    No_Reload:
    db 8B 81 54 03 00 00
    unregistersymbol(No_Reload)
    dealloc(newmem)
    {
    // ORIGINAL CODE - INJECTION POINT: Hatred-Win64-Shipping.exe+1A4860
    Hatred-Win64-Shipping.exe+1A4844: F3 0F 11 0F        - movss [rdi],xmm1
    Hatred-Win64-Shipping.exe+1A4848: F3 0F 10 4C 24 44  - movss xmm1,[rsp+44]
    Hatred-Win64-Shipping.exe+1A484E: F3 0F 5E C8        - divss xmm1,xmm0
    Hatred-Win64-Shipping.exe+1A4852: F3 0F 11 4F 04     - movss [rdi+04],xmm1
    Hatred-Win64-Shipping.exe+1A4857: 48 83 C4 30        - add rsp,30
    Hatred-Win64-Shipping.exe+1A485B: 5F                 - pop rdi
    Hatred-Win64-Shipping.exe+1A485C: C3                 - ret 
    Hatred-Win64-Shipping.exe+1A485D: CC                 - int 3 
    Hatred-Win64-Shipping.exe+1A485E: CC                 - int 3 
    Hatred-Win64-Shipping.exe+1A485F: CC                 - int 3 
    // ---------- INJECTING HERE ----------
    Hatred-Win64-Shipping.exe+1A4860: 8B 81 54 03 00 00  - mov eax,[rcx+00000354]
    // ---------- DONE INJECTING  ----------
    Hatred-Win64-Shipping.exe+1A4866: C3                 - ret 
    Hatred-Win64-Shipping.exe+1A4867: CC                 - int 3 
    Hatred-Win64-Shipping.exe+1A4868: CC                 - int 3 
    Hatred-Win64-Shipping.exe+1A4869: CC                 - int 3 
    Hatred-Win64-Shipping.exe+1A486A: CC                 - int 3 
    Hatred-Win64-Shipping.exe+1A486B: CC                 - int 3 
    Hatred-Win64-Shipping.exe+1A486C: CC                 - int 3 
    Hatred-Win64-Shipping.exe+1A486D: CC                 - int 3 
    Hatred-Win64-Shipping.exe+1A486E: CC                 - int 3 
    Hatred-Win64-Shipping.exe+1A486F: CC                 - int 3 
    }

     

    3. Medieval Dynasty

    Возьмём к примеру туже выносливость.

    Это полоска Float шкала пустая это 0 шкала целая это 1

    Поставив бряк на адрессе можно увидеть следущие

    Medieval.png

    Как видно со скрина с инструкцией работает куча адрессов и надо отсеивать.(схожа ситуация на движок GameMaker)

    Но как можно заметить в регистрах R12 и R13 хранится начало структуры.(но так не везде и не во всех случаях)

    Посмотрим структуру.

    Str-01.png

    Смещение 490 и есть выносливость ГГ

     

    4. Как отсеить?

    С отсеивание у меня ни чего не вышло.

    Ни по структуре (это вообще бред её смотреть) ни по стеку.

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

    Ставлю на него бряк.

    BP.png

    И да. Нашласть инструкция которая работает только с нашей структурой.

    Instr.png

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

    Спойлер
    
    [ENABLE]
    aobscanmodule(Struct,Medieval_Dynasty-Win64-Shipping.exe,48 8B ? F3 0F ? ? ? ? E8 ? ? ? ? 48 8B ? 4C 8D ? ? ? 48 8B ? FF 93 ? ? ? ? 48 8B ? ? ? 48 83 C4 ? 5F C3 CC CC 48 8B)
    alloc(newmem,$1000,Struct)
    label(return)
    label(_StrPl)
    registersymbol(_StrPl)
    registersymbol(Struct)
    
    newmem:
      mov [_StrPl],rcx
      mov rbx,[rcx]
      movss [rsp+38],xmm1
      jmp return
    
    _StrPl:
    dd 00
    
    Struct:
      jmp newmem
      nop 4
    return:
    
    
    [DISABLE]
    Struct:
    db 48 8B 19 F3 0F 11 4C 24 38
    unregistersymbol(_StrPl)
    unregistersymbol(Struct)
    dealloc(newmem)
    {
    // ORIGINAL CODE - INJECTION POINT: Medieval_Dynasty-Win64-Shipping.exe+2917074
    Medieval_Dynasty-Win64-Shipping.exe+291705B: C3                    - ret 
    Medieval_Dynasty-Win64-Shipping.exe+291705C: CC                    - int 3 
    Medieval_Dynasty-Win64-Shipping.exe+291705D: CC                    - int 3 
    Medieval_Dynasty-Win64-Shipping.exe+291705E: CC                    - int 3 
    Medieval_Dynasty-Win64-Shipping.exe+291705F: CC                    - int 3 
    Medieval_Dynasty-Win64-Shipping.exe+2917060: 48 89 5C 24 08        - mov [rsp+08],rbx
    Medieval_Dynasty-Win64-Shipping.exe+2917065: 57                    - push rdi
    Medieval_Dynasty-Win64-Shipping.exe+2917066: 48 83 EC 20           - sub rsp,20
    Medieval_Dynasty-Win64-Shipping.exe+291706A: 48 8B 15 67 EA C0 01  - mov rdx,[Medieval_Dynasty-Win64-Shipping.exe+4525AD8]
    Medieval_Dynasty-Win64-Shipping.exe+2917071: 48 8B F9              - mov rdi,rcx
    // ---------- INJECTING HERE ----------
    Medieval_Dynasty-Win64-Shipping.exe+2917074: 48 8B 19              - mov rbx,[rcx]
    // ---------- DONE INJECTING  ----------
    Medieval_Dynasty-Win64-Shipping.exe+2917077: F3 0F 11 4C 24 38     - movss [rsp+38],xmm1
    Medieval_Dynasty-Win64-Shipping.exe+291707D: E8 9E F7 73 FE        - call Medieval_Dynasty-Win64-Shipping.exe+1056820
    Medieval_Dynasty-Win64-Shipping.exe+2917082: 48 8B D0              - mov rdx,rax
    Medieval_Dynasty-Win64-Shipping.exe+2917085: 4C 8D 44 24 38        - lea r8,[rsp+38]
    Medieval_Dynasty-Win64-Shipping.exe+291708A: 48 8B CF              - mov rcx,rdi
    Medieval_Dynasty-Win64-Shipping.exe+291708D: FF 93 18 02 00 00     - call qword ptr [rbx+00000218]
    Medieval_Dynasty-Win64-Shipping.exe+2917093: 48 8B 5C 24 30        - mov rbx,[rsp+30]
    Medieval_Dynasty-Win64-Shipping.exe+2917098: 48 83 C4 20           - add rsp,20
    Medieval_Dynasty-Win64-Shipping.exe+291709C: 5F                    - pop rdi
    Medieval_Dynasty-Win64-Shipping.exe+291709D: C3                    - ret 
    }

     

    И добавляем указатели.

    _StrPl+474=Еда

    _StrPl+488=Вода

    _StrPl+490=Выносливость

     

    P.S.

    Не надо не разобравшись в ситуации начинать говорить про танцоров и то чего им мешает

    Меня это задело (практически оскарбило)

     

    P.S.2 Этот способ работает не на всех играх с современным UE

    Поэтому я писал ранее. Запилите урок по этому движку.

     

    P.S.3 Kvazimado Вам ни чего не мешает???

  5. 3 часа назад, LIRW сказал:

    Открою не большой секрет (только не кому не рассказывай об этом)  но умеет перезаписываться :)  

    Ну раз Вы такой умный и придирчивый. То с умничалибы урок по читингу в играх на Unreal Engine v.4.xxx

    Хотяб на примере той же medieval dynasty. Уж очень интересна данная тема.

  6. 1 час назад, LIRW сказал:

    Да там если разобраться и не раз... и так работать будет не плохо..

      Показать контент
    
    
      newmem:
      mov eax,[esi+08]
      fld qword  [val]
      fst qword  [eax]
      fst qword  [eax+10]
      fst qword  [eax+20]
      fstp qword [eax+30]
      push [esi+08]
      lea eax,[esi+20]
      jmp return

     

     

    А разница? Просто я не стал трогать регистр который в оригинальном коде используется

  7. Мдаааа чтот я тупонул

    FLD src TOPSWR-=1; ST(0)=src; Загрузка операнда в вершину стека
    FST dst dst=ST(0); Сохранение вершины стека в память
    FSTP dst dst=ST(0); TOPSWR+=1; Сохранение вершины стека в память с выталкиванием
    Спойлер
    
    [ENABLE]
    aobscanmodule(hp_mp,Hero_Siege.exe,ff 76 ? 8d 46 ? 50 e8 ? ? ? ? 83 c4 ? f7 46 2c ? ? ? ? 74 ? 8d 46 ? c7 86 78 0c 00 00)
    alloc(newmem,$1000)
    label(return)
    label(val)
    registersymbol(val)
    registersymbol(hp_mp)
    
    newmem:
      push ebx
      mov ebx,[esi+08]
      fld qword ptr [val]
      fst qword ptr [ebx]
      fst qword ptr [ebx+10]
      fst qword ptr [ebx+20]
     fstp qword ptr [ebx+30]
      pop ebx
      push [esi+08]
      lea eax,[esi+20]
      jmp return
    
    val:
    dq (double)1000000
    
    hp_mp:
      jmp newmem
      nop
    return:
    
    [DISABLE]
    hp_mp:
    db FF 76 08 8D 46 20
    unregistersymbol(val)
    unregistersymbol(hp_mp)
    dealloc(newmem)

     

     

  8. Скрипт на жизни и ману

    Спойлер
    
    [ENABLE]
    aobscanmodule(hp_mp,Hero_Siege.exe,ff 76 ? 8d 46 ? 50 e8 ? ? ? ? 83 c4 ? f7 46 2c ? ? ? ? 74 ? 8d 46 ? c7 86 78 0c 00 00)
    alloc(newmem,$1000)
    label(return)
    label(val)
    registersymbol(val)
    registersymbol(hp_mp)
    
    newmem:
      push ebx
      mov ebx,[esi+08]
      fld qword ptr [val]
     fstp qword ptr [ebx]
      fld qword ptr [val]
     fstp qword ptr [ebx+10]
      fld qword ptr [val]
     fstp qword ptr [ebx+20]
      fld qword ptr [val]
     fstp qword ptr [ebx+30]
      pop ebx
      push [esi+08]
      lea eax,[esi+20]
      jmp return
    
    val:
    dq (double)1000000
    
    hp_mp:
      jmp newmem
      nop
    return:
    
    [DISABLE]
    hp_mp:
    db FF 76 08 8D 46 20
    unregistersymbol(val)
    unregistersymbol(hp_mp)
    dealloc(newmem)
    {
    // ORIGINAL CODE - INJECTION POINT: Hero_Siege.exe+701355
    Hero_Siege.exe+70132D: 68 00 00 3F 40                 - push 403F0000
    Hero_Siege.exe+701332: 6A 00                          - push 00
    Hero_Siege.exe+701334: 50                             - push eax
    Hero_Siege.exe+701335: 8D 86 B0 00 00 00              - lea eax,[esi+000000B0]
    Hero_Siege.exe+70133B: 50                             - push eax
    Hero_Siege.exe+70133C: E8 DF 56 B1 FF                 - call Hero_Siege.exe+216A20
    Hero_Siege.exe+701341: 83 C4 10                       - add esp,10
    Hero_Siege.exe+701344: 8D 86 B0 00 00 00              - lea eax,[esi+000000B0]
    Hero_Siege.exe+70134A: C7 86 78 0C 00 00 52 02 00 00  - mov [esi+00000C78],00000252
    Hero_Siege.exe+701354: 50                             - push eax
    // ---------- INJECTING HERE ----------
    Hero_Siege.exe+701355: FF 76 08                       - push [esi+08]
    // ---------- DONE INJECTING  ----------
    Hero_Siege.exe+701358: 8D 46 20                       - lea eax,[esi+20]
    Hero_Siege.exe+70135B: 50                             - push eax
    Hero_Siege.exe+70135C: E8 9F 75 99 FF                 - call Hero_Siege.exe+98900
    Hero_Siege.exe+701361: 83 C4 0C                       - add esp,0C
    Hero_Siege.exe+701364: F7 46 2C FF FF FF 00           - test [esi+2C],00FFFFFF
    Hero_Siege.exe+70136B: 74 7B                          - je Hero_Siege.exe+7013E8
    Hero_Siege.exe+70136D: 8D 46 20                       - lea eax,[esi+20]
    Hero_Siege.exe+701370: C7 86 78 0C 00 00 53 02 00 00  - mov [esi+00000C78],00000253
    Hero_Siege.exe+70137A: 50                             - push eax
    Hero_Siege.exe+70137B: E8 90 C5 FD 06                 - call Hero_Siege.exe+76DD910
    }

     

     

  9. Loop Hero.exe==md5=380D5808D611411F5E76D980FF242816

    1. Жизни (устанавливаются в 10к) + бонусом кол-во опыта которое нужно+сам опыт

    2. Ресурсы (всего добавил 5 ячеек, крест можно сразу поставить но накручивать значение только после того как подберёте 1 ресурс для каждой ячейки отдельно)

    loop.png

    Скачать таблицу

    Добавьте уже в разрабы

    Вот вторая моя табличка

     

    Как делал жизни для loop hero (напомню движок game maker)

  10. Почему писал в [eax] а не в [esp]

    Я уже говорил игра на гейм мейкере. Поэтому в инструкции на теже хп куча адресов

    1111.png

    Поэтому поставил трейс с условием ESI==0x0CEF17F0

    22222.png

    333333.png

    Если крутить вниз и следить за регистрами то наткнёмся на это

    44444.png

    В регистре еах будет адресс хп.

    И инструкция работает только с одним адрессом

    555555.png

     

     

     

  11. Всем спасибо.

    вот так сработало

      fld qword ptr [doub]
      fstp qword ptr [eax]

    просто если не указать qword ptr СЕ думает что это float

    в этом и был весь затык

     

    а так это тепер рабочий скрипт для Loop hero версии 1.0

    Спойлер
    
    [ENABLE]
    aobscanmodule(_Hp,Loop Hero.exe,89 04 ? e8 ? ? ? ? 83 c4 ? 85 c0 7e ? c7 46 2c)
    alloc(newmem,$1000)
    label(doub)
    label(return)
    registersymbol(doub)
    registersymbol(_Hp)
    
    newmem:
      fld qword ptr [doub]
      fstp qword ptr [eax]
      mov [esp],eax
      call "Loop Hero.exe"+16FC210
      jmp return
    
    doub:
    dq (double)1000
    
    _Hp:
      jmp newmem
      nop 3
    return:
    
    [DISABLE]
    _Hp:
    db 89 04 24 E8 18 E0 AC 00
    unregistersymbol(doub)
    unregistersymbol(_Hp)
    dealloc(newmem)
    {
    // ORIGINAL CODE - INJECTION POINT: Loop Hero.exe+C2E1F0
    Loop Hero.exe+C2E1AF: C7 46 38 00 00 00 00           - mov [esi+38],00000000
    Loop Hero.exe+C2E1B6: C7 86 68 05 00 00 A6 00 00 00  - mov [esi+00000568],000000A6
    Loop Hero.exe+C2E1C0: F3 0F 7E 05 28 9B BB 01        - movq xmm0,["Loop Hero.exe"+1B69B28]
    Loop Hero.exe+C2E1C8: C7 46 2C 4A 00 00 00           - mov [esi+2C],0000004A
    Loop Hero.exe+C2E1CF: 83 EC 14                       - sub esp,14
    Loop Hero.exe+C2E1D2: 8B 86 EC 01 00 00              - mov eax,[esi+000001EC]
    Loop Hero.exe+C2E1D8: 66 0F D6 44 24 08              - movq [esp+08],xmm0
    Loop Hero.exe+C2E1DE: C7 44 24 10 01 00 00 00        - mov [esp+10],00000001
    Loop Hero.exe+C2E1E6: 89 44 24 04                    - mov [esp+04],eax
    Loop Hero.exe+C2E1EA: 8B 86 10 01 00 00              - mov eax,[esi+00000110]
    // ---------- INJECTING HERE ----------
    Loop Hero.exe+C2E1F0: 89 04 24                       - mov [esp],eax
    // ---------- DONE INJECTING  ----------
    Loop Hero.exe+C2E1F3: E8 18 E0 AC 00                 - call "Loop Hero.exe"+16FC210
    Loop Hero.exe+C2E1F8: 83 C4 14                       - add esp,14
    Loop Hero.exe+C2E1FB: 85 C0                          - test eax,eax
    Loop Hero.exe+C2E1FD: 7E 30                          - jle "Loop Hero.exe"+C2E22F
    Loop Hero.exe+C2E1FF: C7 46 2C 4A 00 00 00           - mov [esi+2C],0000004A
    Loop Hero.exe+C2E206: FF 35 20 E7 C4 01              - push ["Loop Hero.exe"+1BFE720]
    Loop Hero.exe+C2E20C: E8 EF E1 AB 00                 - call "Loop Hero.exe"+16EC400
    Loop Hero.exe+C2E211: 83 C4 04                       - add esp,04
    Loop Hero.exe+C2E214: 8B 8E 10 01 00 00              - mov ecx,[esi+00000110]
    Loop Hero.exe+C2E21A: FF B6 EC 01 00 00              - push [esi+000001EC]
    }

     

     

  12. Есть игра Loop Hero она сделана в game maker*е

    Поэтому всё хранится как double.

    Вопрос в том как работать с double через стек?

    С float всё понятно fld fstp

    Выкрутился так

    Спойлер
    
    [ENABLE]
    aobscanmodule(_Hp,Loop Hero.exe,89 04 ? e8 ? ? ? ? 83 c4 ? 85 c0 7e ? c7 46 2c)
    alloc(newmem,$1000)
    label(doub)
    label(return)
    registersymbol(doub)
    registersymbol(_Hp)
    
    newmem:
      movsd xmm2,[doub]
      movsd [eax],xmm2
      xorpd xmm2,xmm2
      mov [esp],eax
      call "Loop Hero.exe"+16FC210
      jmp return
    
    doub:
    dq (double)1000
    
    _Hp:
      jmp newmem
      nop 3
    return:
    
    [DISABLE]
    _Hp:
    db 89 04 24 E8 18 E0 AC 00
    unregistersymbol(doub)
    unregistersymbol(_Hp)
    dealloc(newmem)
    {
    // ORIGINAL CODE - INJECTION POINT: Loop Hero.exe+C2E1F0
    Loop Hero.exe+C2E1AF: C7 46 38 00 00 00 00           - mov [esi+38],00000000
    Loop Hero.exe+C2E1B6: C7 86 68 05 00 00 A6 00 00 00  - mov [esi+00000568],000000A6
    Loop Hero.exe+C2E1C0: F3 0F 7E 05 28 9B BB 01        - movq xmm0,["Loop Hero.exe"+1B69B28]
    Loop Hero.exe+C2E1C8: C7 46 2C 4A 00 00 00           - mov [esi+2C],0000004A
    Loop Hero.exe+C2E1CF: 83 EC 14                       - sub esp,14
    Loop Hero.exe+C2E1D2: 8B 86 EC 01 00 00              - mov eax,[esi+000001EC]
    Loop Hero.exe+C2E1D8: 66 0F D6 44 24 08              - movq [esp+08],xmm0
    Loop Hero.exe+C2E1DE: C7 44 24 10 01 00 00 00        - mov [esp+10],00000001
    Loop Hero.exe+C2E1E6: 89 44 24 04                    - mov [esp+04],eax
    Loop Hero.exe+C2E1EA: 8B 86 10 01 00 00              - mov eax,[esi+00000110]
    // ---------- INJECTING HERE ----------
    Loop Hero.exe+C2E1F0: 89 04 24                       - mov [esp],eax
    // ---------- DONE INJECTING  ----------
    Loop Hero.exe+C2E1F3: E8 18 E0 AC 00                 - call "Loop Hero.exe"+16FC210
    Loop Hero.exe+C2E1F8: 83 C4 14                       - add esp,14
    Loop Hero.exe+C2E1FB: 85 C0                          - test eax,eax
    Loop Hero.exe+C2E1FD: 7E 30                          - jle "Loop Hero.exe"+C2E22F
    Loop Hero.exe+C2E1FF: C7 46 2C 4A 00 00 00           - mov [esi+2C],0000004A
    Loop Hero.exe+C2E206: FF 35 20 E7 C4 01              - push ["Loop Hero.exe"+1BFE720]
    Loop Hero.exe+C2E20C: E8 EF E1 AB 00                 - call "Loop Hero.exe"+16EC400
    Loop Hero.exe+C2E211: 83 C4 04                       - add esp,04
    Loop Hero.exe+C2E214: 8B 8E 10 01 00 00              - mov ecx,[esi+00000110]
    Loop Hero.exe+C2E21A: FF B6 EC 01 00 00              - push [esi+000001EC]
    }

     

    xmm2 изначально был равен нулю

    как в [eax] правильно записать 1000 double????

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

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

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