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

Karabatus

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

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

  • Посещение

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

  1. Название игры: Warspear Online

    Версия игры: 10.2.0

    Тип издания: Лицензия

    Тип запроса: Трейнер или таблица

    Цена работы: 200

    Срок выполнения: 12/31/2021

    Требуемые опции: 

    1. 1)Скрипт

    Дополнительная информация: 

    Нужно задать переменной значение, которое нужно считать аоб сканом. Сама переменная должна быть в пустой области игры. По итогу: есть структуры игры и они все с 1го адреса идут (+ смещения) Нужно чтобы в чит енжине при вызове скрипта в переменную записывался этот базовый адрес. Нужно для того, чтобы при смене базового адреса не нужно было вручную вписывать в каждые структуры одно и тоже значение руками.

  2. Название игры: Warspear Online

    Версия игры: 10.2.0

    Тип издания: Лицензия

    Тип запроса: Трейнер или таблица

    Цена работы: 300

    Срок выполнения: 12/31/2021

    Требуемые опции: 

    1. 1)Необходим скрипт, который найдет пустой адресс в процессе и запишет в него значение переменной.

  3. 6 минут назад, youneuoy сказал:

    ты не прав, было предложено использовать кейв возле инструкции, а не структуры и записать туда адрес структуры. 

    да, тут была проблема в том, что я не понял фразу "на границе секций модуля", а переспросить постеснялся. Но по факту я хотел попробовать взять адрес вне границ структур, но начал воевать с Lua

    6 минут назад, youneuoy сказал:

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

     

    да это вроде посты, когда я пытался с разбегу залезть в память, год или два назад. В тот момент я решил работать с изображением. Теперь вот пробую работать с памятью. 90% своих адресов я все же нашел вручную, на 2 своих проекта) Вот из-за немногих адресов решил поизучать ассемблер

    • Печалька 1
  4. 8 минут назад, Xipho сказал:

    Я устал повторять. Пожалуйста, перечитай мои предыдущие сообщения. И постарайся еще понять/погуглить, чем отличается базовый адрес модуля от адреса структуры (его еще называют базовым адресом игрока)

    базовый адрес модуля (warspear.exe) у меня всегда статичный и он равен 400000

     

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

     

  5. 12 минут назад, youneuoy сказал:

    кажется ты сделал что-то не то. В ce есть специальный инструмент для поиска неиспользуемой памяти. Пересмотри обучающие ролики с канала гхл, там это точно было. Вот этот плейлист(вообще весь) обязателен к внимательному просмотру: 

     

    не очень понял, а что там сложного в инструменте. Ввести начальный адрес поиска и конечный. Я ввожу начальный адрес структуры (по правильному бы знать еще и конечный) но по факту в конечный поиск не трогаю. Находит адреса в структуре, которые я могу перезаписывать - всё супер, могу даже ручками вписать. Но по факту, мне ведь чтобы найти смещение надо найти базовый адрес структуры, а его я как раз и хочу закинуть в какой-нибудь кейв)

  6. 31 минуту назад, Xipho сказал:

    Смотри, обрисую тебе общий алгоритм приблизительно:

    1. Находишь инструкцию, работающую с нужным тебе значением

    2. Находишь неиспользуемый адрес на границе секций модуля, в котором находится твоя инструкция (в том же СЕ есть функционал поиска кейвов)

    3. Вычисляешь базовый адрес модуля, в котором находится твоя инструкция.

    4. Вычисляешь смещение от базового адреса модуля, в котором находится твоя инструкция, до найденного тобой свободного адреса в этом же модуле

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

     

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

     

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

    Если бы я мог найти указатель на структуру, то мне и кейвы не нужны были бы ?

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

    Смотри, обрисую тебе общий алгоритм приблизительно:

    1. Находишь инструкцию, работающую с нужным тебе значением

    2. Находишь неиспользуемый адрес на границе секций модуля, в котором находится твоя инструкция (в том же СЕ есть функционал поиска кейвов)

    3. Вычисляешь базовый адрес модуля, в котором находится твоя инструкция.

    4. Вычисляешь смещение от базового адреса модуля, в котором находится твоя инструкция, до найденного тобой свободного адреса в этом же модуле

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

     

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

     

    на счет варианта попроще, 90% указателей я нашел вручную, вот с 10% проблема, не получается найти. Поэтому и решил работать с инструкциями.

  8. 5 минут назад, Xipho сказал:

    А я тебе говорил не про базовый адрес твоих значений. Я тебе говорил найти свободный адрес на границе секции. Относительно базового адреса исполняемого модуля смещение до найденного тобой адреса будет постоянным. Вот это и используй.

    если правильно понял:
    мой базовый адрес модуля warspear.exe - 400000
    получается что смещение 14 это свободный адрес? или я не верно понялspacer.png

  9. Вот пришел к такому, файл создаётся но значение регистра не вписывается.

    Спойлер
    
    { Game   : warspear.exe
      Version: 1.0
      Date   : 09-14-21
      Author : [open aamaker.lua and pastle Author]
    
      This script does blah blah blah
      
      Make by aamaker Lua plagin ;)
    }
    
    [ENABLE]
    
    
    aobscanmodule(INJECT,PPPP,8bxxxxxxxxxx85xx79xx33xxebxx8bxxxxxxxxxx3bxx0f4fxx3bxxxxxxxxxx75xx8bxxxxxxxxxx3bxxxxxxxxxx0f84xxxxxxxx8dxxxxxx8bxxe8xxxxxxxxa1xxxxxxxx8bxxxx8bxxxx0fb7xxxxxxxxxxxxc1xxxxf7xxxx0facxxxxc1xxxxc1xxxx89xxxx66xxxxxx66xxxx75xxc1xxxx66xxxxxx74xx8bxx8dxxxxxx8bxxffxxxx8bxxe8xxxxxxxxc6xxxxxx8bxxxxxxxxxx85xx79xx33xxebxx8bxxxxxxxxxx3bxx0f4fxx89xxxxxxxxxx8bxxxxxxxxxx83xxxx8dxxxx89xxxxxxxxxxe8xxxxxxxx83xxxx8dxxxxxx8dxxxxxxxxxxc7xxxxxxxxxxxxe8xxxxxxxx8bxxxx8dxxxxeb)
    alloc(newmem,$1000)
    
    label(code)
    label(register)
    label(return)
    registersymbol(INJECT)
    
    
    newmem:
    
    code:
        mov [register], ebx
    	mov ecx,[ebx+000000FC]
    	jmp return
    
    {$LUA}
       file=io.open('Garik66.txt','w')
       file:write(readInteger(register))
       file:close()
    {$ASM}
    
    register:
        db 00 00 00 00
    
    
    INJECT:
    	jmp code
    	nop
    
    return:
    
    [DISABLE]
    {$LUA}
    {$ASM}
    
    INJECT:
    	mov ecx,[ebx+000000FC]
    
    
    unregistersymbol(INJECT)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: PPPP
    
    warspear.exe+4355D9: EB 02 - jmp 008355DD
    warspear.exe+4355DB: B3 01 - mov bl,01
    warspear.exe+4355DD: 88 5D F0  - mov [ebp-10],bl
    warspear.exe+4355E0: FF 75 F0  - push [ebp-10]
    warspear.exe+4355E3: 8D B7 54060000  - lea esi,[edi+00000654]
    warspear.exe+4355E9: 8B CE  - mov ecx,esi
    warspear.exe+4355EB: E8 405EFDFF - call 0080B430
    warspear.exe+4355F0: 84 DB  - test bl,bl
    warspear.exe+4355F2: 0F84 E9000000 - je 008356E1
    warspear.exe+4355F8: 8B 9F C4000000  - mov ebx,[edi+000000C4]
    // ---------- INJECTING HERE ----------
    PPPP: 8B 8B FC000000  - mov ecx,[ebx+000000FC]
    // ---------- DONE INJECTING  ----------
    warspear.exe+435604: 85 C9  - test ecx,ecx
    warspear.exe+435606: 79 04 - jns 0083560C
    warspear.exe+435608: 33 C9  - xor ecx,ecx
    warspear.exe+43560A: EB 0B - jmp 00835617
    warspear.exe+43560C: 8B 83 00010000  - mov eax,[ebx+00000100]
    warspear.exe+435612: 3B C8  - cmp ecx,eax
    warspear.exe+435614: 0F4F C8  - cmovg ecx,eax
    warspear.exe+435617: 3B 8F 684F0000  - cmp ecx,[edi+00004F68]
    warspear.exe+43561D: 75 12 - jne 00835631
    warspear.exe+43561F: 8B 83 00010000  - mov eax,[ebx+00000100]
    }

     

    если написать  file.write("123") , то в файл без проблем впишется 123

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

    Ошибка:[string "local syntaxcheck,memrec=...
    ..."]:6: attempt to concatenate a nil value
    Спойлер
    
    { Game   : warspear.exe
      Version: 1.0
      Date   : 09-15-21
      Author : [open aamaker.lua and pastle Author]
    
      This script does blah blah blah
     
      Make by aamaker Lua plagin ;)
    }
    
    [ENABLE]
    
    {$LUA}
    -- запись в файл Garik66.txt
    function write_file()
    if readInteger('WriteID') == 1 then
    file=io.open('Garik66.txt','a+')
    file:write("newID - "..readInteger('IDItem66 '.."\n")..";  ")
    file:close()
    writeInteger('WriteID', 0)
    end
    end
    
    -- таймер для проверки
    t=createTimer(nil)
    timer_setInterval(t, 100)
    timer_onTimer(t, write_file)
    timer_setEnabled(t, true)
    {$ASM}
    
    
    aobscanmodule(INJECT,warspear.exe+3C0088,8bxxxxxxxxxx3bxx0f4fxx8bxxxxxxxxxxxx81)
    alloc(newmem,$1000)
    
    label(WriteID)
    label(code)
    label(return)
    registersymbol(INJECT)
    registersymbol(WriteID)
    
    newmem:
        mov eax,[edi+000000F4]
        mov [edi+00000100],eax
    code:
    
        mov eax,[edi+00000100]
        jmp return
    
    WriteID:
        dd 1
    IDItem66:
        dd 0
    
    INJECT:
        jmp newmem
        nop
    
    return:
    
    
    [DISABLE]
    {$LUA}
    -- отключение таймера
    timer_setEnabled(t, false)
    {$ASM}
    
    INJECT:
        mov eax,[edi+00000100]
    
    unregistersymbol(INJECT)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: warspear.exe+3C0088
    
    warspear.exe+3C0074: 83 C0 14 - add eax,14
    warspear.exe+3C0077: 74 ED - je 007C0066
    warspear.exe+3C0079: 80 78 34 00 - cmp byte ptr [eax+34],00
    warspear.exe+3C007D: 74 E7 - je 007C0066
    warspear.exe+3C007F: B0 01 - mov al,01
    warspear.exe+3C0081: 5F - pop edi
    warspear.exe+3C0082: 5E - pop esi
    warspear.exe+3C0083: 59 - pop ecx
    warspear.exe+3C0084: 5D - pop ebp
    warspear.exe+3C0085: C2 0400 - ret 0004
    // ---------- INJECTING HERE ----------
    warspear.exe+3C0088: 8B 87 00010000  - mov eax,[edi+00000100]
    // ---------- DONE INJECTING  ----------
    warspear.exe+3C008E: 3B F0  - cmp esi,eax
    warspear.exe+3C0090: 0F4F F0  - cmovg esi,eax
    warspear.exe+3C0093: 8B 8F 9C030000  - mov ecx,[edi+0000039C]
    warspear.exe+3C0099: 52 - push edx
    warspear.exe+3C009A: 81 C1 98000000 - add ecx,00000098
    warspear.exe+3C00A0: E8 5B720200 - call 007E7300
    warspear.exe+3C00A5: 33 C9  - xor ecx,ecx
    warspear.exe+3C00A7: 3B F0  - cmp esi,eax
    warspear.exe+3C00A9: 5F - pop edi
    warspear.exe+3C00AA: 0F9D C0  - setge al
    }

     

    На счет делать все сразу в питоне. Я искал в гугле информацию, но там есть ясный ответ, что питон слаб для такого. В данный момент бот написан на питоне и он работает но с изображением. Я решил его переписать на работу с памятью, но переписывать с нуля его на С++ (который я пока не знаю) или C# это не тот вариант, что я бы хотел (согласен, это мои проблемы). Я подумал, что работать с регистром это не должно быть сложным, но столкнулся с проблемой с вписывания в файл, а так по сути это тот вариант, что меня бы устроил

  11. я имею в виду, можно ли записать адрес структуры в статичный адрес игры, который никак не используется. Т.е. сделать так, что по адресу 123 у меня всегда будет лежать значение - адрес структуры игрока, по адресу 456 у меня всегда будет значение - адрес на структуру мира (к примеру). Может быть можно вычислить, что адрес 123 в игре не используется и в него мы запишем любое значение какое захотим (в частности адрес структуры из инструкции) Переменная это хорошо, но я хотел бы считывать это значение из Cheat engine в C# или python, но пока только без проблем могу считать указанный адрес и его значение, а вот переменную cheat engine, думаю более проблематично будет считать (возможно я не прав)

  12. Спасибо. Значения поменялись! А может кто подсказать, как мне считать регистр ebx (адрес структуры игрока) и занести в какой-нибудь незадействованный статичный адрес? Основная задача - иметь несколько адресов, к которым я могу обращаться и в которых будут адреса моих структур, даже после перезагрузки игры

  13. Добрый вечер! Я пытаюсь сделать свой первый скрипт по видео-урокам "08. Пишем первый скрипт". И у меня весь код брякается как в видео-уроке и что-то делает в выделенной памяти. Но в анализе структуры данных значение не меняется. Для теста я решил из структуры игрока (ebx) взять значение маны(int 188) по смещению FC и записать это значение в адрес хп(текущий int 3500) по смещению F4 и у меня не изменяется здоровье. Я понимаю, что его возможно перезаписывает что-то (но вроде не должно), так же я пробовал задействовать и другие смещения для записи (к которым инструкции не обращаются) И проверил эти другие адреса на запись, чтение после выполнения моего скрипта. Ничего не произошло. Этот скрипт я делаю для теста, чтобы научится писать, а по факту у меня есть задача считать адрес структуры игрока из ebx и закинуть куда-то в переменную, может быть в незадействованный адрес. И считывать потом из указанных мною адресов, структуры, которые мне интересны. Видел видео о поиске незадействованных адресов от Garik, в них он указывает скрипт, который ищет незадействованные адреса, но только со значением 0. После того как он выложил урок, он сказал, что скрипт не верно работает и поэтому я данный урок отсеял (возможно он мне подойдет, я не знаю) Очень извиняюсь за простыню слов, был бы рад с помощью моего текущего скрипта и подсказка почему может не работать. И буду рад если кто подскажет как выявить незадействованные адреса в памяти и записать в них адреса своих структур, которые я нашел в различных инструкциях (конкретно значения регистров)

    Спойлер

    код

    
    { Game   : warspear.exe
      Version: 1.0
      Date   : 09-14-21
      Author : [open aamaker.lua and pastle Author]
    
      This script does blah blah blah
      
      Make by aamaker Lua plagin 
    }
    
    [ENABLE]
    
    aobscanmodule(INJECT,PPPP,8bxxxxxxxxxx85xx79xx33xxebxx8bxxxxxxxxxx3bxx0f4fxx3bxxxxxxxxxx75xx8bxxxxxxxxxx3bxxxxxxxxxx0f84xxxxxxxx8dxxxxxx8bxxe8xxxxxxxxa1xxxxxxxx8bxxxx8bxxxx0fb7xxxxxxxxxxxxc1xxxxf7xxxx0facxxxxc1xxxxc1xxxx89xxxx66xxxxxx66xxxx75xxc1xxxx66xxxxxx74xx8bxx8dxxxxxx8bxxffxxxx8bxxe8xxxxxxxxc6xxxxxx8bxxxxxxxxxx85xx79xx33xxebxx8bxxxxxxxxxx3bxx0f4fxx89xxxxxxxxxx8bxxxxxxxxxx83xxxx8dxxxx89xxxxxxxxxxe8xxxxxxxx83xxxx8dxxxxxx8dxxxxxxxxxxc7xxxxxxxxxxxxe8xxxxxxxx8bxxxx8dxxxxeb)
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    registersymbol(INJECT)
    
    newmem:
        push dword ptr [ebx+000000FC]
        pop dword ptr [ebx+000000F4]
    code:
        mov ecx,[ebx+000000FC]
        jmp return
    
    INJECT:
        jmp newmem
        nop
    
    return:
    
    
    [DISABLE]
    
    INJECT:
        mov ecx,[ebx+000000FC]
    
    unregistersymbol(INJECT)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: PPPP
    
    warspear.exe+4355D9: EB 02 - jmp 008355DD
    warspear.exe+4355DB: B3 01 - mov bl,01
    warspear.exe+4355DD: 88 5D F0  - mov [ebp-10],bl
    warspear.exe+4355E0: FF 75 F0  - push [ebp-10]
    warspear.exe+4355E3: 8D B7 54060000  - lea esi,[edi+00000654]
    warspear.exe+4355E9: 8B CE  - mov ecx,esi
    warspear.exe+4355EB: E8 405EFDFF - call 0080B430
    warspear.exe+4355F0: 84 DB  - test bl,bl
    warspear.exe+4355F2: 0F84 E9000000 - je 008356E1
    warspear.exe+4355F8: 8B 9F C4000000  - mov ebx,[edi+000000C4]
    // ---------- INJECTING HERE ----------
    PPPP: 8B 8B FC000000  - mov ecx,[ebx+000000FC]
    // ---------- DONE INJECTING  ----------
    warspear.exe+435604: 85 C9  - test ecx,ecx
    warspear.exe+435606: 79 04 - jns 0083560C
    warspear.exe+435608: 33 C9  - xor ecx,ecx
    warspear.exe+43560A: EB 0B - jmp 00835617
    warspear.exe+43560C: 8B 83 00010000  - mov eax,[ebx+00000100]
    warspear.exe+435612: 3B C8  - cmp ecx,eax
    warspear.exe+435614: 0F4F C8  - cmovg ecx,eax
    warspear.exe+435617: 3B 8F 684F0000  - cmp ecx,[edi+00004F68]
    warspear.exe+43561D: 75 12 - jne 00835631
    warspear.exe+43561F: 8B 83 00010000  - mov eax,[ebx+00000100]
    }

     

     

  14. Цитата

     

    я разбирался, я попробовал искать ручками, но в какой то момент не находит 3 уровень указателя. Пробовал создавать карту и с помощью ее искать указатели, посмотрел несколько видео обучающих тут, просто в какой то момент стопорнулся, поставить бряк и написать трейнер чтобы изучить ту или иную инструкцию - это значит изучить с++ хотя бы базовый уровень, знание ассемблера - базовый уровень, я согласен, что это нужно, но я не ставлю цель ломать игры, мне нужно лишь взломать одну игру и базовые адреса передать кодеру, который будет писать бота.  Скажем у меня времени на поиск адресов не так много, поэтому и обратился сюда за помощью с просьбой помочь найти базовый адрес за плату.

     

    Просьба, одобрите мою тему, вдруг найдется тот, кто поможет. Все ведь по правилам оформлено.

  15.  

    Название игры: Eve Online

    Версия игры: последняя

    Тип издания: лицензия

    Тип запроса: базовый адрес

    Цена работы: 500

    Срок выполнения: любые

    Требуемые опции: 

     

    1. Базовый адрес

     

    Дополнительная информация: 

     

    Здравствуйте. Ломаю игру ММО иру Eve Online и мне никак не поддается базовый адрес. Я новичок в сфере взлома игр. Я застопорился на поиске базового адреса. Чтобы дальше изучать этот процесс мне нужно его найти. Мне бы хотелось, чтобы Вы смогли обнаружить базовые адреса каких-то определённых вещей: щиты корабля, щиты дронов, ползунок дронбея и тд. Не обязательно искать их все, достаточно найти хоть какой-нибудь и записать видео, желательно с разъяснением как нашли, чтобы я по вашим разъяснением искал остальные адреса. Ну или можем вместе их поискать. Бюджет на 1 базовый адрес = 500р. Если вместе будем искать несколько адресов = 3000р. Думаю создать персонажа в игре не сложно, но все же могу предоставить акк. Если кому интересно, напишите в лс свой скайп, дискорд, icq, vk - буду рад вашей помощи. Не знаю, нужно или нет, но скину интерфейс игры, дабы завлечь кого-нибудь и чтобы было представление самой игры.

    kKajtwp.jpg

     

  16. Здравстуйте) ломаю игру Eve Online, пытаюсь найти базовый адрес. Прочитал кучу гайдов, посмотрел обучающие видео от вашего портала. Использую Cheat Engine 6.8.1 версии. Ищу ручками адреса отвечающие за нужную мне настройку (для начала пытаюсь найти количество людей в системе) Мне всегда находит 3 адреса. Смотрю адреса, которые перезаписывают мои адреса, в общем ищу цепочку. Нахожу указатель этих адресов. Ищу адрес, который перезаписывает указатель, не находит. Стабильно на этом уровне не находит нужный указатель(  Пробовал через отладчик, ищу 3 уровень 10000-150000 смещение, 4-5-6-7-8 уровни. Не находит. В С++ не силён, скрипты писать не умею, искать где-то готовые скрипты в которых не шарю, не вижу смысла. Задача выцепить из памяти игры нужные мне базовые адреса, а потом уже выдать эти адреса кодеру, с помощью которых он будет писать бота. Основной вопрос, почему не находит адрес на 3 уровне через поиск ручками(

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

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

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