Dison Опубликовано 19 марта, 2020 Поделиться Опубликовано 19 марта, 2020 Привет всем у меня есть инструкция которая не постоянно считывается а только когда делаешь какое нибудь действие, например открыл инвентарь появились адреса предметов. Можно сделать так чтобы инструкция постоянно считывалась, чтоб не приходилось открывать инвентарь для появления адресов предметов. Собственно сам скрипт: Спойлер [ENABLE] aobscan(Inf.Item,48 63 40 18 85 C0 7E 07 B8) // should be unique alloc(newmem,$1000,0DF4F8DA) registersymbol(Inf.Item) label(code) label(return) newmem: cmp [rax+10],00000017 jne code mov [rax+18],#99 code: movsxd rax,dword ptr [rax+18] test eax,eax jmp return Inf.Item: jmp newmem nop return: [DISABLE] Inf.Item: db 48 63 40 18 85 C0 unregistersymbol(Inf.Item) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 0DF4F8DA 0DF4F8AE: 0F 84 35 00 00 00 - je 0DF4F8E9 0DF4F8B4: 48 8B 47 20 - mov rax,[rdi+20] 0DF4F8B8: 48 8B 40 20 - mov rax,[rax+20] 0DF4F8BC: 48 8B C8 - mov rcx,rax 0DF4F8BF: 49 8B D7 - mov rdx,r15 0DF4F8C2: 48 83 EC 20 - sub rsp,20 0DF4F8C6: 83 38 00 - cmp dword ptr [rax],00 0DF4F8C9: 49 BB 50 86 6C 04 00 00 00 00 - mov r11,00000000046C8650 0DF4F8D3: 41 FF D3 - call r11 0DF4F8D6: 48 83 C4 20 - add rsp,20 // ---------- INJECTING HERE ---------- 0DF4F8DA: 48 63 40 18 - movsxd rax,dword ptr [rax+18] 0DF4F8DE: 85 C0 - test eax,eax // ---------- DONE INJECTING ---------- 0DF4F8E0: 7E 07 - jle 0DF4F8E9 0DF4F8E2: B8 01 00 00 00 - mov eax,00000001 0DF4F8E7: EB 02 - jmp 0DF4F8EB 0DF4F8E9: 33 C0 - xor eax,eax 0DF4F8EB: 48 8D 65 E8 - lea rsp,[rbp-18] 0DF4F8EF: 41 5F - pop r15 0DF4F8F1: 5F - pop rdi 0DF4F8F2: 5E - pop rsi 0DF4F8F3: C9 - leave 0DF4F8F4: C3 - ret } Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 20 марта, 2020 Поделиться Опубликовано 20 марта, 2020 Ты можешь отреверсить функцию целиком, выяснить ее параметры запуска, в скрипте подготавливать эти параметры (распихать их в нужные места), и затем вызвать CreateThread на стартовый адрес этой функции. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 21 марта, 2020 Автор Поделиться Опубликовано 21 марта, 2020 Если бы я знал как это сделать то не спрашивал бы у вас. Может кто объяснит? Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 21 марта, 2020 Поделиться Опубликовано 21 марта, 2020 7 минут назад, Dison сказал: Если бы я знал как это сделать то не спрашивал бы у вас. Может кто объяснит? Может сделать перехват в другом месте? Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 21 марта, 2020 Поделиться Опубликовано 21 марта, 2020 9 минут назад, Dison сказал: Может кто объяснит? Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 21 марта, 2020 Автор Поделиться Опубликовано 21 марта, 2020 Я читал эту тему, в примере с моим кодом как это сделать Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 21 марта, 2020 Поделиться Опубликовано 21 марта, 2020 1 минуту назад, Dison сказал: Я читал эту тему, в примере с моим кодом как это сделать Темы для того и создаются, что бы ты научился и потом мог применить знания для своих целей. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 21 марта, 2020 Автор Поделиться Опубликовано 21 марта, 2020 Сейчас еще перечитаю, где то я что то не понял Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 21 марта, 2020 Автор Поделиться Опубликовано 21 марта, 2020 Это понятно, я бы больше понял это на примере моего кода. Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 21 марта, 2020 Поделиться Опубликовано 21 марта, 2020 1 минуту назад, Dison сказал: Это понятно, я бы больше понял это на примере моего кода. Найди другое место, где есть постоянный доступ к структуре! Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 21 марта, 2020 Автор Поделиться Опубликовано 21 марта, 2020 Только что, Hack сказал: Найди другое место, где есть постоянный доступ к структуре! Мне нужно знать как делать ВЫЗОВ ФУНКЦИИ. Я тему создал наверно не просто так. Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 21 марта, 2020 Поделиться Опубликовано 21 марта, 2020 Если у тебя в игре адреса появляются только при открытии инвентаря, то может там и список предметов динамически генерируется, и там много зависимых функций, возьми для начала что то простое, как в статье той. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 21 марта, 2020 Автор Поделиться Опубликовано 21 марта, 2020 (изменено) Одно дело тема перечитана 100 раз, другое дело когда кто то может объяснить как это сделать. Например я не понимаю что товарищ в созданной теме описал, и хотел бы по подробнее понять, что и как и откуда берется и куда вписывается, можно ли это сделать с аб скан, может нельзя, я не гуру, иногда чтобы понять что то, нужно больше деталей. Изменено 21 марта, 2020 пользователем Dison Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 21 марта, 2020 Автор Поделиться Опубликовано 21 марта, 2020 В 20.03.2020 в 11:32, Xipho сказал: Ты можешь отреверсить функцию целиком, выяснить ее параметры запуска, в скрипте подготавливать эти параметры (распихать их в нужные места), и затем вызвать CreateThread на стартовый адрес этой функции. ? Хипко ты как всегда, проще написать этот текст когда ты что-то знаешь и рубишь в этом. А для меня твой ответ это ТЕМНЫЙ ЛЕС! ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 21 марта, 2020 Автор Поделиться Опубликовано 21 марта, 2020 Ребят кто поможет? Ссылка на комментарий Поделиться на другие сайты Поделиться
youneuoy Опубликовано 30 марта, 2020 Поделиться Опубликовано 30 марта, 2020 В 21.03.2020 в 19:22, Dison сказал: Ребят кто поможет? тебе уже написали как это сделать - считывай с других мест параметры для твоей функции, после чего вызывай её и передавай в неё эти параметры. В 19.03.2020 в 18:47, Dison сказал: Можно сделать так чтобы инструкция постоянно считывалась, чтоб не приходилось открывать инвентарь для появления адресов предметов. если с вызовом функций сейчас не выходит разобраться, то попробуй сделать как-нибудь попроще. Например почему бы не считывать нужные данные именно при открытии инвентаря? Не так уж и сложно нажать одну лишнюю кнопку. Ну или при загрузке уровня или ещё как-нибудь. Вероятно также этот твой инвентарь не в вакууме существует и рядом с указателем на него может быть что-то ещё, к чему игра часто обращается? Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 30 марта, 2020 Автор Поделиться Опубликовано 30 марта, 2020 15 часов назад, youneuoy сказал: попробуй сделать как-нибудь попроще Я хочу подробно понять как правильно написать скрипт вызов функции на основе моего с аобскан который я кинул в первом посту. Ссылка на комментарий Поделиться на другие сайты Поделиться
youneuoy Опубликовано 31 марта, 2020 Поделиться Опубликовано 31 марта, 2020 12 часов назад, Dison сказал: Я хочу подробно понять как правильно написать скрипт вызов функции на основе моего с аобскан который я кинул в первом посту. тебе уже дали всё, что для этого нужно? Простенький скрипт, что-то вроде этого в итоге будет и у тебя: Спойлер [ENABLE] alloc(newmem,1024) createthread(newmem) newmem: push всякое-разное mov ecx,что-нибудь call нужная функция ret [DISABLE] dealloc(newmem) Вот примерный список действий, которые тебе необходимо выполнить: 1 - перечитать эту тему 2 - перечитать тему "Использование createthread (или война со стеком)" 3 - поискать ещё что-нибудь по этому поводу 4 - поставить бряк в начале твоей функции 5 - разобраться какие в неё передаются аргументы когда она делает то, что тебе нужно 6 - найти откуда бы тебе можно было бы эти параметры взять 7 - выполнить ещё раз первые 3 пункта инструкции 8 - вот тут ты по идее уже сможешь закончить сам? Но мне кажется, что это не лучший вариант. Тебе все равно необходимо будет найти аргументы для функции(если конечно они ей нужны). А если это так, то вероятно ты сможешь получить нужную тебе информацию и без этого вызова? И это будет куда проще и удобнее. Про это на форуме очень много написано. Ты или не видишь ничего, или не хочешь искать сам, или же вообще хочешь, чтобы всё сделали за тебя? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 31 марта, 2020 Поделиться Опубликовано 31 марта, 2020 18 часов назад, Dison сказал: Я хочу подробно понять как правильно написать скрипт вызов функции на основе моего с аобскан который я кинул в первом посту. На основе своего aobscan ты сможешь только найти инструкцию в теле какой-то функции/метода. Далее тебе нужно отреверсить всю эту функцию целиком, чтобы понять, какие параметры в нее передаются, и найти ее стартовый адрес. Ну и дальше тебе уже написали, все это есть на нашем форуме. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 31 марта, 2020 Автор Поделиться Опубликовано 31 марта, 2020 Ясно, буду разбираться. Благодарю за ответы. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения