Karabatus
-
Постов
19 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные Karabatus
-
-
Название игры: Warspear Online
Версия игры: 10.2.0
Тип издания: Лицензия
Тип запроса: Трейнер или таблица
Цена работы: 300
Срок выполнения: 12/31/2021
Требуемые опции:
- 1)Необходим скрипт, который найдет пустой адресс в процессе и запишет в него значение переменной.
-
6 минут назад, youneuoy сказал:
ты не прав, было предложено использовать кейв возле инструкции, а не структуры и записать туда адрес структуры.
да, тут была проблема в том, что я не понял фразу "на границе секций модуля", а переспросить постеснялся. Но по факту я хотел попробовать взять адрес вне границ структур, но начал воевать с Lua
6 минут назад, youneuoy сказал:Посмотрел твои старые посты, впечатление произвели не оч. хорошее.
да это вроде посты, когда я пытался с разбегу залезть в память, год или два назад. В тот момент я решил работать с изображением. Теперь вот пробую работать с памятью. 90% своих адресов я все же нашел вручную, на 2 своих проекта) Вот из-за немногих адресов решил поизучать ассемблер
- 1
-
8 минут назад, Xipho сказал:
Я устал повторять. Пожалуйста, перечитай мои предыдущие сообщения. И постарайся еще понять/погуглить, чем отличается базовый адрес модуля от адреса структуры (его еще называют базовым адресом игрока)
базовый адрес модуля (warspear.exe) у меня всегда статичный и он равен 400000
если у меня кейв лежит в структуре игрока, то по отношению к модулю он ведь будет разный т.к. структура игрока меняется после перезагрузки, поправьте если я не прав
-
12 минут назад, youneuoy сказал:
кажется ты сделал что-то не то. В ce есть специальный инструмент для поиска неиспользуемой памяти. Пересмотри обучающие ролики с канала гхл, там это точно было. Вот этот плейлист(вообще весь) обязателен к внимательному просмотру:
не очень понял, а что там сложного в инструменте. Ввести начальный адрес поиска и конечный. Я ввожу начальный адрес структуры (по правильному бы знать еще и конечный) но по факту в конечный поиск не трогаю. Находит адреса в структуре, которые я могу перезаписывать - всё супер, могу даже ручками вписать. Но по факту, мне ведь чтобы найти смещение надо найти базовый адрес структуры, а его я как раз и хочу закинуть в какой-нибудь кейв)
-
31 минуту назад, Xipho сказал:
Смотри, обрисую тебе общий алгоритм приблизительно:
1. Находишь инструкцию, работающую с нужным тебе значением
2. Находишь неиспользуемый адрес на границе секций модуля, в котором находится твоя инструкция (в том же СЕ есть функционал поиска кейвов)
3. Вычисляешь базовый адрес модуля, в котором находится твоя инструкция.
4. Вычисляешь смещение от базового адреса модуля, в котором находится твоя инструкция, до найденного тобой свободного адреса в этом же модуле
5. В кейве на инструкцию делаешь запись в найденный тобой адрес
6. В коде твоего собственного приложения, бот это или что, неважно, ты точно также находишь базовый адрес модуля, в котором была исходная инструкция, и добавляешь найденное ранее смещение. Таким образом ты будешь иметь "статичный" адрес нужного тебе значения.Есть вариант попроще, но он работает далеко не всегда - найти вручную цепочку указателей методом реверсивного поиска (урок есть у нас на канале).
нашел кейвы в структуре игрока где лежит инструкция, с которой работал. Но вот не задача, именно с 3 пунктом, потому как реверсивным поиском мне не удавалось найти базовый адрес, со смещениями до моей структуры. А автоматический поиск не стабилен.
Если бы я мог найти указатель на структуру, то мне и кейвы не нужны были бы ?
-
4 минуты назад, Xipho сказал:
Смотри, обрисую тебе общий алгоритм приблизительно:
1. Находишь инструкцию, работающую с нужным тебе значением
2. Находишь неиспользуемый адрес на границе секций модуля, в котором находится твоя инструкция (в том же СЕ есть функционал поиска кейвов)
3. Вычисляешь базовый адрес модуля, в котором находится твоя инструкция.
4. Вычисляешь смещение от базового адреса модуля, в котором находится твоя инструкция, до найденного тобой свободного адреса в этом же модуле
5. В кейве на инструкцию делаешь запись в найденный тобой адрес
6. В коде твоего собственного приложения, бот это или что, неважно, ты точно также находишь базовый адрес модуля, в котором была исходная инструкция, и добавляешь найденное ранее смещение. Таким образом ты будешь иметь "статичный" адрес нужного тебе значения.Есть вариант попроще, но он работает далеко не всегда - найти вручную цепочку указателей методом реверсивного поиска (урок есть у нас на канале).
на счет варианта попроще, 90% указателей я нашел вручную, вот с 10% проблема, не получается найти. Поэтому и решил работать с инструкциями.
-
-
5 минут назад, Xipho сказал:
А я тебе говорил не про базовый адрес твоих значений. Я тебе говорил найти свободный адрес на границе секции. Относительно базового адреса исполняемого модуля смещение до найденного тобой адреса будет постоянным. Вот это и используй.
если правильно понял:
мой базовый адрес модуля warspear.exe - 400000
получается что смещение 14 это свободный адрес? или я не верно понял -
Вот пришел к такому, файл создаётся но значение регистра не вписывается.
Спойлер{ 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% из всех, но их знать мне тоже важно. Поэтому решил их брать из инструкций. Делаю это для того, потому что пишу бота для игры и считываю весь адрес с офсетами, а вот значение регистра из инструкций пока не сообразил как считывать. Решил что самым простым будет вписывание в файл, но этот скрипт почему-то не хочет работать, выдавая какую то ошибку синтаксиса.
Ошибка:[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# это не тот вариант, что я бы хотел (согласен, это мои проблемы). Я подумал, что работать с регистром это не должно быть сложным, но столкнулся с проблемой с вписывания в файл, а так по сути это тот вариант, что меня бы устроил
-
я имею в виду, можно ли записать адрес структуры в статичный адрес игры, который никак не используется. Т.е. сделать так, что по адресу 123 у меня всегда будет лежать значение - адрес структуры игрока, по адресу 456 у меня всегда будет значение - адрес на структуру мира (к примеру). Может быть можно вычислить, что адрес 123 в игре не используется и в него мы запишем любое значение какое захотим (в частности адрес структуры из инструкции) Переменная это хорошо, но я хотел бы считывать это значение из Cheat engine в C# или python, но пока только без проблем могу считать указанный адрес и его значение, а вот переменную cheat engine, думаю более проблематично будет считать (возможно я не прав)
-
Спасибо. Значения поменялись! А может кто подсказать, как мне считать регистр ebx (адрес структуры игрока) и занести в какой-нибудь незадействованный статичный адрес? Основная задача - иметь несколько адресов, к которым я могу обращаться и в которых будут адреса моих структур, даже после перезагрузки игры
-
Добрый вечер! Я пытаюсь сделать свой первый скрипт по видео-урокам "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] }
-
Если кто может помочь, то отписал своё по поводу игры Eve Online предложение в разделе "платные запросы". Вдруг заинтересует. Спасибо.
-
Цитата
я разбирался, я попробовал искать ручками, но в какой то момент не находит 3 уровень указателя. Пробовал создавать карту и с помощью ее искать указатели, посмотрел несколько видео обучающих тут, просто в какой то момент стопорнулся, поставить бряк и написать трейнер чтобы изучить ту или иную инструкцию - это значит изучить с++ хотя бы базовый уровень, знание ассемблера - базовый уровень, я согласен, что это нужно, но я не ставлю цель ломать игры, мне нужно лишь взломать одну игру и базовые адреса передать кодеру, который будет писать бота. Скажем у меня времени на поиск адресов не так много, поэтому и обратился сюда за помощью с просьбой помочь найти базовый адрес за плату.
Просьба, одобрите мою тему, вдруг найдется тот, кто поможет. Все ведь по правилам оформлено.
-
Название игры: Eve Online
Версия игры: последняя
Тип издания: лицензия
Тип запроса: базовый адрес
Цена работы: 500
Срок выполнения: любые
Требуемые опции:
- Базовый адрес
Дополнительная информация:
Здравствуйте. Ломаю игру ММО иру Eve Online и мне никак не поддается базовый адрес. Я новичок в сфере взлома игр. Я застопорился на поиске базового адреса. Чтобы дальше изучать этот процесс мне нужно его найти. Мне бы хотелось, чтобы Вы смогли обнаружить базовые адреса каких-то определённых вещей: щиты корабля, щиты дронов, ползунок дронбея и тд. Не обязательно искать их все, достаточно найти хоть какой-нибудь и записать видео, желательно с разъяснением как нашли, чтобы я по вашим разъяснением искал остальные адреса. Ну или можем вместе их поискать. Бюджет на 1 базовый адрес = 500р. Если вместе будем искать несколько адресов = 3000р. Думаю создать персонажа в игре не сложно, но все же могу предоставить акк. Если кому интересно, напишите в лс свой скайп, дискорд, icq, vk - буду рад вашей помощи. Не знаю, нужно или нет, но скину интерфейс игры, дабы завлечь кого-нибудь и чтобы было представление самой игры.
-
Здравстуйте) ломаю игру Eve Online, пытаюсь найти базовый адрес. Прочитал кучу гайдов, посмотрел обучающие видео от вашего портала. Использую Cheat Engine 6.8.1 версии. Ищу ручками адреса отвечающие за нужную мне настройку (для начала пытаюсь найти количество людей в системе) Мне всегда находит 3 адреса. Смотрю адреса, которые перезаписывают мои адреса, в общем ищу цепочку. Нахожу указатель этих адресов. Ищу адрес, который перезаписывает указатель, не находит. Стабильно на этом уровне не находит нужный указатель( Пробовал через отладчик, ищу 3 уровень 10000-150000 смещение, 4-5-6-7-8 уровни. Не находит. В С++ не силён, скрипты писать не умею, искать где-то готовые скрипты в которых не шарю, не вижу смысла. Задача выцепить из памяти игры нужные мне базовые адреса, а потом уже выдать эти адреса кодеру, с помощью которых он будет писать бота. Основной вопрос, почему не находит адрес на 3 уровне через поиск ручками(
Warspear Online
in Платные запросы (только оффлайн игры)
Опубликовано
Название игры: Warspear Online
Версия игры: 10.2.0
Тип издания: Лицензия
Тип запроса: Трейнер или таблица
Цена работы: 200
Срок выполнения: 12/31/2021
Требуемые опции:
Дополнительная информация:
Нужно задать переменной значение, которое нужно считать аоб сканом. Сама переменная должна быть в пустой области игры. По итогу: есть структуры игры и они все с 1го адреса идут (+ смещения) Нужно чтобы в чит енжине при вызове скрипта в переменную записывался этот базовый адрес. Нужно для того, чтобы при смене базового адреса не нужно было вручную вписывать в каждые структуры одно и тоже значение руками.