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

CHBS

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

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

  • Посещение

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

  1. 16 часов назад, Hack сказал:

    (стр 1170)

    Использование префикса REX.W продвигает работу до 64 бит.

    Спасибо за информацию, а [C6 /0 ib] -  [MOV r/m8, imm8]  из этой инструкции, /0 ib чем является?

     

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

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

     

     

    это двойной опкод, С6 87 - mov byte rdi, в таблице интеловских доков написано ведь.

     

    image.png.38b0deba0acf1351119ba54f6f6e8a2d.png

     

    О, как, спасибо большое, я просто голову ломал из-за порядка байт, разворачивал но получалось 87 C6 D0 00 00 00 01, стало намного яснее.
    По поводу не загоняйся - мне просто стало интересно из чего сигнатура строится, еще нужно бы понимать, какие аргументы меняются и как их определять, понятное дело что mov это опкод и он будет неизменным в сигнатуре, но вот может ли сменится регистр в блоке инструкций или он уже назначен на rdi? Просто у него сигнатуру кончилась до этого опкода, если же посмотреть на предыдущую инструкцию

    // 4C 8B 35 F3 A8 2A 02    mov     r14, cs:_g_pGameEntitySystem

    35 тут к чему будет относится?

    9 часов назад, Xipho сказал:

    У Криса Касперски есть отличная книга "Дизассемблирование в уме". Там он приводит примеры формирования опкодов. Весьма рекомендую к прочтению.

    Спасибо, она? [CENSORED]

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

     

    Расширение для r регистров r8-r15

    Всё равно не ясно, ведь 41 опкод зарезервирован для инструкции INC, та же кстати история с

    // C6 87 D0 00 00 00 01    mov     byte ptr [rdi+0D0h], 1
    // 49 8B 3E                mov     rdi, [r14]

    Даже если документацию открыть на 1169 странице,

    https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf,

    То опкоды MOV начинаются с 88+, что там делает в первой строке 87 мне не понятно, а еще более не понятен порядок байт, должно быть либо с лева, либо с права на лево, а опкоды по середине почему-то.

     

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

    советую прочитать их и использовать как справочник.

    Да там же 5 тысяч страниц, https://en.wikipedia.org/wiki/X86_instruction_listings

    Даже тут не указано про что инструкция push может иметь назначение опкода 41.

    // 41 55                   push    r13

    Если я все правильно понял, то r13 это регистр общего назначения, и push у него должен быть соответственно в диапазоне 0x50-0x57, в чём подвох?

     

     

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

    Вопрос возник при изучении исходного кода одного из сканнеров сигнатур https://github.com/LWSS/McDota/blob/master/src/Scanner.cpp

     

    Если мы допустим откроем что нибудь в отладчике, увидим набор инструкций и их опкодов с аргументами, вопрос вот в этом моменте

    // 55                      push    rbp
    // 48 89 E5                mov     rbp, rsp
    // 41 56                   push    r14
    // 4C 8B 35 F3 A8 2A 02    mov     r14, cs:_g_pGameEntitySystem
    // 41 55                   push    r13
    // 49 89 FD                mov     r13, rdi
    // 41 54                   push    r12
    // 53                      push    rbx
    // 31 DB                   xor     ebx, ebx
    // C6 87 D0 00 00 00 01    mov     byte ptr [rdi+0D0h], 1
    // 49 8B 3E                mov     rdi, [r14]
    // E8 EA 4B E2 FF          call    CGameEntitySystem__GetHighestEntityIndex
    
    PatternFinder::FindPatternInModule("libclient.so", "55 48 89 E5 41 56 4C 8B 35 ?? ?? ?? ?? 41 55 49 89 FD 41 54 53 31", "reinitPredictables");
    

    Не могу понять какой байт имеет опкод push? если посмотреть на первую строку из кода то мы видим 55, но почему не указан аргумент rbp?

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

    55[push] 89[rbp] например.

    В следующей же строке это все присутствует

    48[mov] 89[rbp] e5[rsp]

     

    Так почему же в первой строке где у нас push rbp, не указан байт-аргумент?

    Так-же почему  3-ья строка имеет другой опкод отличный от первого?

    41[push] 56[r14], если push вроде как должен быть 55?


    Я знаю что я как-то не так интерпретирую информацию, что очень скажется на конечном результате изучения, поэтому и задал вопрос, поставьте сразу на правильный путь, почему отладчик так выводит назначение опкодов  и аргументов?

  5. Скрытый текст
    
    local i = 1
    local b = 1
    
    function createPointSaver()	-- Это функция Создания Edit
    	local editLine = {};
    	table.insert(editLine, createEdit(UDF1_CEPanel2));
    	table.insert(editLine, createEdit(UDF1_CEPanel2))
    	table.insert(editLine, createEdit(UDF1_CEPanel2))
    	table.insert(editLine, createEdit(UDF1_CEPanel2))
    
    	for key, value in pairs(editLine) do
    		control_setCaption(value, "EDIT: " .. tostring(b));	-- Параметры для Editв
    		control_setPosition(value, (key*90) - 75, 15*i);
    		value.height = 16;
    		value.width = 80;
    		value.maxlength = 10;
    		value.font.name = "Arial";
    		value.font.size = 8;
    		value.font.color = "0xFFFFFF";
    		value.color = "0x533F3F";
    		value.borderstyle = "bsNone";
    		value.name = "SPoint"..b.."";
    		b = b + 1;
    	end
    end
    
    function CEButton1Click(sender)	-- Функция по нажатию вызывает функцию выше и создает Edit\ы
    	createPointSaver()
    	i = i + 1.5
    	UDF1.CELabel1.Caption = wincontrol_getControlCount(UDF1_CEPanel2)
    end

     

    На счёт key, value in pairs(editLine) там может быть ошибка, так что глаза в оба, протестить не могу, ибо не знаю как, где находятся UDF1 элемент и его панели?

  6. В 17.11.2017 в 19:34, elvis66666 сказал:

     Kernel32.Sleep(Int32)

     mov eax, 0x74c37990

    Хотелось бы узнать, а адрес 0x74c37990 откуда был взят?

    Он статический во всей памяти, или конкретно вопрос как собственно найти адрес у этой функции непосредственно в CE?

  7. Ну юмористы xDDD

     

    19 часов назад, Garik66 сказал:

    у тебя 6-мерное пространство

    Что-то типо того, я же в координаты должен засунуть еще и углы поворота машины, а потом восстановить как было))

    Вопросов по телепорту не осталось, спасибо @ReWanet за оказанную помощь. объяснил что и как и к чему))

  8. @ReWanetТак должно быть?

     

    Скрытый текст
    
    [ENABLE]
    aobscanmodule(INJECT,SPEED2.EXE,D9 40 28 83 C0 30) // should be unique
    alloc(newmem,$1000)
    globalalloc(pos, 18)
    alloc(pflag, 1)
    
    registersymbol(pflag)
    registersymbol(pos)
    
    label(pflag)
    label(pos)
    label(store)
    label(restore)
    label(code)
    label(return)
    
    newmem:
      cmp byte ptr [pflag], 1
      je store
      cmp byte ptr [pflag], 2
      je restore
    
    code:
      fld dword ptr [eax+28]
      add eax,30
      jmp return
    
    store:
      fld dword ptr [eax+20]
      fstp dword ptr [pos+0]
    
      fld dword ptr [eax+24]
      fstp dword ptr [pos+04]
    
      fld dword ptr [eax+28]
      fstp dword ptr [pos+08]
    
      fld dword ptr [eax+30]
      fstp dword ptr [pos+10]
    
      fld dword ptr [eax+34]
      fstp dword ptr [pos+14]
    
      fld dword ptr [eax+38]
      fstp dword ptr [pos+18]
    
      mov dword ptr [pflag], 3
      jmp code
    
    restore:
      fld dword ptr [pos+0]
      fstp dword ptr [eax+20]
    
      fld dword ptr [pos+04]
      fstp dword ptr [eax+24]
    
      fld dword ptr [pos+08]
      fstp dword ptr [eax+28]
    
      fld dword ptr [pos+10]
      fstp dword ptr [eax+30]
    
      fld dword ptr [pos+14]
      fstp dword ptr [eax+34]
    
      fld dword ptr [pos+18]
      fstp dword ptr [eax+38]
      mov dword ptr [pflag], 3
      jmp code
    
    pflag:
      dd 3
    pos:
      db 00000000 00000000 00000000
    
    
    
    
    INJECT:
      jmp newmem
      nop
    return:
    registersymbol(INJECT)
    
    
    
    [DISABLE]
    
    INJECT:
      db D9 40 28 83 C0 30
    unregistersymbol(pflag)
    unregistersymbol(pos)
    unregistersymbol(INJECT)
    dealloc(pos)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "SPEED2.EXE"+1A8489
    
    "SPEED2.EXE"+1A8462: 8D 4C 24 28                    -  lea ecx,[esp+28]
    "SPEED2.EXE"+1A8466: 51                             -  push ecx
    "SPEED2.EXE"+1A8467: E8 B4 45 E9 FF                 -  call SPEED2.EXE+3CA20
    "SPEED2.EXE"+1A846C: D9 44 24 2C                    -  fld dword ptr [esp+2C]
    "SPEED2.EXE"+1A8470: 8B 86 A4 00 00 00              -  mov eax,[esi+000000A4]
    "SPEED2.EXE"+1A8476: D8 40 20                       -  fadd dword ptr [eax+20]
    "SPEED2.EXE"+1A8479: 8B 8E A0 00 00 00              -  mov ecx,[esi+000000A0]
    "SPEED2.EXE"+1A847F: D9 40 24                       -  fld dword ptr [eax+24]
    "SPEED2.EXE"+1A8482: 83 C4 0C                       -  add esp,0C
    "SPEED2.EXE"+1A8485: D8 44 24 24                    -  fadd dword ptr [esp+24]
    // ---------- INJECTING HERE ----------
    "SPEED2.EXE"+1A8489: D9 40 28                       -  fld dword ptr [eax+28]
    "SPEED2.EXE"+1A848C: 83 C0 30                       -  add eax,30
    // ---------- DONE INJECTING  ----------
    "SPEED2.EXE"+1A848F: D8 44 24 28                    -  fadd dword ptr [esp+28]
    "SPEED2.EXE"+1A8493: 50                             -  push eax
    "SPEED2.EXE"+1A8494: 8D 44 24 24                    -  lea eax,[esp+24]
    "SPEED2.EXE"+1A8498: D9 5C 24 3C                    -  fstp dword ptr [esp+3C]
    "SPEED2.EXE"+1A849C: 8B 54 24 3C                    -  mov edx,[esp+3C]
    "SPEED2.EXE"+1A84A0: D9 C9                          -  fxch st(1)
    "SPEED2.EXE"+1A84A2: 50                             -  push eax
    "SPEED2.EXE"+1A84A3: D9 5C 24 28                    -  fstp dword ptr [esp+28]
    "SPEED2.EXE"+1A84A7: 89 54 24 30                    -  mov [esp+30],edx
    "SPEED2.EXE"+1A84AB: 8D 91 14 01 00 00              -  lea edx,[ecx+00000114]
    }

     

     

  9.  

    Рабочий

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

     

    
    [ENABLE]
    aobscanmodule(INJECT,SPEED2.EXE,D9 40 28 83 C0 30) // should be unique
    alloc(newmem,$1000)
    globalalloc(pflag, 1)
    globalalloc(pos, 18)
    
    label(code)
    label(return)
    
    label(pflag)
    registersymbol(pflag)
    label(pos)
    registersymbol(pos)
    label(store)
    registersymbol(store)
    label(restore)
    registersymbol(restore)
    
    newmem:
      cmp byte ptr [pflag], 1
      je store
      cmp byte ptr [pflag], 2
      je restore
    
    code:
      fld dword ptr [eax+28]
      add eax,30
      jmp return
    
    store:
      fld dword ptr [eax+20]
      fstp dword ptr [pos+0]
    
      fld dword ptr [eax+24]
      fstp dword ptr [pos+04]
    
      fld dword ptr [eax+28]
      fstp dword ptr [pos+08]
    
      fld dword ptr [eax+30]
      fstp dword ptr [pos+10]
    
      fld dword ptr [eax+34]
      fstp dword ptr [pos+14]
    
      fld dword ptr [eax+38]
      fstp dword ptr [pos+18]
    
      mov dword ptr [pflag], 3
      jmp code
    
    restore:
      fld dword ptr [pos+0]
      fstp dword ptr [eax+20]
    
      fld dword ptr [pos+04]
      fstp dword ptr [eax+24]
    
      fld dword ptr [pos+08]
      fstp dword ptr [eax+28]
    
      fld dword ptr [pos+10]
      fstp dword ptr [eax+30]
    
      fld dword ptr [pos+14]
      fstp dword ptr [eax+34]
    
      fld dword ptr [pos+18]
      fstp dword ptr [eax+38]
      mov dword ptr [pflag], 3
      jmp code
    
    pflag:
      dd 3
    pos:
      db 00000000 00000000 00000000
    
    
    
    
    INJECT:
      jmp newmem
      nop
    return:
    registersymbol(INJECT)
    
    
    
    [DISABLE]
    
    INJECT:
      db D9 40 28 83 C0 30
    unregistersymbol(pflag)
    unregistersymbol(pos)
    unregistersymbol(store)
    unregistersymbol(restore)
    unregistersymbol(INJECT)
    dealloc(pflag)
    dealloc(pos)
    
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "SPEED2.EXE"+1A8489
    
    "SPEED2.EXE"+1A8462: 8D 4C 24 28                    -  lea ecx,[esp+28]
    "SPEED2.EXE"+1A8466: 51                             -  push ecx
    "SPEED2.EXE"+1A8467: E8 B4 45 E9 FF                 -  call SPEED2.EXE+3CA20
    "SPEED2.EXE"+1A846C: D9 44 24 2C                    -  fld dword ptr [esp+2C]
    "SPEED2.EXE"+1A8470: 8B 86 A4 00 00 00              -  mov eax,[esi+000000A4]
    "SPEED2.EXE"+1A8476: D8 40 20                       -  fadd dword ptr [eax+20]
    "SPEED2.EXE"+1A8479: 8B 8E A0 00 00 00              -  mov ecx,[esi+000000A0]
    "SPEED2.EXE"+1A847F: D9 40 24                       -  fld dword ptr [eax+24]
    "SPEED2.EXE"+1A8482: 83 C4 0C                       -  add esp,0C
    "SPEED2.EXE"+1A8485: D8 44 24 24                    -  fadd dword ptr [esp+24]
    // ---------- INJECTING HERE ----------
    "SPEED2.EXE"+1A8489: D9 40 28                       -  fld dword ptr [eax+28]
    "SPEED2.EXE"+1A848C: 83 C0 30                       -  add eax,30
    // ---------- DONE INJECTING  ----------
    "SPEED2.EXE"+1A848F: D8 44 24 28                    -  fadd dword ptr [esp+28]
    "SPEED2.EXE"+1A8493: 50                             -  push eax
    "SPEED2.EXE"+1A8494: 8D 44 24 24                    -  lea eax,[esp+24]
    "SPEED2.EXE"+1A8498: D9 5C 24 3C                    -  fstp dword ptr [esp+3C]
    "SPEED2.EXE"+1A849C: 8B 54 24 3C                    -  mov edx,[esp+3C]
    "SPEED2.EXE"+1A84A0: D9 C9                          -  fxch st(1)
    "SPEED2.EXE"+1A84A2: 50                             -  push eax
    "SPEED2.EXE"+1A84A3: D9 5C 24 28                    -  fstp dword ptr [esp+28]
    "SPEED2.EXE"+1A84A7: 89 54 24 30                    -  mov [esp+30],edx
    "SPEED2.EXE"+1A84AB: 8D 91 14 01 00 00              -  lea edx,[ecx+00000114]
    }

     

     

    Не рабочий

    Скрытый текст
    
    [ENABLE]
    aobscanmodule(INJECT,SPEED2.EXE,D9 40 28 83 C0 30) // should be unique
    alloc(newmem,$1000)
    globalalloc(pos, 18)
    alloc(pflag, 1)
    
    registersymbol(pflag)
    registersymbol(pos)
    registersymbol(store)
    registersymbol(restore)
    
    label(pflag)
    label(pos)
    label(store)
    label(restore)
    label(code)
    label(return)
    
    newmem:
      cmp byte ptr [pflag], 1
      je store
      cmp byte ptr [pflag], 2
      je restore
    
    code:
      fld dword ptr [eax+28]
      add eax,30
      jmp return
    
    store:
      fld dword ptr [eax+20]
      fstp dword ptr [pos+0]
    
      fld dword ptr [eax+24]
      fstp dword ptr [pos+04]
    
      fld dword ptr [eax+28]
      fstp dword ptr [pos+08]
    
      fld dword ptr [eax+30]
      fstp dword ptr [pos+10]
    
      fld dword ptr [eax+34]
      fstp dword ptr [pos+14]
    
      fld dword ptr [eax+38]
      fstp dword ptr [pos+18]
    
      mov dword ptr [pflag], 3
      jmp code
    
    restore:
      fld dword ptr [pos+0]
      fstp dword ptr [eax+20]
    
      fld dword ptr [pos+04]
      fstp dword ptr [eax+24]
    
      fld dword ptr [pos+08]
      fstp dword ptr [eax+28]
    
      fld dword ptr [pos+10]
      fstp dword ptr [eax+30]
    
      fld dword ptr [pos+14]
      fstp dword ptr [eax+34]
    
      fld dword ptr [pos+18]
      fstp dword ptr [eax+38]
      mov dword ptr [pflag], 3
      jmp code
    
    pflag:
      dd 3
    pos:
      db 00000000 00000000 00000000
    
    
    
    
    INJECT:
      jmp newmem
      nop
    return:
    registersymbol(INJECT)
    
    
    
    [DISABLE]
    
    INJECT:
      db D9 40 28 83 C0 30
    unregistersymbol(pflag)
    unregistersymbol(pos)
    unregistersymbol(store)
    unregistersymbol(restore)
    unregistersymbol(INJECT)
    dealloc(pflag)
    dealloc(pos)
    
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "SPEED2.EXE"+1A8489
    
    "SPEED2.EXE"+1A8462: 8D 4C 24 28                    -  lea ecx,[esp+28]
    "SPEED2.EXE"+1A8466: 51                             -  push ecx
    "SPEED2.EXE"+1A8467: E8 B4 45 E9 FF                 -  call SPEED2.EXE+3CA20
    "SPEED2.EXE"+1A846C: D9 44 24 2C                    -  fld dword ptr [esp+2C]
    "SPEED2.EXE"+1A8470: 8B 86 A4 00 00 00              -  mov eax,[esi+000000A4]
    "SPEED2.EXE"+1A8476: D8 40 20                       -  fadd dword ptr [eax+20]
    "SPEED2.EXE"+1A8479: 8B 8E A0 00 00 00              -  mov ecx,[esi+000000A0]
    "SPEED2.EXE"+1A847F: D9 40 24                       -  fld dword ptr [eax+24]
    "SPEED2.EXE"+1A8482: 83 C4 0C                       -  add esp,0C
    "SPEED2.EXE"+1A8485: D8 44 24 24                    -  fadd dword ptr [esp+24]
    // ---------- INJECTING HERE ----------
    "SPEED2.EXE"+1A8489: D9 40 28                       -  fld dword ptr [eax+28]
    "SPEED2.EXE"+1A848C: 83 C0 30                       -  add eax,30
    // ---------- DONE INJECTING  ----------
    "SPEED2.EXE"+1A848F: D8 44 24 28                    -  fadd dword ptr [esp+28]
    "SPEED2.EXE"+1A8493: 50                             -  push eax
    "SPEED2.EXE"+1A8494: 8D 44 24 24                    -  lea eax,[esp+24]
    "SPEED2.EXE"+1A8498: D9 5C 24 3C                    -  fstp dword ptr [esp+3C]
    "SPEED2.EXE"+1A849C: 8B 54 24 3C                    -  mov edx,[esp+3C]
    "SPEED2.EXE"+1A84A0: D9 C9                          -  fxch st(1)
    "SPEED2.EXE"+1A84A2: 50                             -  push eax
    "SPEED2.EXE"+1A84A3: D9 5C 24 28                    -  fstp dword ptr [esp+28]
    "SPEED2.EXE"+1A84A7: 89 54 24 30                    -  mov [esp+30],edx
    "SPEED2.EXE"+1A84AB: 8D 91 14 01 00 00              -  lea edx,[ecx+00000114]
    }

     

     

  10. Не могу редактировать.

     

    Вообщем проблема странная, будто pos обнуляется, т.е первые раз я сохраняю позицию, выполняя метку store:
    далее я проезжаю сколько то метров, выполняю метку restore: меня телепортирует, а если проехать например пару сотен метров, то pos вовсе будет держать в себе значения рандомного флоата, например моя настоящая позиция

    x = 3000, y = -2000, z = 200

    в posX = 1.3141431413E+4, posY = 2.13123123123E+4, posZ = 0.31413413413

    Не могу понять почему так происходит, вроде pos не должен записываться пока я не выполню метку store, все выполняется по клавишам

    Скрытый текст
    
    [ENABLE]
    aobscanmodule(INJECT, speed2.exe, D9 5E F0 D9 84 24 4C 02 00 00)
    alloc(newmem, $1000)
    alloc(pos, 12)
    
    label(pflag)
    label(store)
    label(restore)
    label(code)
    label(return)
    registersymbol(pflag)
    
    
    newmem:
      cmp byte ptr [pflag], 0
      je store
      cmp byte ptr [pflag], 1
      je restore
    code:
      fstp dword ptr [esi-10]
      fld dword ptr [esp+0000024C]
      jmp return
    
    pflag:
      db 3
    
    store:
      fld dword ptr [esi-0C]
      fstp dword ptr [pos+0]
    
      fld dword ptr [esi-08]
      fstp dword ptr [pos+8]
    
      fld dword ptr [esi-04]
      fstp dword ptr [pos+4]
    
      mov byte ptr [pflag], 3
      jmp code
    
    restore:
      fld dword ptr [pos+0]
      fstp dword ptr [esi-0c]
    
      fld dword ptr [pos+8]
      fstp dword ptr [esi-08]
    
      fld dword ptr [pos+4]
      fstp dword ptr [esi-04]
    
      mov byte ptr [pflag], 3
      jmp code
    
    INJECT:
      jmp newmem
      nop
      nop
      nop
      nop
      nop
    return:
    registersymbol(INJECT)
    
    
    
    [DISABLE]
    INJECT:
      db D9 5E F0 D9 84 24 4C 02 00 00
    unregistersymbol(store)
    unregistersymbol(restore)
    unregistersymbol(pflag)
    unregistersymbol(INJECT)
    
    dealloc(pos)
    dealloc(newmem)
    
    
    {
    // ORIGINAL CODE - INJECTION POINT: "speed2.exe"+1AA1ED
    
    "speed2.exe"+1AA1CC: 7C 54                    -  jl speed2.exe+1AA222
    "speed2.exe"+1AA1CE: B8 03 00 00 00           -  mov eax,00000003
    "speed2.exe"+1AA1D3: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA1DA: 83 C0 04                 -  add eax,04
    "speed2.exe"+1AA1DD: D8 0F                    -  fmul dword ptr [edi]
    "speed2.exe"+1AA1DF: 83 C1 04                 -  add ecx,04
    "speed2.exe"+1AA1E2: 83 C6 10                 -  add esi,10
    "speed2.exe"+1AA1E5: 83 C7 10                 -  add edi,10
    "speed2.exe"+1AA1E8: 3B C5                    -  cmp eax,ebp
    "speed2.exe"+1AA1EA: D8 46 F0                 -  fadd dword ptr [esi-10]
    // ---------- INJECTING HERE ----------
    "speed2.exe"+1AA1ED: D9 5E F0                 -  fstp dword ptr [esi-10]
    "speed2.exe"+1AA1F0: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    // ---------- DONE INJECTING  ----------
    "speed2.exe"+1AA1F7: D8 4F F4                 -  fmul dword ptr [edi-0C]
    "speed2.exe"+1AA1FA: D8 46 F4                 -  fadd dword ptr [esi-0C]
    "speed2.exe"+1AA1FD: D9 5E F4                 -  fstp dword ptr [esi-0C]
    "speed2.exe"+1AA200: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA207: D8 4F F8                 -  fmul dword ptr [edi-08]
    "speed2.exe"+1AA20A: D8 46 F8                 -  fadd dword ptr [esi-08]
    "speed2.exe"+1AA20D: D9 5E F8                 -  fstp dword ptr [esi-08]
    "speed2.exe"+1AA210: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA217: D8 4F FC                 -  fmul dword ptr [edi-04]
    "speed2.exe"+1AA21A: D8 46 FC                 -  fadd dword ptr [esi-04]
    }

     

     

     

  11. @ReWanet, спасибо большое, проблема решена, нужно было сместить restore, store вниз, непонятно почему так

     

     

    Код

    Скрытый текст
    
    [ENABLE]
    aobscanmodule(INJECT, speed2.exe, D9 5E F0 D9 84 24 4C 02 00 00)
    alloc(newmem, $1000)
    alloc(pos, 12)
    
    label(pflag)
    label(store)
    label(restore)
    label(code)
    label(return)
    registersymbol(pflag)
    
    store:
      fld dword ptr [esi-0c]
      fstp dword ptr [pos+0]
      fld dword ptr [esi-08]
      fstp dword ptr [pos+8]
      fld dword ptr [esi-04]
      fstp dword ptr [pos+4]
    
    restore:
      fld dword ptr [pos+0]
      fstp dword ptr [esi-0c]
      fld dword ptr [pos+8]
      fstp dword ptr [esi-08]
      fld dword ptr [pos+4]
      fstp dword ptr [esi-04]
    
    newmem:
      fstp dword ptr [esi-10]
      cmp byte ptr [pflag], 0
      je store
      jne restore
    code:
      fld dword ptr [esp+0000024C]
      jmp return
    
    pflag:
      db 3
    
    INJECT:
      jmp newmem
      nop
      nop
      nop
      nop
      nop
    return:
    registersymbol(INJECT)
    
    
    
    [DISABLE]
    INJECT:
      db D9 5E F0 D9 84 24 4C 02 00 00
    unregistersymbol(store)
    unregistersymbol(restore)
    unregistersymbol(pflag)
    unregistersymbol(INJECT)
    
    dealloc(pos)
    dealloc(newmem)
    
    
    {
    // ORIGINAL CODE - INJECTION POINT: "speed2.exe"+1AA1ED
    
    "speed2.exe"+1AA1CC: 7C 54                    -  jl speed2.exe+1AA222
    "speed2.exe"+1AA1CE: B8 03 00 00 00           -  mov eax,00000003
    "speed2.exe"+1AA1D3: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA1DA: 83 C0 04                 -  add eax,04
    "speed2.exe"+1AA1DD: D8 0F                    -  fmul dword ptr [edi]
    "speed2.exe"+1AA1DF: 83 C1 04                 -  add ecx,04
    "speed2.exe"+1AA1E2: 83 C6 10                 -  add esi,10
    "speed2.exe"+1AA1E5: 83 C7 10                 -  add edi,10
    "speed2.exe"+1AA1E8: 3B C5                    -  cmp eax,ebp
    "speed2.exe"+1AA1EA: D8 46 F0                 -  fadd dword ptr [esi-10]
    // ---------- INJECTING HERE ----------
    "speed2.exe"+1AA1ED: D9 5E F0                 -  fstp dword ptr [esi-10]
    "speed2.exe"+1AA1F0: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    // ---------- DONE INJECTING  ----------
    "speed2.exe"+1AA1F7: D8 4F F4                 -  fmul dword ptr [edi-0C]
    "speed2.exe"+1AA1FA: D8 46 F4                 -  fadd dword ptr [esi-0C]
    "speed2.exe"+1AA1FD: D9 5E F4                 -  fstp dword ptr [esi-0C]
    "speed2.exe"+1AA200: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA207: D8 4F F8                 -  fmul dword ptr [edi-08]
    "speed2.exe"+1AA20A: D8 46 F8                 -  fadd dword ptr [esi-08]
    "speed2.exe"+1AA20D: D9 5E F8                 -  fstp dword ptr [esi-08]
    "speed2.exe"+1AA210: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA217: D8 4F FC                 -  fmul dword ptr [edi-04]
    "speed2.exe"+1AA21A: D8 46 FC                 -  fadd dword ptr [esi-04]
    }

     

     

  12. 1 минуту назад, ReWanet сказал:

    Приписка на будущее

    Когда я писал, ее не было просто, сообщение отредактировано ведь

     

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

    Вылеты как раз из-за этого скорее.

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

  13. 57 минут назад, ReWanet сказал:

    ( INJECT ) не должно повторяться.

    О_о а где оно повторяется то?

     

    57 минут назад, ReWanet сказал:

    Убери прыжок

    убрал, кстати почему?

    как вообще происходит выполнение кода, ведь нет нигде указания что нужно зайти в метку pflag, и выполнить db 0

     

    57 минут назад, ReWanet сказал:

    В блоке [DISABLE]

    Прописал

    57 минут назад, ReWanet сказал:

    У тебя код ни когда не вернется в оригинальную часть.

    Вот да, я в это и впоролся, и приходится пока ручками восстанавливать инструкцию, не понимаю почему после выполнения своих действий, он не восстанавливает по нажатию мои собственные инструкции

     

    57 минут назад, ReWanet сказал:

    по факту ты записываешь

    Имена меток попутал restore -> store, store -> restore

     

    57 минут назад, ReWanet сказал:

    EAX а свободен он иль нет

    Посмотрел в бряке регистры, был занят, сделал через fld, fstp, хоть понял как это теперь работает

    57 минут назад, ReWanet сказал:

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

    Инструкция пересчитывает на самом деле много адресов

     

    Привожу ниже текущий код.

     

    Скрытый текст
    
    [ENABLE]
    aobscanmodule(INJECT, speed2.exe, D9 5E F0 D9 84 24 4C 02 00 00)
    alloc(newmem, $1000)
    alloc(pos, 12)
    
    label(pflag)
    label(store)
    label(restore)
    label(code)
    label(return)
    
    registersymbol(pflag)
    registersymbol(store)
    registersymbol(restore)
    
    store:
      fld dword ptr [esi-0c]
      fstp dword ptr [pos+0]
      fld dword ptr [esi-08]
      fstp dword ptr [pos+8]
      fld dword ptr [esi-04]
      fstp dword ptr [pos+4]
    
    restore:
      fld dword ptr [pos+0]
      fstp dword ptr [esi-0c]
      fld dword ptr [pos+8]
      fstp dword ptr [esi-08]
      fld dword ptr [pos+4]
      fstp dword ptr [esi-04]
    
    newmem:
      fstp dword ptr [esi-10]
      cmp byte ptr [pflag], 0
      je store
      jne restore
    code:
      fld dword ptr [esp+0000024C]
      jmp return
    
    pflag:
      db 3
    
    INJECT:
      jmp newmem
      nop
      nop
      nop
      nop
      nop
    return:
    registersymbol(INJECT)
    
    [DISABLE]
    INJECT:
      db D9 5E F0 D9 84 24 4C 02 00 00
    unregistersymbol(store)
    unregistersymbol(restore)
    unregistersymbol(pflag)
    unregistersymbol(INJECT)
    
    dealloc(pos)
    dealloc(newmem)
    
    
    {
    // ORIGINAL CODE - INJECTION POINT: "speed2.exe"+1AA1ED
    
    "speed2.exe"+1AA1CC: 7C 54                    -  jl speed2.exe+1AA222
    "speed2.exe"+1AA1CE: B8 03 00 00 00           -  mov eax,00000003
    "speed2.exe"+1AA1D3: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA1DA: 83 C0 04                 -  add eax,04
    "speed2.exe"+1AA1DD: D8 0F                    -  fmul dword ptr [edi]
    "speed2.exe"+1AA1DF: 83 C1 04                 -  add ecx,04
    "speed2.exe"+1AA1E2: 83 C6 10                 -  add esi,10
    "speed2.exe"+1AA1E5: 83 C7 10                 -  add edi,10
    "speed2.exe"+1AA1E8: 3B C5                    -  cmp eax,ebp
    "speed2.exe"+1AA1EA: D8 46 F0                 -  fadd dword ptr [esi-10]
    // ---------- INJECTING HERE ----------
    "speed2.exe"+1AA1ED: D9 5E F0                 -  fstp dword ptr [esi-10]
    "speed2.exe"+1AA1F0: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    // ---------- DONE INJECTING  ----------
    "speed2.exe"+1AA1F7: D8 4F F4                 -  fmul dword ptr [edi-0C]
    "speed2.exe"+1AA1FA: D8 46 F4                 -  fadd dword ptr [esi-0C]
    "speed2.exe"+1AA1FD: D9 5E F4                 -  fstp dword ptr [esi-0C]
    "speed2.exe"+1AA200: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA207: D8 4F F8                 -  fmul dword ptr [edi-08]
    "speed2.exe"+1AA20A: D8 46 F8                 -  fadd dword ptr [esi-08]
    "speed2.exe"+1AA20D: D9 5E F8                 -  fstp dword ptr [esi-08]
    "speed2.exe"+1AA210: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA217: D8 4F FC                 -  fmul dword ptr [edi-04]
    "speed2.exe"+1AA21A: D8 46 FC                 -  fadd dword ptr [esi-04]
    }

     

     

  14. Доброго времени суток форумчане, написал вот такой скрипт (логи присутствуют)

    Скрытый текст
    
    [ENABLE]
    aobscanmodule(INJECT, speed2.exe,D9 5E F0 D9 84 24 4C 02 00 00)
    alloc(newmem,$1000)
    alloc(pos, 12)
    
    label(position_flag)
    registersymbol(position_flag)
    
    label(store)
    registersymbol(store)
    
    label(restore)
    registersymbol(restore)
    
    label(code)
    label(return)
    
    store:
      push eax
      mov eax, [pos+0]
      mov [esi-0c], eax
      mov eax, [pos+8]
      mov [esi-08], eax
      mov eax, [pos+4]
      mov [esi-04], eax
      pop eax
    
    restore:
      push eax
      mov eax, [esi-0c]
      mov [pos+0], eax
      mov eax, [esi-08]
      mov [pos+8], eax
      mov eax, [esi-04]
      mov [pos+4], eax
      pop eax
    
    newmem:
      fstp dword ptr [esi-10]
      cmp byte ptr [position_flag], 0
      je store
      jmp restore
      jmp store
    code:
      fld dword ptr [esp+0000024C]
      jmp return
    position_flag:
      db 0
      jmp newmem
    
    INJECT:
      jmp newmem
      nop
      nop
      nop
      nop
      nop
    return:
    registersymbol(INJECT)
    
    [DISABLE]
    
    INJECT:
      db D9 5E F0 D9 84 24 4C 02 00 00
    unregistersymbol(INJECT)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "speed2.exe"+1AA1ED
    
    "speed2.exe"+1AA1CC: 7C 54                    -  jl speed2.exe+1AA222
    "speed2.exe"+1AA1CE: B8 03 00 00 00           -  mov eax,00000003
    "speed2.exe"+1AA1D3: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA1DA: 83 C0 04                 -  add eax,04
    "speed2.exe"+1AA1DD: D8 0F                    -  fmul dword ptr [edi]
    "speed2.exe"+1AA1DF: 83 C1 04                 -  add ecx,04
    "speed2.exe"+1AA1E2: 83 C6 10                 -  add esi,10
    "speed2.exe"+1AA1E5: 83 C7 10                 -  add edi,10
    "speed2.exe"+1AA1E8: 3B C5                    -  cmp eax,ebp
    "speed2.exe"+1AA1EA: D8 46 F0                 -  fadd dword ptr [esi-10]
    // ---------- INJECTING HERE ----------
    "speed2.exe"+1AA1ED: D9 5E F0                 -  fstp dword ptr [esi-10]
    "speed2.exe"+1AA1F0: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    // ---------- DONE INJECTING  ----------
    "speed2.exe"+1AA1F7: D8 4F F4                 -  fmul dword ptr [edi-0C]
    "speed2.exe"+1AA1FA: D8 46 F4                 -  fadd dword ptr [esi-0C]
    "speed2.exe"+1AA1FD: D9 5E F4                 -  fstp dword ptr [esi-0C]
    "speed2.exe"+1AA200: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA207: D8 4F F8                 -  fmul dword ptr [edi-08]
    "speed2.exe"+1AA20A: D8 46 F8                 -  fadd dword ptr [esi-08]
    "speed2.exe"+1AA20D: D9 5E F8                 -  fstp dword ptr [esi-08]
    "speed2.exe"+1AA210: D9 84 24 4C 02 00 00     -  fld dword ptr [esp+0000024C]
    "speed2.exe"+1AA217: D8 4F FC                 -  fmul dword ptr [edi-04]
    "speed2.exe"+1AA21A: D8 46 FC                 -  fadd dword ptr [esi-04]
    }

     

     

    Цель скрипта, сохранение, восстановление позиции машины по флагу, если смотреть на видеоурок под спойлером

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

     

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

  15.  

    1 час назад, krocki сказал:

    скайп запретили

    Это в какой геолокации то?

     

    Вообщем по теме @Garik66 через скайп объяснил мне что к чему, научил сравнивать структуры игрок-враг, вообщем нашел @Garik66 инструкцию работающую со всеми колесами включая врагов, помог с фильтром, объяснил как работает  cmp, je, jne в данном контексте, и вообще там полтора часа разговора по теме, всё не описать, но научил меня основным аспектам!
    @Garik66 Огромнейшее спасибо!!!
    По итогу буст авто работает как часики))

    • Плюс 1
  16. Я прямо так и захотел найти оффсеты для камеры, можно потом будет мувики снимать, кому то да пригодится))

    Обернуть ее в GUI, и пусть пользователь сам выбирает ротация и позицию камеры отностельно автомобиля

  17. 4 минуты назад, krocki сказал:

    Кстати ради прикола

    Кстати прикол получился))

    После поломки игра секунд через 10 восстановила отрсиовку, но камера поломалась, но мне так даже больше нравится)))

    Картинка

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

    lS7FU8

     

  18. 3 минуты назад, krocki сказал:

    А она точно только с одним адресом робит

    Так черт его дери в том то и дело, что она работает с колесами, противника 3+Я(4), колеса 4, 1 колесо = 1 адресс с значением, 4*4=16, 16 адресов с которыми она работает это точно, но я не могу написать фильтр, точнее пока не пойму как мне найти свою машину потому что в первые 8 адресов при бряке на запись, там идут машины противников, и хлам адреса, но колеса моей машины находятся после 8-и этих адресов, и я вот не знаю как мне посмотреть с какими адрессами она работает конкретно моей машины, вот как обойти ограничение в 8 адресов?

     

    Картинка с адресами

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

    9ZiMX

     

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

    По какому? из этого сообщения?

    Не, я про то что нужно брать не тот регистр в который пишет инструкция, а из которого она берет, т.е 2-ой вариант в твоем видео, т.е 2-ой способ из твоего видео, я вот про что))

     

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

    сказать не могу.

    Понял, спасибо, наверное просто мне таким образом повезло)

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

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

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