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

Жажда Знаний

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

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

  • Посещение

Сообщения, опубликованные Жажда Знаний

  1. Спойлер

    mov rcx,rbx
    "EoCApp.exe"+161DBC6: 89 43 28                 -  mov [rbx+28],eax
    "EoCApp.exe"+161DBC9: F3 41 0F 10 4D 2C        -  movss xmm1,[r13+2C]
    "EoCApp.exe"+161DBCF: E8 3C 75 FC FF           -  call EoCApp.exe+15E5110
    "EoCApp.exe"+161DBD4: 48 8B D3                 -  mov rdx,rbx
    "EoCApp.exe"+161DBD7: 48 8B CF                 -  mov rcx,rdi
    "EoCApp.exe"+161DBDA: E8 A1 B7 E5 FF           -  call EoCApp.exe+1479380
    "EoCApp.exe"+161DBDF: E9 94 FD FF FF           -  jmp EoCApp.exe+161D978
    "EoCApp.exe"+161DBE4: 49 8B 76 08              -  mov rsi,[r14+08]
    "EoCApp.exe"+161DBE8: 41 8B 4E 14              -  mov ecx,[r14+14]
    // ---------- INJECTING HERE ----------
    "EoCApp.exe"+161DBEC: F3 45 0F 10 4D 28        -  movss xmm9,[r13+28]
    // ---------- DONE INJECTING  ----------
    "EoCApp.exe"+161DBF2: F3 45 0F 59 CC           -  mulss xmm9,xmm12
    "EoCApp.exe"+161DBF7: 4C 8D 34 CE              -  lea r14,[rsi+rcx*8]
    "EoCApp.exe"+161DBFB: 4C 3B F6                 -  cmp r14,rsi
    "EoCApp.exe"+161DBFE: 0F 84 80 FD FF FF        -  je EoCApp.exe+161D984
    "EoCApp.exe"+161DC04: 48 8B 7C 24 60           -  mov rdi,[rsp+60]
    "EoCApp.exe"+161DC09: 0F 1F 80 00 00 00 00     -  nop [rax+00000000]
    "EoCApp.exe"+161DC10: 48 8B 1E                 -  mov rbx,[rsi]
    "EoCApp.exe"+161DC13: 48 85 FF                 -  test rdi,rdi
    "EoCApp.exe"+161DC16: 74 35                    -  je EoCApp.exe+161DC4D
    "EoCApp.exe"+161DC18: 4D 85 E4                 -  test r12,r12
    }

    Вот логи. Фильтра правильный, но ваш вариант неправильный, выдает ошибку. В скрипте смещение на ходы не 28 а 2c. Регистр r12 выходит на структуру игрока по указателям, r13  только по параметрам оружия и эффектов.

  2. Привет. Помогите найти решение данной  задачи. Как сделать код что бы он работал только с игроком, Id игрока и врага есть, но структура параметров оружия и эффектов является общей . Как сделать что бы значение установленные мной работали с героем а с врагами восстанавливались оригинальные значения ?

     

    Спойлер
    
    push r8
    mov r8, [r12+120]
    cmp [r8+340], 44E74000  // Enemy-44B54000; Player-44E74000
    pop r8
    jne @f
    
    
    
    push rdi
    mov rdi,(float)0.30 // добавляет 30% к вероятности срабатывания эффекта оружия
    movd xmm11,rdi
    addps xmm9,xmm11
    
    mov [r13+28],(float)18 // Это количество ходов от эффекта оружия , заклинаний и умений оно меняется у всех, т.к структура общая.
    
    pop rdi
    
    
    
    @@:
    
    movss xmm9,[r13+28] // Оригинальная инструкция
    
    mulss xmm9,xmm12
    
    jmp return

     

     

  3. Garik66я не пойму пойму почему выдает ошибку когда регистр используешь esi,? При точке останова брекпойнта его видно. Про регистр    ebp я имел в виду что если присвоить ресурсы например - горючее ebp=1, боеприпасы ebp=2, и так далее

  4. ReWanetСмотри,если взять регистр ebx как единицу  обозначение ресурса, например 4 ресурса присвоить к  ebp1,ebp2,ebp3,ebp4 и как сделать их что бы записать за место регистра eax, регистр сравнения esi, что бы игра не выдавала ошибку. ?

  5. ReWanet, да думаю ты прав,потому что когда пишу с ebx то работает нормально, но тогда не работает фильтр на игрока. Как бы правильно это Записать ?

    cmp [eax+13c],0
    jne @f

    @@:           // так не пойдет ?
    cmp ebx,5
    jne @f

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

    define(address,"RelicCoH2.exe"+F756E2)
    define(bytes,F3 0F 10 41 04)

    [ENABLE]

    assert(address,bytes)
    alloc(newmem,$1000)

    label(code)
    label(return)

    newmem:

    code:
    cmp [eax+13c],0
    jne @f
    //cmp ebx,5
    //jne @f
    mov [esp+58],(float)0
    mov [esp+5c],(float)0
    mov [esp+60],(float)0
    mov [esp+64],(float)0
    movss xmm0,[ecx+04]
    jmp return
    @@:
      movss xmm0,[ecx+04]
      jmp return

    address:
      jmp newmem
    return:

    [DISABLE]

    address:
      db bytes
      // movss xmm0,[ecx+04]

    dealloc(newmem)

    {
    // ORIGINAL CODE - INJECTION POINT: "RelicCoH2.exe"+F756E2

    "RelicCoH2.exe"+F756CB: CC                    -  int 3 
    "RelicCoH2.exe"+F756CC: CC                    -  int 3 
    "RelicCoH2.exe"+F756CD: CC                    -  int 3 
    "RelicCoH2.exe"+F756CE: CC                    -  int 3 
    "RelicCoH2.exe"+F756CF: CC                    -  int 3 
    "RelicCoH2.exe"+F756D0: 8B C1                 -  mov eax,ecx
    "RelicCoH2.exe"+F756D2: 8B 4C 24 04           -  mov ecx,[esp+04]
    "RelicCoH2.exe"+F756D6: F3 0F 10 01           -  movss xmm0,[ecx]
    "RelicCoH2.exe"+F756DA: F3 0F 58 00           -  addss xmm0,[eax]
    "RelicCoH2.exe"+F756DE: F3 0F 11 00           -  movss [eax],xmm0
    // ---------- INJECTING HERE ----------
    "RelicCoH2.exe"+F756E2: F3 0F 10 41 04        -  movss xmm0,[ecx+04]
    // ---------- DONE INJECTING  ----------
    "RelicCoH2.exe"+F756E7: F3 0F 58 40 04        -  addss xmm0,[eax+04]
    "RelicCoH2.exe"+F756EC: F3 0F 11 40 04        -  movss [eax+04],xmm0
    "RelicCoH2.exe"+F756F1: F3 0F 10 41 08        -  movss xmm0,[ecx+08]
    "RelicCoH2.exe"+F756F6: F3 0F 58 40 08        -  addss xmm0,[eax+08]
    "RelicCoH2.exe"+F756FB: F3 0F 11 40 08        -  movss [eax+08],xmm0
    "RelicCoH2.exe"+F75700: F3 0F 10 41 0C        -  movss xmm0,[ecx+0C]
    "RelicCoH2.exe"+F75705: F3 0F 58 40 0C        -  addss xmm0,[eax+0C]
    "RelicCoH2.exe"+F7570A: F3 0F 11 40 0C        -  movss [eax+0C],xmm0
    "RelicCoH2.exe"+F7570F: F3 0F 10 41 10        -  movss xmm0,[ecx+10]
    "RelicCoH2.exe"+F75714: F3 0F 58 40 10        -  addss xmm0,[eax+10]
    }

    Вот скрипт который нужен, первый я брал как альтернативный вариант потому что ни какие инструкции не работают., перед этим я перепробовал все варианты прежде обращаться за помощью и уверяю что первый скрипт написан правильно потому как скрипты по другим значениям написаны по такому принципу и работают без ошибок. Тут в этом скрипте Регистр Есх это стек, поэтому я пишу сразу напрямую в стек. Бывает что игра какое то время работает затем вылетает. Инструкция работает с множество адресами.

  7. Не совсем понимаю что значит с логами?  Полностью скрипт ? Esi потому что это тот же самый регистр eax только полный не с нулевым смещением как  eax. Инструкции 2 потому как происходит разветвление  инструкции на 2 части отдельно, она обрабатывается первой. Суть в том как записать инструкцию с сохранением флагов и регистров в стек, чтоб игра не выдавала ошибку.? 

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

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

    cmp [esi+1b8],0
    jne @f
    mov [esi+7c],(float)ххх
    fstp dword ptr [eax]
    jmp return
    @@:
      fstp dword ptr [eax]
      cmp ebp,08
      jmp return

    вот одна из инструкций, может тут необходимо добавить сохранения флагов и регистров ? у меня ничего не вышло(

  9. Всем привет. Никак не могу присвоить Свое значение или умножение такой инструкции как: fld dword ptr [esp+04]

    Можно ли присвоить ей свою инструкцию? что бы помножить на свое число, например на 2

     

    fld dword ptr [esp+04] // вот инструкция, отсюда происходит загрузка значений затем сохраняется в память.
    fstp dword ptr [ecx+24]

     

    Я использовал такой вариант

     

    fld dword ptr [esp+04]
    fadd  [esp+04]

     fstp dword ptr [ecx+24] .// При таком варианте сложение получается большое, зависит от возрастания затем складывается Вдвойне. Такой вариант мне не очень подходит. Если присвоить ESP Свое значение например 50 то 50 постоянно висит в памяти. 

    Можно ли сделать этой инструкции  умножение  на 2 и без флагов ?

  10. Спасибо за помощь. Теперь я стал сильнее. Кстати Великий Keng почему то не смог это решить. Сказал что это возможно на другом языке програмирования

  11. 41 минуты назад, Foxhound сказал:

     

    Поясни пожалуйста, в этом месте
    mov ecx, dword ptr [edx+40]
    mov ecx, dword ptr [edx+b4]
    мне не совсем понятно, во второй строке почему [edx+b4], а не [ecx+b4]?

    Потому что с есх не срабатывало, потому пробовал разные варианты

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

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

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