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

X86Jumps

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

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

  • Посещение

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

    2

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

  1. насколько я понял да нужно ее найти

    если получать d3dDevice и пытаться GetTransform вызывать

    то если через шейдеры (что уже почти везде)) ) то ничего не выдаст

     

    можно для начала попробовать найти родные функции которые hud рисуют (подсказки над игроками/объектам)

    может так проще будет

  2. что то вроде такого

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

     

    script = [[

    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    alloc(newmem,2048)
    label(returnhere)
    label(originalcode)
    label(exit)
    registerSymbol(align)
    label(align)
    label(data)

    newmem: //this is allocated memory, you have read,write,execute access
    //place your code here

    push eax
    mov eax,(float)255.0
    mov [data],eax
    pop eax

    originalcode:
    movss [esi+0000486C],xmm0

    exit:
    jmp returnhere

    align:
    //aligndatahere

    data:
    dd -1

    "BH6.exe"+159DD6:
    jmp newmem
    nop
    nop
    nop
    returnhere:

     

    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    dealloc(newmem)
    "BH6.exe"+159DD6:
    movss [esi+0000486C],xmm0
    //Alt: db F3 0F 11 86 6C 48 00 00

    ]];

    result, disableinfo = autoAssemble(script)
    str = string.rep("nop\n", getAddress("align")%16)
    autoAssemble(script, disableinfo)
    unregisterSymbol("align")
    --for i=0,getAddress("align")%16 do  writeBytes(getAddress("align"),0x90); end
    --print(string.format("%x",getAddress("align")))
    script2 = string.gsub(string.gsub(string.gsub(string.gsub(script, "//aligndatahere", str), "registerSymbol(align)",""), "label(align)",""), "align","")
    autoAssemble(script2)

     

     

    без disableinfo почему то не вырубает, можно было бы просто true передавать

    (я дописал push ... pop чтоб надо было больше вставлять для выравнивания)

  3. думал, можно ли данные выравнять по 16 байт например?

    в lua можно только к символам обратиться

    жаль нельзя label получать список или alloc

    я набросал такой скрипт

    хотя хотелось бы избавиться от label лишнего

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

    script = [[

    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    alloc(newmem,2048)
    label(returnhere)
    label(originalcode)
    label(exit)
    registerSymbol(align)
    label(align)
    label(data)

    newmem: //this is allocated memory, you have read,write,execute access
    //place your code here


    originalcode:
    movss [esi+0000486C],xmm0

    exit:
    jmp returnhere

    align:

    data:
    dd 0

    "BH6.exe"+159DD6:
    jmp newmem
    nop
    nop
    nop
    returnhere:

     

    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    dealloc(newmem)
    "BH6.exe"+159DD6:
    movss [esi+0000486C],xmm0
    //Alt: db F3 0F 11 86 6C 48 00 00

    ]];

    autoAssemble(script)

    for i=0,getAddress("align")%16 do  writeBytes(getAddress("align"),0x90); end
    print(string.format("%x",getAddress("align")))
    unregisterSymbol("align")

     

    но ссылается по-старому

    получается надо 1 раз вставить определить размер и во  второй раз дописать nop'ы

     

  4. а как можно трейсить step by step?

    например как встроенный трейсер, чтоб записал весь лог?

    как он пошагово идет?

    debug_continueFromBreakpoint?

    а если несколько потоков то это как то разделяется или в куче будет?

    вроде в последней CE с контекстом потоков что то есть

  5. а нельзя оффтоп сделать не микроскопическим?

    и можно ли добавить asm в snippet/код?

    и еще, можно как в некоторых сайтах скрытому тексту присвоить заголовок

    чтоб не только "показать содержимое" было

     

  6. не знаю как у других (или надо обязательно чтоб игра запущена была? он просто пишет "run as  admin"

    хотя я и запускаю так)

    у меня не хочет запускаться на win7

    и трейнер как cpl?:huh:

  7. В ходе попытки сделать простой aimbot возникли вопросы того, как рисует сцену движок

    как я написал тут, я наше матрицу, которую передают во все vertex shader (всегда c1 регист)

    вопрос вот в чем, если все объекты расположены в разных позициях

    имеют свою матрицу трансформации, то как же они правильно располагаются?

    вот например такая матрица

    Цитата

     

    1.66 0.00 0.16 0.16

    0.00 2.99 0.00 0.00

    0.27 0.01 -0.99 -0.99

    86.18 -374.67 -651.33 -635.32

     

    вот шейдер

     

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

    //
    // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
    //
    // Parameters:
    //
    //   float4 CBROPTest__packed0;
    //   float4 CBSkinning__packed0;
    //   float4 CBVertexDisplacement2__packed0;
    //   float4 CBVertexDisplacement__packed0;
    //   float4 CBVertexDisplacement__packed1;
    //   sampler2D SSClampLinear__tVtxDisplacement;
    //   sampler2D SSPoint__tMatrixMap;
    //   sampler2D SSWrapLinear__tVtxDispMask;
    //   float4 __tMatrixMap__invsize;
    //   float4 __tVtxDisplacement__invsize;
    //   float2 fScreenHalfPixelOffset;
    //   row_major float4x4 fViewProj;
    //
    //
    // Registers:
    //
    //   Name                            Reg   Size
    //   ------------------------------- ----- ----
    //   fViewProj                       c1       4
    //   CBROPTest__packed0              c5       1
    //   fScreenHalfPixelOffset          c6       1
    //   CBSkinning__packed0             c7       1
    //   __tMatrixMap__invsize           c8       1
    //   CBVertexDisplacement__packed0   c9       1
    //   CBVertexDisplacement__packed1   c10      1
    //   __tVtxDisplacement__invsize     c11      1
    //   CBVertexDisplacement2__packed0  c12      1
    //   SSPoint__tMatrixMap             s0       1
    //   SSClampLinear__tVtxDisplacement s1       1
    //   SSWrapLinear__tVtxDispMask      s2       1
    //

        vs_3_0
        def c0, 2, -1, 32768, -0
        def c13, 0.125, 1, 0, 3
        dcl_position v0
        dcl_normal v1
        dcl_tangent v2
        dcl_binormal v3
        dcl_2d s0
        dcl_2d s1
        dcl_2d s2
        dcl_position o0
        dcl_color o1.xy
        dcl_texcoord o2
        add r0.x, c9.x, v3.x
        frc r0.x, r0.x
        mul r0.x, r0.x, c9.z
        mov r0.yzw, c13.xxyz
        texldl r0, r0, s1
        add r0.y, c12.x, v3.y
        frc r0.y, r0.y
        mul r1.x, r0.y, c12.z
        mov r1.y, c13.x
        mov r0.zw, c13
        mad r1.xy, c11, r0.zwzw, r1
        mov r1.zw, -c0.xyyw
        texldl r1, r1, s1
        mul r2, -c0.yyww, v3.xyxx
        texldl r2, r2, s2
        mul r0.y, r2.x, c12.y
        mul r0.z, r2.x, c9.y
        mul r0.y, r0.y, r1.x
        mad r0.x, r0.x, r0.z, r0.y
        mov r1.zw, -c0.w
        mul r0.y, c0.z, v0.w
        frc r0.z, r0.y
        add r0.y, -r0.z, r0.y
        mad r2.x, r0.y, c7.x, c7.y
        mov r3.xyw, c0
        mul r2.yzw, -r3.xyww, c7.z
        mad r1.xy, c8, -r3.ywzw, r2
        texldl r1, r1, s0
        mad r0.yzw, v1.xxyz, c0.x, c0.y
        dp3 r4.y, r1, r0.yzww
        mad r3.xy, c8, r3_abs.xwzw, r2
        texldl r2, r2, s0
        mov r3.zw, -c0.w
        texldl r3, r3, s0
        dp3 r4.z, r3, r0.yzww
        dp3 r4.x, r2, r0.yzww
        nrm r5.xyz, r4
        mad r4, v2, c0.x, c0.y
        dp3 r6.y, r1, r4
        dp3 r6.z, r3, r4
        dp3 r6.x, r2, r4
        nrm r4.xyz, r6
        mul r0.yzw, r5.xyzx, r4.xzxy
        mad r0.yzw, r4.xyzx, r5.xzxy, -r0
        mad r4.xyz, r4, c10.x, r5
        mul r0.yzw, r4.w, r0
        mad r0.yzw, r0, c10.y, r4.xxyz
        nrm r4.xyz, r0.yzww
        mad r5, v0.xyzx, -c0.yyyw, -c0.wwwy
        dp4 r1.y, r1, r5
        dp4 r1.z, r3, r5
        dp4 r1.x, r2, r5
        mad r0.xyz, r4, r0.x, r1
        mul r1, r0.y, c2
        mad r1, r0.x, c1, r1
        mad r0, r0.z, c3, r1
        add r0, r0, c4
        mad o0.x, c6.x, -r0.w, r0.x
        mad o0.y, c6.y, r0.w, r0.y
        add o0.z, r0.z, c5.z
        mov o0.w, r0.w
        mov o1.xy, r0.zwzw
        mov o2, v3.xyxy

    // approximately 75 instruction slots used (12 texture, 63 arithmetic)

     

    ну их очень много, но все похожие

    я сделал такой

     

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

     

    row_major float4x4 WorldViewProj : WORLDVIEWPROJ;

    struct VS_OUTPUT
    {
        float4 Pos  : POSITION;
    };

    VS_OUTPUT main(float4 inPos : POSITION )
    {
        VS_OUTPUT Out;

        Out.Pos = mul(inPos,  WorldViewProj );

        return Out;
    };

     

    компилится в такое
     

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

     

    Microsoft (R) Direct3D Shader Compiler 9.29.952.3111
    Copyright (C) Microsoft Corporation 2002-2009. All rights reserved.

    //
    // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
    //
    //   fxc /Tvs_3_0 C:\tmp\test.hlsl
    //
    //
    // Parameters:
    //
    //   row_major float4x4 WorldViewProj;
    //
    //
    // Registers:
    //
    //   Name          Reg   Size
    //   ------------- ----- ----
    //   WorldViewProj c0       4
    //

        vs_3_0
        dcl_position v0
        dcl_position o0
        mul r0, c1, v0.y
        mad r0, v0.x, c0, r0
        mad r0, v0.z, c2, r0
        mad o0, v0.w, c3, r0

    // approximately 4 instruction slots used

     

    проверял через Nvidia NSight 4.1, мои линии рисуются где то не понятно где

    (ошибок в вызовах методов  pDevice нет)

     

    потом поняв что не получается решил перемещать объект простой (например спрей)

    в точку которую хочу, у меня есть координаты игрока, партнера, камеры

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

    я нашел место где создается объект спрея, но понять как он создается пока не очень понял

    я знаю что в игре в архивах есть файлы lot, в которых встречаются строки типа такой

    cSetInfoItem.....uItem.........H.......uWp1173

    в файле заметок по игре у меня был адрес, где он обрабатывает эти файлы, ставил бряк перед вызовом и менял содержимое

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

    но жесткий тот сдох, я там многое потерял

    по памяти что то восстановил

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

    нашел коллекцию объеков uItem, правда каждый раз тот спрей на сцене под разным номером

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

     

    Игра рисует сцену раза 3 4

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

    меши игроков разбиты по частям

    список bone mapping я находил вроде, трансформацию тоже (но туда пока не лез)

  8. я нашел матрицу какую-то

    тут в игре через дамп vertex shader многих

    я увидел что везде первым параметром идет

    Цитата

    //   Name                            Reg   Size
    //   ------------------------------- ----- ----
    //   fViewProj                       c1       4
    //   CBROPTest__packed0              c5       1

    тогда как например в простых шейдерах типа того
     

    Цитата

     

    float4x4 WorldViewProj : WORLDVIEWPROJ;

    struct VS_OUTPUT
    {
        float4 Pos  : POSITION;
    };

    VS_OUTPUT main(float4 inPos : POSITION )
    {
        VS_OUTPUT Out;

        Out.Pos = mul(inPos,  WorldViewProj );

        return Out;
    };

     

    вот похожий из Irrlicht Engine

    Цитата

     

    // part of the Irrlicht Engine Shader example.
    // These simple Direct3D9 pixel and vertex shaders will be loaded by the shaders
    // example. Please note that these example shaders don't do anything really useful.
    // They only demonstrate that shaders can be used in Irrlicht.

    //-----------------------------------------------------------------------------
    // Global variables
    //-----------------------------------------------------------------------------
    float4x4 mWorldViewProj; // World * View * Projection transformation
    float4x4 mInvWorld;      // Inverted world matrix
    float4x4 mTransWorld;    // Transposed world matrix

     

        // transform position to clip space
        Output.Position = mul(vPosition, mWorldViewProj);

     

     

    я через Nsight 4.1 запустил игру

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

    (например такая в тот момент, когда сделал frame capture)
     

    Цитата

     

    1.66 0.00 0.16 0.16

    0.00 2.99 0.00 0.00

    0.27 0.01 -0.99 -0.99

    86.18 -374.67 -651.33 -635.32

     

     

  9. я сделал на tab срабатывание моего кода (200мс задержка)

    как обычно для всех своих "читов" в ре6

    (таб не как кнопка нажатая через getasynckeystate, а обращение к памяти для определения что нажато

    тогда работать может и с джойстиками)

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

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

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

    в смысле задействовать встроенную функцию слежения за напарником?(V)

    вместо напарника занести bp врага?я быстро наспех делал вроде так

    но при прицеливании глючило, видимо не только 1 значение надо было заносить

     

    не очень понял что значит "с различными модификациями "

     

    а вообще? я то делают?даже на тетрадке расчертил точки

    и вроде все верно было, но это для камеры не 3го лица

    тут надо скорректировать

    я трейс смотрел как игра делает, сначала yaw крутит, потом pitch

    значение конечное находит, но потом плавно к нему идет

    я отнимаю от target координаты камеры, хотя в игре отнимает от игрока (владельца)

    потом еще что то делает (я толком не очень понял)

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

  11. а что там понимать)

    просто сложение, вычитание, нахождение длины вектора)

    нормализация

     

    в игре есть функция за напарником следить, V держишь и за напарником следишь

    если он не очень далеко то твоя камера крутится, если у двери стоишь и ждешь что он 2м откроет

    то тогда камера как спектатор переключается

     

    я думал если самому пытаться то может пригодится информация и опыт

  12. Решил для разнообразия сделать примерный aimbot

    не нужно чтоб прям точно попадал, хотя бы примерно

    игра от 3го лица, камера крутится вокруг что-то вроде сферы

    знаю координаты камеры, координаты игрока на кого привязан

    знаю что forward vector (0,0,1), т.е. вдоль z (y "в народе")

    есть pitch и yaw, их можно более менее менять

    почему-то не могу найти forward vector (может он временно высчитывается?)

    нашел вот такие расчеты

    Цитата

    pitch = asin(-d.Y);
    yaw = atan2(d.X, d.Z)

    т.к. в fpu x87 есть только fpatan, то можно воспользоваться

    Цитата

    asin(x)=atan(x/(sqrt(1-x*x))

     

    брал точку камеры, от цели (напарник, координаты головы кажется) отнимал точку камеры

    нормализовал

    передал в функцию fpatan эти данные

    более менее направление правильно по yaw получалось

    но глючило, потом пошел смотреть как игра высчитывает atan2

    нашел функцию и ее вызываю (sse2, без fpu)

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

     

    по pitch понял что я считаю как камера поворачивалась бы на месте (в смысле вращалась бы а позицию не меняла бы)

    а т.к. у меня она по сфере крутится, то чуть не точное я значение pitch получаю

    сначала считал так

    Цитата

    pitch = asin(-d.Y);

    потом посмотрев в dxut (из dx sdk) считал так

    Цитата

        float fLen = sqrtf( pZBasis->z * pZBasis->z + pZBasis->x * pZBasis->x );
        m_fCameraPitchAngle = -atan2f( pZBasis->y, fLen );

    за zbasis брал мой вектор разницы (не нормализованный)

    чуть точнее получалось вроде

     

    я вообще правильно делаю ?

    нашел коллекцию npc/врагов

    по ним ставил цель (через registersymbol указывал индекс массива)


     

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

     

    movss xmm0,[eax+30]
    movss xmm1,[eax+34]
    movss xmm2,[eax+38]

     

    mov ecx, eax
    //mov ecx, ebx        //bp owner


    //source, camera pos
    movss xmm3, [ecx+50]
    movss [data+14],xmm3
    movss xmm4, [ecx+54]
    movss [data+18],xmm4
    movss xmm5, [ecx+58]
    movss [data+1c],xmm5

    subss xmm0, xmm3
    subss xmm1, xmm4
    //subss xmm4, xmm1
    subss xmm2, xmm5


    movss [data+20],xmm0
    movss [data+24],xmm1
    movss [data+28],xmm2

    mulss xmm0,xmm0
    mulss xmm1,xmm1
    mulss xmm2,xmm2

    addss xmm0, xmm1
    addss xmm0, xmm2

    sqrtss xmm0, xmm0

    movss [data+2c], xmm0


    movss xmm3,[data+20]
    movss xmm4,[data+24]
    movss xmm5,[data+28]

    divss xmm3,xmm0
    divss xmm4,xmm0
    divss xmm5,xmm0

    movss [data+30],xmm3
    movss [data+34],xmm4
    movss [data+38],xmm5

     

    movss xmm0,[data+30]
    movss xmm1,[data+38]
    call atan2
    movss [data+40], xmm0

     

    movss xmm0,[data+34]
    mulss xmm0,[const+30] //-y
    call asin
    movss [data+3c], xmm0

     

    movss xmm0,[data+3c]
    movss xmm1,[data+40]
    //pitch
    movss [eax+290],xmm0
    //yaw
    movss [eax+294],xmm1

     

    ....

    //atan2(y,x)
    atan2:
    push eax
    cvtps2pd xmm0,xmm0       //y
    cvtps2pd xmm1,xmm1       //x
    //cvtps2pd xmm0,[data+38]
    //cvtps2pd xmm1,[data+30]
    call 013ED5C9     //xmm0 result
    cvtsd2ss xmm0,xmm0
    pop eax
    ret

    //asin(x)
    asin:
    movss xmm3,xmm0
    movss xmm1,[const+4]   //-1
    mulss xmm0,xmm0
    subss xmm1,xmm0
    sqrtss xmm0,xmm1
    divss xmm3,xmm0
    movss xmm0,xmm3

    movss xmm1,[const+4]  //1
    call atan2
    ret

     

     

  13. 1 час назад, uhx сказал:

    Но мы видим, что нигде не говорится про возвращаемое значение. Значит, мы не можем проверить открылся ли процесс или нет.

    честно говоря lua (Script Engine) описание нельзя приводить в пример (раздел в справке или celua.txt)

    т.к. как то некоторые вещи явно опущены, в какой-то степени сумбурно

  14. В 23.07.2017 в 18:56, LIRW сказал:

    Чпок! Или на форуме можно было поискать Чпок!  Вот ещо Чпок!

    ну вообще то в цитате про kernelmode и вылеты

    а в ссылках про обход проверки целостности кода игры, т.е. xlive killer, который просто обходится

    т.е. я просто из-за того что до этого имел дело с ре6 где для себя читы для фана делал (вызов голосовых команд, анимации и эффектов)

    не сталкивался с необходимостью менять тип дебаггера

    хотя kernelmode хоть как то дает работать, но стабильность....

    хотя debug версия dll может помочь, но каждый раз придется немного проходить пролог

  15. 19 минут назад, partoftheworlD сказал:

    Если настроить правильно, то подключится.

    не знаю, но мне привычнее в CE, он мне дебаггер Borland Delphi 6 напоминает, в котором я первый раз видел asm

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

    в ollydbg их тоже немного, а x32dbg мне почему то кажется на sdk ollydbg сделан, хотя вроде cpp

  16. в этом видео в первых трех что я видел не было проблем (ну или они на видео не попали))  )

    а  у меня вроде не вылетал когда я брикпоинты ставил, но потом бац и вылет может пройти

    синий экран, иногда минут 5 не вылетает иногда позже, или потом браузер тупо кручу скролл, зажал мышкой и вылет))

    весело очень)

    сейчас пытаюсь понять как вырубить xlive, потому что там куча потоков крутится

    первый stack trace как раз выходит в одном месте, там после вызова функции eax=0 и ошибка получается

    хотя он только проверяет eax, но как то не безопасно, сначала читает из памяти а потом проверяет

    а 2й - это произвольный код, видимо там какой то баг происходит и return делается раньше

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

     

    я все эти ветки (иностранные те форумы) читал, но я так понял там только про проверку целостности, а не про проблемы дебага, я даже debug версию толком нигде найти не могу, хорошо у меня dead rising2 репак есть и оттуда взял. Пытался найти sdk на этот xlive, а его вообще нигде нет, видимо он для закрытого круга распространялся и никто не выкладывал ни хидеры ни pdb ни дебаг версии

  17. ну так а как решают эту проблему?

    у всех вылеты в kernelmode частые?

     

    я кстати помню что в ре5 gfwl версии у меня не вылетало когда я трейсил

    может потому что стояла версия старая а не 3.5.92

    сейчас просто пытаюсь заменить dll в папку с игрой скидываю, но ругается

    видимо надо сначала удалять и заново ставить

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

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

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