Garik66 Опубликовано 21 февраля, 2016 Поделиться Опубликовано 21 февраля, 2016 1 минуту назад, Baracuda сказал: ты Garik66 в десятку попал, точно ID не правильный взял другой и деньги заработали там этих ID куча они Ну и отлично , а то я уже подумал, что ТОРМОЖУ и чего-то не понимаю. Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 21 февраля, 2016 Автор Поделиться Опубликовано 21 февраля, 2016 (изменено) что бы у меня не возникало больше вопросов, ты подскажи пожалуйста, как найти если у тебя только один ID. это мене на будущее Изменено 21 февраля, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 21 февраля, 2016 Поделиться Опубликовано 21 февраля, 2016 Только что, Baracuda сказал: как найти если у тебя только один ID. Что найти? Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 21 февраля, 2016 Автор Поделиться Опубликовано 21 февраля, 2016 (изменено) вот ты мене писал ID один что-ли нашёл, т.е. ты не отделил денег от материала? Об этом нужно было говорить сразу. если в игре получилось найти только один ID на вещь, как с одним сделать указатели на другие вещи. Изменено 21 февраля, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 21 февраля, 2016 Поделиться Опубликовано 21 февраля, 2016 (изменено) 21 минуты назад, Baracuda сказал: если в игре получилось найти только один ID на вещь, как с одним сделать указатели на другие вещи. Как я поступаю в таких случаях: 1. Вариант 1. Отделяю все интересующие меня характеристики от других ненужных мне. Т.е. исследую структуру, в который например два адреса нужных характеристик (Группа 1) и два адреса не нужных характеристик (Группа 2). По фиолетовым значениям нахожу первый ID. 2. Делаю структуру где 1 характеристика, из нужных ( 1 группа) и во второй группе другие характеристики. Опять же по фиолетовым значениям получаю второй ID. 2. Вариант Беру структуру загоняю в неё адреса 3-х нужных характеристик и раскрываю поинтеры, иногда находятся смещения, где текстом отделяются адреса (ну например [rdx+04]+08 - money для денег и matireal для материала.) 3. Вариант За ID выбираю значение в регистре (без исследования структуры), особенно если инструкция имеет например вид mov [eax+edx*4],ebx, то чаще всего за ID принимаю edx. 4. Вариант Если удалось найти один ID (допустим для материала), но мы знаем, что другая характеристика (например деньги) лежит тоже в этой структуре. Тогда рассчитываю смещение от 1 характеристики до второй и пишу скрипт. пример здесь: Кстати проверь его. ЗЫ: 5. Вариант Различное сочетание перечисленных ранее вариантов. Изменено 21 февраля, 2016 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 21 февраля, 2016 Автор Поделиться Опубликовано 21 февраля, 2016 да рано я радовался, там только 4 смешения которые не меняются после перезагрузки, они одинаковые и на материал, и на деньги. Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 21 февраля, 2016 Автор Поделиться Опубликовано 21 февраля, 2016 сейчас попробую твой вариант Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 21 февраля, 2016 Поделиться Опубликовано 21 февраля, 2016 Дополнение к предыдущему сообщению. 6. Вариант. Чаще всего применяю, когда инструкция имеет вид как у тебя. mov eax,[r8] Запоминаем какой адрес соответствует какой характеристике, находим второй указатель, т.е. указатель на указатель (вспомни Шаг № 8 Туториала), либо просто поднимаемся вверх по коду игры и находим инструкцию, где загружается значение r8. И уже из этой инструкции строим структуру, чаще всего именно в этой структуре легко находится фильтр. Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 21 февраля, 2016 Автор Поделиться Опубликовано 21 февраля, 2016 (изменено) да это для меня сложно, пошёл верх по коду по не чего, а как понять грузится инструкция r8 куда ни будь или нет. Изменено 21 февраля, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 21 февраля, 2016 Поделиться Опубликовано 21 февраля, 2016 2 минуты назад, Baracuda сказал: да это для меня сложно, пошёл верх по коду по не чего, а как понять грузится инструкция r8 куда ни будь или нет. Если в реверсе опыта мало, то как я и писал выше найди второй уровень указателя, указатель на указатель. Если не помнишь как это сделать, пройди ещё раз 8 ШАГ Туториала СЕ. - Брейкпоинт на чтение на указатель на адрес и выйдешь на нужную инструкцию. Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 22 февраля, 2016 Автор Поделиться Опубликовано 22 февраля, 2016 (изменено) garik66 не подскажешь пожалуйста что за фигня,ИГРА XCOM 2 я вышел на адрес инженеров, что бы их добавить, но добавляешь а они не добавляются, но зато значения количество инженеров можно заморозить, это как так. ЭТО Я ТАК ПОНЯЛ, ЗА ДОБАВЛЕНИЯ ОТВЕЧАЕТ ОДИН АДРЕС, А ЗА ЗАМОРОЗКУ ДРУГОЙ. у меня как то получилось добавить, и все больше не в какую не добавляется. Изменено 22 февраля, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 февраля, 2016 Поделиться Опубликовано 22 февраля, 2016 1 минуту назад, Baracuda сказал: garik66 не подскажи пожалуйста что за фигня, я вышел на адрес инженеров, что бы их добавить, но добавляешь а они не добавляются, но зато их можно заморозить, это как так. На так сформулированный вопрос, смогу только ответить - "Ты где-то ошибся". Если хочешь нормальный ответ, то и задавай нормальный вопрос, т.е. больше информации. Я же не телепат. Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 22 февраля, 2016 Автор Поделиться Опубликовано 22 февраля, 2016 (изменено) ВОТ СКРИПТ Скрытый текст [ENABLE] aobscanmodule(INJECT,XCom2.exe,89 4B 08 3B CA 7E 2D 41 B8 10 00 00 00 E8 E1) alloc(newmem,$1000,"XCom2.exe"+B832FD) label(code) label(return) newmem: code: mov [rbx+08],ecx cmp ecx,edx jmp return INJECT: jmp code return: registersymbol(INJECT) [DISABLE] INJECT: db 89 4B 08 3B CA unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "XCom2.exe"+B832FD "XCom2.exe"+B832DD: 4D 03 C0 - add r8,r8 "XCom2.exe"+B832E0: 42 8B 14 C0 - mov edx,[rax+r8*8] "XCom2.exe"+B832E4: 8D 41 FF - lea eax,[rcx-01] "XCom2.exe"+B832E7: 89 53 30 - mov [rbx+30],edx "XCom2.exe"+B832EA: 89 43 34 - mov [rbx+34],eax "XCom2.exe"+B832ED: EB 54 - jmp XCom2.exe+B83343 "XCom2.exe"+B832EF: 8B 53 0C - mov edx,[rbx+0C] "XCom2.exe"+B832F2: 48 89 74 24 30 - mov [rsp+30],rsi "XCom2.exe"+B832F7: 8B 73 08 - mov esi,[rbx+08] "XCom2.exe"+B832FA: 8D 4E 01 - lea ecx,[rsi+01] // ---------- INJECTING HERE ---------- "XCom2.exe"+B832FD: 89 4B 08 - mov [rbx+08],ecx "XCom2.exe"+B83300: 3B CA - cmp ecx,edx // ---------- DONE INJECTING ---------- "XCom2.exe"+B83302: 7E 2D - jle XCom2.exe+B83331 "XCom2.exe"+B83304: 41 B8 10 00 00 00 - mov r8d,00000010 "XCom2.exe"+B8330A: E8 E1 5A 6C FF - call XCom2.exe+248DF0 "XCom2.exe"+B8330F: 89 43 0C - mov [rbx+0C],eax "XCom2.exe"+B83312: 48 8B 0B - mov rcx,[rbx] "XCom2.exe"+B83315: 48 85 C9 - test rcx,rcx "XCom2.exe"+B83318: 75 04 - jne XCom2.exe+B8331E "XCom2.exe"+B8331A: 85 C0 - test eax,eax "XCom2.exe"+B8331C: 74 13 - je XCom2.exe+B83331 "XCom2.exe"+B8331E: C1 E0 04 - shl eax,04 } Изменено 22 февраля, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 февраля, 2016 Поделиться Опубликовано 22 февраля, 2016 Это по твоему подробная информация? Почему постоянно приходиться потом задавать наводящие вопросы? 1. адрес инженеров - что такое инженеры в игре? (у меня игры нет, не играл и т.д.) 2. В [rbx+08] хранится количество этих инженеров? 3. Инструкция mov [rbx+08],ecx - разовая? или постоянно работающая? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 22 февраля, 2016 Поделиться Опубликовано 22 февраля, 2016 [offtop]Garik66 - пора тебе телепатией заняться. [/offtop] 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 февраля, 2016 Поделиться Опубликовано 22 февраля, 2016 1 минуту назад, Dison сказал: [offtop]Garik66 - пора тебе телепатией заняться. [/offtop] Тттттточно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 22 февраля, 2016 Автор Поделиться Опубликовано 22 февраля, 2016 (изменено) инженеры это как дополнительный ресурс в игре, [rbx+08] хранится адрес с числом инженеров, его можно изменить, но не всегда можно изменить количество инженеров, но зато можно заморозить, например если у тебя 5 инженеров можно их заморозить, если у тебя 0 инженеров, то это число 482 добавишь одного инженера число стало 483, [rbx+08] инструкция постоянно работающая. АДРЕС 4 БАЙТА Изменено 22 февраля, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 февраля, 2016 Поделиться Опубликовано 22 февраля, 2016 (изменено) Ну а что в таком виде: Скрытый текст [ENABLE] aobscanmodule(INJECT,XCom2.exe,89 4B 08 3B CA 7E 2D 41 B8 10 00 00 00 E8 E1) alloc(newmem,$1000,"XCom2.exe"+B832FD) label(code) label(return) newmem: code: mov [rbx+08],ecx mov [rbx+08],#100 // сделаем 100 инженеров, сразу же замороженных. cmp ecx,edx jmp return INJECT: jmp code return: registersymbol(INJECT) [DISABLE] INJECT: db 89 4B 08 3B CA unregistersymbol(INJECT) dealloc(newmem) скрипт не работает? Проверь - стало ли 100 инженеров? И их должно всегда оставаться 100. Изменено 22 февраля, 2016 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 февраля, 2016 Поделиться Опубликовано 22 февраля, 2016 Дополнение к сообщению: 4. Нужен ли фильтр? Т.е. Инструкция mov [rbx+08],ecx работает только с адресом инженеров или и с другими адресами тоже. 4.1. Если с другими тоже - то предоставь фильтр (по какому смещению и чему должен быть равен для инженеров.) Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 22 февраля, 2016 Автор Поделиться Опубликовано 22 февраля, 2016 (изменено) Garik66 ты меня запутал. я у тебя просто спросил как так работает адрес, и все ты с таким сталкивался или нет, если знаешь то подскажи. ВОТ АДРЕС НА РЕСУРСЫ ИНЖЕНЕРОВ, 7FF6D20259AC ВОТ ЧИСЛО КОТОРОЕ ПОКАЗЫВАЕТ ЭТОТ АДРЕС 508. А В ИГРЕ КОЛИЧЕСТВО ИНЖЕНЕРОВ ПОКАЗЫВАЕТ 23 [rbx+08] в этой инструкции есть ещё адреса левые ВОТ ID ИНЖЕНЕРОВ [rbx+24],00007FF6 [rbx+5C],00017F8F и вот cmp rdx,245 Изменено 22 февраля, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 февраля, 2016 Поделиться Опубликовано 22 февраля, 2016 1. Ну тогда попробуй заморозка количества инженеров: Скрытый текст [ENABLE] aobscanmodule(INJECT,XCom2.exe,89 4B 08 3B CA 7E 2D 41 B8 10 00 00 00 E8 E1) alloc(newmem,$1000,"XCom2.exe"+B832FD) label(code) label(return) newmem: cmp [rbx+24],00007FF6 jne code mov ecx,[rbx+08] code: mov [rbx+08],ecx cmp ecx,edx jmp return INJECT: jmp newmem return: registersymbol(INJECT) [DISABLE] INJECT: db 89 4B 08 3B CA unregistersymbol(INJECT) dealloc(newmem) После активации скрипта, по идее количество инженеров будет постоянным.Проверь - отпишись. 2. 14 минуты назад, Baracuda сказал: ВОТ АДРЕС НА РЕСУРСЫ ИНЖЕНЕРОВ, 7FF6D20259AC ВОТ ЧИСЛО КОТОРОЕ ПОКАЗЫВАЕТ ЭТОТ АДРЕС 508. А В ИГРЕ КОЛИЧЕСТВО ИНЖЕНЕРОВ ПОКАЗЫВАЕТ 23 Закономерности здесь не увидел. Не понял как это работает. Поставь брейкпоинт на запись на адрес и сделай скриншот, при срабатывании инструкции - хочу посмотреть какие значения в регистрах (особенно ecx и edx). Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 22 февраля, 2016 Автор Поделиться Опубликовано 22 февраля, 2016 скрипт не запускается https://dropmefiles.com/LdStc Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 22 февраля, 2016 Автор Поделиться Опубликовано 22 февраля, 2016 (изменено) если ты имел виду это то не работает Скрытый текст [ENABLE] aobscanmodule(INJECT,XCom2.exe,8B 53 08 45 33 C0 48 8B CB 2B 53 34 E8 F3) alloc(newmem,$1000,"XCom2.exe"+B82EEC) label(code) label(return) newmem: cmp [rbx+2C],000002C0 jne code xor [rbx],r8d mov [rbx+08],#99 xor [rbx],r8d code: mov edx,[rbx+08] xor r8d,r8d jmp return INJECT: jmp code nop return: registersymbol(INJECT) [DISABLE] INJECT: db 8B 53 08 45 33 C0 unregistersymbol(INJECT) dealloc(newmem) Изменено 22 февраля, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 22 февраля, 2016 Автор Поделиться Опубликовано 22 февраля, 2016 (изменено) адрес обращается к нижней строчки вот к этой cmp ecx,edx Изменено 22 февраля, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 февраля, 2016 Поделиться Опубликовано 22 февраля, 2016 (изменено) 1 час назад, Baracuda сказал: скрипт не запускается Я делал скрипт на основе того скрипта, который ты мне дал. Поэтому думаю ты где-то опять ошибся - либо включен ещё скрипт с этой же инструкцией, либо был вылет и адрес поменян и аобскан его не находит, либо ещё чего-то. 59 минут назад, Baracuda сказал: если ты имел виду это то не работает Я это не имел ввиду, так как про шифрование слышу впервые от тебя. До этого не было информации про шифрование. И кстати на будущее xor r8d,r8d это не шифрование, а просто обнуление регистра. Судя по скриншоту думаю, что в EDX (RDX) лежит максимально возможное количество инженеров, а в ECX(RCX) лежит текущее количество. Скрытый текст [ENABLE] aobscanmodule(INJECT,XCom2.exe,89 4B 08 3B CA 7E 2D 41 B8 10 00 00 00 E8 E1) alloc(newmem,$1000,"XCom2.exe"+B832FD) label(code) label(return) newmem: cmp dword ptr [rbx+24],00007FF6 jne code mov ecx,edx code: mov [rbx+08],ecx cmp ecx,edx jmp return INJECT: jmp newmem return: registersymbol(INJECT) [DISABLE] INJECT: db 89 4B 08 3B CA unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "XCom2.exe"+B832FD "XCom2.exe"+B832DD: 4D 03 C0 - add r8,r8 "XCom2.exe"+B832E0: 42 8B 14 C0 - mov edx,[rax+r8*8] "XCom2.exe"+B832E4: 8D 41 FF - lea eax,[rcx-01] "XCom2.exe"+B832E7: 89 53 30 - mov [rbx+30],edx "XCom2.exe"+B832EA: 89 43 34 - mov [rbx+34],eax "XCom2.exe"+B832ED: EB 54 - jmp XCom2.exe+B83343 "XCom2.exe"+B832EF: 8B 53 0C - mov edx,[rbx+0C] "XCom2.exe"+B832F2: 48 89 74 24 30 - mov [rsp+30],rsi "XCom2.exe"+B832F7: 8B 73 08 - mov esi,[rbx+08] "XCom2.exe"+B832FA: 8D 4E 01 - lea ecx,[rsi+01] // ---------- INJECTING HERE ---------- "XCom2.exe"+B832FD: 89 4B 08 - mov [rbx+08],ecx "XCom2.exe"+B83300: 3B CA - cmp ecx,edx // ---------- DONE INJECTING ---------- "XCom2.exe"+B83302: 7E 2D - jle XCom2.exe+B83331 "XCom2.exe"+B83304: 41 B8 10 00 00 00 - mov r8d,00000010 "XCom2.exe"+B8330A: E8 E1 5A 6C FF - call XCom2.exe+248DF0 "XCom2.exe"+B8330F: 89 43 0C - mov [rbx+0C],eax "XCom2.exe"+B83312: 48 8B 0B - mov rcx,[rbx] "XCom2.exe"+B83315: 48 85 C9 - test rcx,rcx "XCom2.exe"+B83318: 75 04 - jne XCom2.exe+B8331E "XCom2.exe"+B8331A: 85 C0 - test eax,eax "XCom2.exe"+B8331C: 74 13 - je XCom2.exe+B83331 "XCom2.exe"+B8331E: C1 E0 04 - shl eax,04 } Попробуй этот скрипт. Перед проверкой закрой игру и СЕ и заново загрузись. Проверь свой фильтр [rbx+24],00007FF6, если изменился, то найди другой. Изменено 22 февраля, 2016 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения