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

catbein

Стажёры
  • Постов

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

  • Посещение

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

  1. Доброго времени суток всем.

    Решил я попробовать найти координаты игрока в игре "Lifeless Planet", сначала я пробовал найти высоту то есть ось Z, но среди адресов которые остались в процессе отсева я нашел ось X, после заморозки этой оси я не смог в игре идти назад или вперед.

    921e32216909.png

    Я поставил бряк на доступ и вот что получилось:

    97863d481a83.png

    Странно то, что адрес который я нашел не получает доступ ни к одной из этих инструкций.

    И моего адреса там нет, нигде, ни в единой инструкции, вот что получалось когда я находил адреса получающие доступ к любой инструкции что выше, моего адреса там не оказалось (мой адрес 0EA2D244):

    3fdc14b08379.png

    Я сначала подумал что возможно это другие оси, но заморозка этих значений мне ничего не дало. Я попробовал заглянуть в структуру одной из тех инструкций и вот что получилось:

    9c9ce7a34796.png

    Как вы видите мой адрес находиться со смещением 14, я взял адрес со смещением 10,8,4,0,18,1С и тд. и тп. но среди них не оказалось нужных мне осей Y и Z, почему же в игре координаты не находятся рядом друг от друга с интервалом по смещению и почему когда я хотел найти адреса которые получают доступ к любой инструкции ,- своего адреса я там не нашел???? ну и как мне найти остальные координаты???

    Потом после этого я пробовал найти остальные координаты вручную но в итоге после отсева оставалось адресов 400-600.

  2. Если переменная _money выполняет роль переключателя(так оно по ходу и есть) нужно задать тип. Ты написал add 1, может всё же надо dd 1, а лучше db 1 - 1 байта достаточно) И кажется надо добавить строчку

    label(_money)

    registersymbol(_money)

    newmem:

    Спасибо большое, поменял вместо dd на db и написал registersymbol(_money) соответственно поставил unregistersymbol и всё пошло. Оставлю скрипт рабочий здесь вдруг кому то тоже пригодиться:


    [ENABLE]
    alloc(newmem,2048)
    label(returnhere)
    label(originalcode)
    label(exit)
    label(_money)
    registersymbol(_money)
    newmem:
    cmp dword ptr [_money],1
    jne originalcode
    add [eax+54],#1000 // добавляет 1000 золота
    mov [_money],0
    originalcode:
    mov edi,[eax+54]
    lea ecx,[esi+00004454]
    exit:
    jmp returnhere
    _money:
    db 1
    "game.exe"+811698:
    jmp newmem
    nop
    nop
    nop
    nop
    returnhere:
    [DISABLE]
    unregistersymbol(_money)
    dealloc(newmem)
    "game.exe"+811698:
    mov edi,[eax+54]
    lea ecx,[esi+00004454]

    И еще одно, этот скрипт добавляет деньги только тогда когда я еще достаю, как сделать так чтобы деньги добавлялись сразу, а не при естественном пополнении ????

  3. Всем привет

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

    По примеру я написал вот что(mov edi,[eax+54]-отвечающая за деньги инструкция):


    [ENABLE]
    alloc(newmem,2048)
    label(returnhere)
    label(originalcode)
    label(exit)
    label(_money)
    newmem:
    cmp dword ptr [_money],1
    jne originalcode
    add [eax+54],#1000
    mov [_money],0
    originalcode:
    mov edi,[eax+54]
    lea ecx,[esi+00004454]
    exit:
    jmp returnhere
    _money:
    add 1
    "game.exe"+811698:
    jmp newmem
    nop
    nop
    nop
    nop
    returnhere:

    [DISABLE]
    dealloc(newmem)
    "game.exe"+811698:
    mov edi,[eax+54]
    lea ecx,[esi+00004454]

    Но при добавлении скрипта мне пишет ошибку:

    f4b1d8ffc10c.png

    Что не так ??? выправите скрипт пожалуйста, БУДУ ОЧЕНЬ благодарен

  4. надо не искать очки улучшения, а сам опыт, взломаешь опыт до 70 лвл и будешь иметь максимальное количество очков. Вот скрипт, активируй, убей кого-то и будешь иметь 70 лвл и все очки улучшения


    [ENABLE]
    alloc(newmem,2048)
    label(xp)
    registersymbol(xp)
    label(returnhere)
    aobscan(aob_xp,01 77 3C 8B 47 28 8B 57 3C 85 C0 74 14 0F B7 4F 4A)
    newmem:
    mov [edi+3C],#99999999
    add [edi+3C],esi
    mov eax,[edi+28]
    jmp returnhere
    aob_xp:
    xp:
    jmp newmem
    nop
    returnhere:
    [DISABLE]
    dealloc(newmem)
    unregistersymbol(xp)
    xp:
    add [edi+3C],esi
    mov eax,[edi+28]

  5. Есть проблема. Решил я взломать игру. Там главный герой имеет полоску энергии, я без вопросов взломал, все было хорошо, но в игре персонаж имеет много разных способностей, эти способности по разному хавают эту энергию, я занопил инструкцию которая отвечает за эту энергию но такой скрипт работает только на той способности на которой я ставил бряк, если переключить способность то скрипт уже не работает и даже если пользоваться одной же способностью то она имеет одну инструкцию которая отвечает за уменьшение и еще одну за увеличение энергии. Одним словом чтобы написать скрипт который бы полностью замораживал энергию во всех способностях он будет иметь более 100 строк.Что самое главное, в способностях за увеличение и уменьшение энергии отвечает одна и та же инструкция но в разных способностях эта инструкция имеет различные адреса, то есть в игре есть где-то более 10 одинаковых инструкций но они имеют разные адреса. Подскажите как написать скрипт не задавая все эти инструкции?

    Вот я написал скрипт в котором занопил все эти инструкции


    [ENABLE]
    label(damage)
    label(uvel)
    label(run)
    label(sila)
    label(fly)
    label(time)
    label(kamni)
    registersymbol(damage)
    registersymbol(uvel)
    registersymbol(run)
    registersymbol(sila)
    registersymbol(fly)
    registersymbol(time)
    registersymbol(kamni)
    aobscan(aob_damage,F3 0F 11 83 E8 17 00 00 F3 0F 10 05 D8 92 67 00 0F 2F 83 50 1B 00 00 72 10 F3 0F 10 05 98 87 69 00 F3 0F 11 83 50 1B 00 00)
    aobscan(aob_uvel,F3 0F 11 83 E8 17 00 00 D9 83 38 19 00 00 D9 9B 28 19 00 00 D9 83 3C 19 00 00 D9 9B 2C 19 00 00 D9 83 40 19 00 00)
    aobscan(aob_run,F3 0F 11 83 E8 17 00 00 F6 83 48 1B 00 00 20 74 0A F3 0F 10 05 D8 92 67 00 EB 08 F3 0F 10 05 74 84 69 00)
    aobscan(aob_sila,F3 0F 11 83 E8 17 00 00 8B 53 08 8B 89 38 01 00 00 D9 02 8B 81 BC 07 00 00 F3 0F 10 05 EC 92 67 00)
    aobscan(aob_fly,F3 0F 11 83 E8 17 00 00 83 BB E0 17 00 00 01 75 23 F6 83 B8 18 00 00 01 74 1A F3 0F 10 83 40 18 00 00 0F 2F 05 04 91 67 00)
    aobscan(aob_time,F3 0F 11 81 E8 17 00 00 F3 0F 10 05 04 91 67 00 F3 0F 11 81 14 18 00 00 F3 0F 10 05 50 86 69 00 F3 0F 11 81 50 1B 00 00 5E)
    aobscan(aob_kamni,F3 0F 11 80 E8 17 00 00 5D)
    aob_damage:
    damage:
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    aob_uvel:
    uvel:
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    aob_run:
    run:
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    aob_sila:
    sila:
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    aob_fly:
    fly:
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    aob_time:
    time:
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    aob_kamni:
    kamni:
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    [DISABLE]
    unregistersymbol(damage)
    damage:
    movss [ebx+000017E8],xmm0
    unregistersymbol(uvel)
    uvel:
    movss [ebx+000017E8],xmm0
    unregistersymbol(run)
    run:
    movss [ebx+000017E8],xmm0
    unregistersymbol(sila)
    sila:
    movss [ebx+000017E8],xmm0
    unregistersymbol(fly)
    fly:
    movss [ebx+000017E8],xmm0
    unregistersymbol(time)
    time:
    movss [ecx+000017E8],xmm0
    unregistersymbol(kamni)
    kamni:
    movss [eax+000017E8],xmm0

  6. Видео нет, а пример могу.


    -- Ищем в памяти с правами "исполнения кода", "без копирования при записи" и "без записи"
    function ByteScan(signature)
    local results = AOBScan(signature, "+X-C-W")
    if (results == nil) then
    messageDialog("Ошибка. Не найден адрес внедрения.\n\rТрейнер будет закрыт!",1, 2)
    closeCE()
    return nil
    end

    local address = stringlist_getString(results, 0)
    destroy(results)
    return address
    end

    function Cheat0()
    --1 Убрать отдачу на руку
    local workAddres = ByteScan("e8xxxxxxxx8bxxxxxx83xxxx33xx80xxxxxx75xx8bxxxxxxf7")
    local workTemplateAsmText = [[
    ->>address:
    db 90 90 90 90 90]]
    workTemplateAsmText = string.gsub(workTemplateAsmText, "->>address", workAddres)
    autoAssemble(workTemplateAsmText)

    --2 Устойчивый прицел при стрельбе
    --3 Устойчивый прицел при беге
    --Устойчивый прицел при беге
    local workAddres1 = ByteScan("d9xxd9xxxxd9xxxxd9xxxxxxxxxxdexxdfxxf6xxxx75xxd9xxxxxxxxxxd9")
    workAddres1 = string.format("%x", ("0x"..workAddres1) + 8)
    -- Устойчивый прицел при стрельбе
    local workAddres2 = ByteScan("d9xxxxxxxxxx75xxd9xxxxxxxxxxd8xxxxxxd8xxdfxxf6xxxx7axxd9")

    local workTemplateAsmText = [[
    alloc(newmem1,2048)
    label(newmem2)
    label(returnhere1)
    label(originalcode1)
    label(returnhere2)
    label(originalcode2)
    newmem1:
    fstp st
    fldz
    originalcode1:
    fstp dword ptr [ebx+00000624]
    jmp returnhere1
    newmem2:
    fstp st
    fldz
    originalcode2:
    fst dword ptr [ecx+00000624]
    jmp returnhere2
    ->>address1:
    jmp newmem1
    nop
    returnhere1:
    ->>address2:
    jmp newmem2
    nop
    returnhere2:
    ]]
    workTemplateAsmText = string.gsub(workTemplateAsmText, "->>address2", workAddres1)
    workTemplateAsmText = string.gsub(workTemplateAsmText, "->>address1", workAddres2)

    autoAssemble(workTemplateAsmText)
    beep()
    end

    function DisableCheat0()
    ---...функцию DisableCheat0() нужно будет написать
    beep()
    end


    Функцию Cheat0 можно связать с горячими клавишами через Lua или кривым способом для тестов через АА:


    [ENABLE]
    luacall(Cheat0())
    [DISABLE]
    luacall(DisableCheat0())

    Спасибо

  7. Возможно поиск значительно ускорить, если сканировать не скриптами АА, а Lua с указанием типа памяти при сканировании.

    Цитата из main.lua:

    Можешь поискать примеры в Интернете.

    а можешь сделать видео или туториал как делать такого рода Аобскан???
  8. Я сделал скрипт в СЕ и он работает нормально но после того как я сделал в нем "AOBSCAN" он активируется где-то после 5-10 секунд и в то время СЕ очень сильно зависает, подскажите почему это так и как это решить?

  9. [ENABLE]

    alloc(newmem,2048)

    label(xp)

    registersymbol(xp)

    label(returnhere)

    aobscan(aob_xp,01 77 3C 8B 47 28 8B 57 3C 85 C0 74 14 0F B7 4F 4A)

    newmem:

    mov [edi+3C],#99999999

    add [edi+3C],esi

    mov eax,[edi+28]

    jmp returnhere

    aob_xp:

    xp:

    jmp newmem

    nop

    returnhere:

    [DISABLE]

    dealloc(newmem)

    unregistersymbol(xp)

    xp:

    add [edi+3C],esi

    mov eax,[edi+28]

    P.S. скрипт на взлом опыта и поинтов для улучшения

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

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

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