BadBoy Опубликовано 7 ноября, 2022 Поделиться Опубликовано 7 ноября, 2022 Всем привет. Я новичёк, поэтому прошу не судить меня строго. Все мои познания, в основном благодаря этому сайту. Но информации так много, в учебных видеороликах вроде всё понятно и легко, но когда начинаеш писать свой скрипт, не всегда всё получается как нужно. В игре присутствуют юниты, которые могут загружать себе в определённую ячейку разные предметы. Если выделить этого юнита (лкм) и у него в ячейке будет какой-либо предмет, то сработает инструкция. Я эту инструкцию нашёл, вот она: Спойлер Инструкция Спойлер Регистры В регистр RAX - записывается ID предмета (значение в Hex), а в регистр RCX - базовый адрес (к которому нужно прибавить смещение 0с). В дисассемблере жмакнув на ней (пкм) и выбрав опцию "показать адреса к которым обращается эта инструкция", я без труда (зная ИД предмета) нахожу нужный мне адрес. Поэтому решил автоматизировать этот процес с помощью скрипта. Но допустил какую-то ошибку и указатель созданный моим скриптом не отображает никаких адресов. Спойлер Собственно в этом и есть моя просьба о помощи. Вот мой код, подскажите пожалуйста, что в нём не так: Спойлер [ENABLE] aobscanmodule(_Items,Game.exe,CB CC CC CC CC CC CC 8B 41 0C C3 CC) // should be unique alloc(newmem,$1000,_Items) alloc(_pitem,8) label(returnhere) label(originalcode) label(exit) registersymbol(_Items) registersymbol(_pitem) newmem: cmp rax,0 jne originalcode mov [_pitem],rcx add [_pitem],0c originalcode: mov eax,[rcx+0C] ret int 3 exit: jmp returnhere _Items+07: jmp newmem returnhere: registersymbol(_Items) [DISABLE] _Items+07: db 8B 41 0C C3 CC unregistersymbol(_Items) unregistersymbol(_pitem) dealloc(newmem) Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 7 ноября, 2022 Поделиться Опубликовано 7 ноября, 2022 (изменено) А что ты пишешь в таблице в указатель Item? Спойлер Версия игры какая? Изменено 7 ноября, 2022 пользователем Partizan Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 7 ноября, 2022 Поделиться Опубликовано 7 ноября, 2022 У тебя в скрипте 2 раза прописано registersymbol(_Items) Есть alloc(_pitem,8) но нету delloc(_pitem,8) И как по мне метка exit: мусор Я переделал твой скрипт так как привык делать я. Спойлер [ENABLE] aobscanmodule(Items,Anno5.exe,CC CC CC CC CC CC 8B 41 ? C3 CC CC CC CC CC CC CC CC CC CC CC CC 48 89 ? ? ? 53 48 83 EC ? 48 8B ? 48 8D) alloc(newmem,$1000,Items) label(return) label(_item) registersymbol(_item) registersymbol(Items) newmem: mov [_item],rcx mov eax,[rcx+0C] ret int 3 jmp return _item: db 00 Items+06: jmp newmem return: [DISABLE] Items+06: db 8B 41 0C C3 CC unregistersymbol(*) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: Anno5.CGUIEventScriptingSlot::GetContext+9780 Anno5.CGUIEventScriptingSlot::GetContext+976D: E8 8E 6E 6E 00 - call Anno5.exe+76F4A0 Anno5.CGUIEventScriptingSlot::GetContext+9772: 48 89 73 20 - mov [rbx+20],rsi Anno5.CGUIEventScriptingSlot::GetContext+9776: B0 01 - mov al,01 Anno5.CGUIEventScriptingSlot::GetContext+9778: EB CB - jmp Anno5.CGUIEventScriptingSlot::GetContext+9745 Anno5.CGUIEventScriptingSlot::GetContext+977A: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+977B: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+977C: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+977D: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+977E: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+977F: CC - int 3 // ---------- INJECTING HERE ---------- Anno5.CGUIEventScriptingSlot::GetContext+9780: 8B 41 0C - mov eax,[rcx+0C] // ---------- DONE INJECTING ---------- Anno5.CGUIEventScriptingSlot::GetContext+9783: C3 - ret Anno5.CGUIEventScriptingSlot::GetContext+9784: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+9785: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+9786: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+9787: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+9788: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+9789: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+978A: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+978B: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+978C: CC - int 3 } В таблицу добавляешь адрес [_item]+0C 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
BadBoy Опубликовано 7 ноября, 2022 Автор Поделиться Опубликовано 7 ноября, 2022 Цитата А что ты пишешь в таблице в указатель Item? Версия игры 3.00.8045 А в указатель , хочу чтоб скрипт писал адрес из регистра rcx, со смещением 0с. Спасибо за быстрый ответ. Сейчас попробую твой вариант. 6 часов назад, Partizan сказал: Я переделал твой скрипт так как привык делать я. Ваш вариант, у меня почему-то, тоже не работает. Спойлер Partizan, Всё-таки ваш вариант сработал. Снова моя ошибка была. Я записывал адрес как указатель, а нужно было записать простым адресом. Благодарю за помощь. Ещё хотел узнать, вы в конце скрипта, в колонке [DISABLE] прописали команду unregistersymbol(*), таким образом вы удалили два ранее созданных registersymbol(_item) и registersymbol(Items)? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 8 ноября, 2022 Поделиться Опубликовано 8 ноября, 2022 7 часов назад, Partizan сказал: Я переделал твой скрипт так как привык делать я. В данном случае int3 и jmp return в секции newmem не имеют смысла, поскольку выход из инъекции произойдет по ret. Их можно даже не прописывать в newmem. Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 8 ноября, 2022 Поделиться Опубликовано 8 ноября, 2022 12 часов назад, BadBoy сказал: Ещё хотел узнать, вы в конце скрипта, в колонке [DISABLE] прописали команду unregistersymbol(*), таким образом вы удалили два ранее созданных registersymbol(_item) и registersymbol(Items)? Да. Также можно и delloc(*) и всё остальное. 6 часов назад, Xipho сказал: В данном случае int3 и jmp return в секции newmem не имеют смысла, поскольку выход из инъекции произойдет по ret. Их можно даже не прописывать в newmem. Это СЕ так создал скрипт а я не обратил внимание. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения