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

X86Jumps

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

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

  • Посещение

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

    2

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

  1. если он как ты говоришь действительно меняется от уровня к уровню, то по-другому никак

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

  2. скрипт автоматического нажатия кнопки numpad6

    для версии 1.5.2
    (4d - клавиша numpad6 в кодах dinput)

    Скрытый текст
    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    alloc(newmem,2048)
    label(returnhere)
    label(originalcode)
    label(exit)
    label(data)
    
    newmem: //this is allocated memory, you have read,write,execute access
    //place your code here
    call kernel32.GetTickCount
    sub eax,[data]
    cmp eax,200
    jb @f
    mov byte ptr[00509A20+4d],1
    call kernel32.GetTickCount
    mov [data],eax
    
    originalcode:
    xor eax,eax
    cmp ecx,ebx
    je ePSXe.exe+EC53
    
    exit:
    jmp returnhere
    
    data:
    dd 0
    
    "ePSXe.exe"+E697:
    jmp newmem
    nop
    nop
    nop
    nop
    nop
    returnhere:
    
    
     
     
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    dealloc(newmem)
    "ePSXe.exe"+E697:
    xor eax,eax
    cmp ecx,ebx
    je ePSXe.exe+EC53
    //Alt: db 33 C0 3B CB 0F 84 B2 05 00 00

     

    для версии 1.7.0
     

    Скрытый текст
    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    alloc(newmem,2048)
    label(returnhere)
    label(originalcode)
    label(exit)
    label(data)
    
    newmem: //this is allocated memory, you have read,write,execute access
    //place your code here
    
    call kernel32.GetTickCount
    sub eax,[data]
    cmp eax,200
    jb @f
    mov byte ptr[0050F0C0+4d],1
    call kernel32.GetTickCount
    mov [data],eax
    
    originalcode:
    xor eax,eax
    cmp ecx,ebx
    je "ePSXe ENG.exe"+12AED
    
    exit:
    jmp returnhere
    
    data:
    
    "ePSXe ENG.exe"+124BA:
    jmp newmem
    nop
    nop
    nop
    nop
    nop
    returnhere:
    
    
     
     
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    dealloc(newmem)
    "ePSXe ENG.exe"+124BA:
    xor eax,eax
    cmp ecx,ebx
    je "ePSXe ENG.exe"+12AED
    //Alt: db 33 C0 3B CB 0F 84 29 06 00 00
    

     

     

    • Плюс 2
  3. у тебя скрипт там есть

    вместо doKey или doKeyPress пиши writeBytes(0x0050F0C0+0xc8,1)

    c8 я для примера набрал, это Arrow Up

    потом у тебя sleep идет и уже keyUp, вместо его writeBytes(0x0050F0C0+0xc8,0)

    примерно так (1 раз)

    writeBytes(0x0050F0C0+0xc8,1)
    sleep(100)
    writeBytes(0x0050F0C0+0xc8,0)

     

    2 раза

    writeBytes(0x0050F0C0+0xc8,1)
    sleep(100)
    writeBytes(0x0050F0C0+0xc8,0)
    
    sleep(100)
    
    writeBytes(0x0050F0C0+0xc8,1)
    sleep(100)
    writeBytes(0x0050F0C0+0xc8,0)

     

     

    • Плюс 1
  4. для версии 1,7,0 iDirectInputDevice GetDeviceState возвращает данные в стек,  а потом копирует в 0050F0C0

    данные в этом случае - массив 256 байт, коды кнопок не VK как в винде, а  DirectInput keyboard scan codes

    http://www.flint.jp/misc/?q=dik&lang=en

    например установка в 1 байта 0050F0C0+C8 даст эмуляцию нажатия Up arrow (DIK_UP)

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

    • Плюс 1
  5. 2 часа назад, Razi сказал:

    Нашел вот такое: call DINPUT.DirectInputCreateEx+2179 подойдет такое? Как к нему прицепиться?

    нашел в программе где вызывается?

    дальше результат куда сохраняет?обычно результат в eax, после вызова

    но для подобных функций (COM) обычно это один из параметров

    https://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.reference.directinput8create(v=vs.85).aspx

    тут он 4й будет, в коде он будет 3 параметров (параметры от конца к началу идут)

    у меня в версии 1,5,2 типа такого есть

    ePSXe.exe+E05B - E8 80900200           - call ePSXe.exe+370E0 { ->->DINPUT.DirectInputCreateA }
    ePSXe.exe+E060 - 8B F8                 - mov edi,eax

     

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

    Давно не пользовался CE, почти все забыл. Обьясни более подробно, если можно.

    ну запустить ePsxe, открыть дизасемблер и там в enumerate dll чего то, поищи что то из DirectInput8Input
    посмотри где она вызывается в коде и смотри куда сохраняется

  7. ну я же с чего-то должен был начать, нужна была зацепка

    в файлах спавна (.lot) указаны именно названия моделей, поэтому можно использовать

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

  8. какой способ?)возможно тут сложнее чем в некоторых играх) потому что когда я спавню их (зомби), то они мне не дают ничего
    у них где то там еще инфа лежит о том, что примерно выпадает

    для ознакомительного видео я думаю хватит и того что есть

    это я еще не полез рассказывать про файлы .lot и еще другое)

    в первом видео я не сразу понял почему они были в начале на уровне головы

    там edi это CameraCtrl, поэтому у меня на видео они выше были чем голова

  9. Записал видео в какой-то степени обучающего видео о том, как можно сделать спавн объектов и зомби.

    Сначала определяется как создаются объекты в игре, потом пытаемся воспроизвести спавн

    Так же используется condition breakpoint для отладки информации и еще некоторые возможности Cheat Engine
    (первое видео было записано 9 декабря 2017 года, второе - 24 декабря 2017 года)

    Видео 1 и скрипт к нему:

    Spoiler

     

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

     

    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    alloc(newmem,2048)
    label(returnhere)
    label(originalcode)
    label(exit)
    label(data)
    
    newmem: //this is allocated memory, you have read,write,execute access
    //place your code here
    
    pushad
    pushf
    
    push 9
    call user32.GetAsyncKeyState
    cmp eax,0
    je originalcode
    
    mov [data],esi
    
    mov eax,eax
    mov ebx, 017FAA00
    mov esi,[017C54C0]
    push 0
    push ebx
    mov ecx,esi
    call 005752B0
    
    mov edi,[data]
    
    mov edx,[edi+50]
    mov [eax+50],edx
    mov edx,[edi+54]
    mov [eax+54],edx
    mov edx,[edi+58]
    mov [eax+58],edx
    
    originalcode:
    
    popf
    popad
    
    mov cl,[esi+00004E88]
    
    exit:
    jmp returnhere
    
    data:
    dd 0
    dd 0
    dd 0
    dd 0
    dd 0
    
    "BH6.exe"+64D4E9:
    jmp newmem
    nop
    returnhere:
    
    
     
     
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    dealloc(newmem)
    "BH6.exe"+64D4E9:
    mov cl,[esi+00004E88]
    //Alt: db 8A 8E 88 4E 00 00

     

     

     

     

    Видео 2 и скрипт к нему:

    Spoiler

     

    Скрытый текст
    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    alloc(newmem,2048)
    label(returnhere)
    label(originalcode)
    label(exit)
    label(data)
    
    newmem: //this is allocated memory, you have read,write,execute access
    //place your code here
    
    pushad
    pushf
    
    mov [data],esi
    
    
    push 9
    call user32.GetAsyncKeyState
    cmp eax,0
    je originalcode
    
    call kernel32.GetTickCount
    sub eax,[data+4]
    cmp eax,200
    jb @f
    
    /*
    mov eax,eax
    mov ebx, 017FAA00
    mov esi,[017C54C0]
    push 0
    push ebx
    mov ecx,esi
    call 005752B0
    
    mov [data+8],eax
    
    mov esi,[data]
    
    mov ecx,[esi+50]
    mov [eax+50],ecx
    mov ecx,[esi+54]
    mov [eax+54],ecx
    mov ecx,[esi+58]
    mov [eax+58],ecx
    */
    
    
    /*
    
    spawn item
    
    mov eax,[data]
    mov ecx,[017C54C0]
    push 1
    push eax
    call 005786B0
    */
    
    mov esi,[017C540C]
    mov ebp, 17D105C
    push 0
    push 0
    push ebp
    mov eax,[esi]
    mov edx,[eax+40]
    mov ecx,esi
    call edx
    
    mov esi,[data]
    
    mov ecx,[esi+50]
    mov [eax+50],ecx
    mov ecx,[esi+54]
    mov [eax+54],ecx
    mov ecx,[esi+58]
    mov [eax+58],ecx
    
    
    call kernel32.GetTickCount
    mov [data+4],eax
    
    originalcode:
    
    popf
    popad
    
    mov cl,[esi+00004E88]
    
    exit:
    jmp returnhere
    
    data:
    dd 0 //esi
    dd 0 //tick
    dd 0 //last created
    
    "BH6.exe"+64D4E9:
    jmp newmem
    nop
    returnhere:
    
    
     
     
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    dealloc(newmem)
    "BH6.exe"+64D4E9:
    mov cl,[esi+00004E88]
    //Alt: db 8A 8E 88 4E 00 00

     

     

    • Плюс 3
×
×
  • Создать...

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

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