ShadowStormOne Опубликовано 4 января, 2023 Поделиться Опубликовано 4 января, 2023 Подскажите пожалуйста, столкнулся с проблемой что объявил 2 label'a один нормально отрабатывает второй просто исчезает, при этом нечего не крашит и не падает. Ниже скрипт Спойлер [ENABLE] aobscan(BASEADDR,F3 0F 11 AF 30 02 00 00 48) // should be unique alloc(newmem,$1000,BASEADDR) label(code) label(return) label(base_addr) label(base_addres) newmem: push rbx mov rbx,[rdi+100] mov [base_addres],rdi mov [base_addr],rbx pop rbx code: movss [rdi+00000230],xmm5 jmp return base_addres: db 00 base_addr: db 00 BASEADDR: jmp newmem nop 3 return: registersymbol(BASEADDR) registersymbol(base_addr) registersymbol(base_addres) [DISABLE] BASEADDR: db F3 0F 11 AF 30 02 00 00 unregistersymbol(BASEADDR) unregistersymbol(base_addr) unregistersymbol(base_addres) dealloc(newmem) Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 4 января, 2023 Поделиться Опубликовано 4 января, 2023 base_addres: db 00 base_addr: db 00 Попробуй поменять на base_addres: dq 00 base_addr: dq 00 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 4 января, 2023 Поделиться Опубликовано 4 января, 2023 1 час назад, ShadowStormOne сказал: столкнулся с проблемой адреса 8 байт? Попробуй так Спойлер [ENABLE] aobscan(BASEADDR,F3 0F 11 AF 30 02 00 00 48) // should be unique alloc(newmem,$1000,BASEADDR) label(code) label(return) label(base_addr) label(base_addres) newmem: push rbx mov rbx,[rdi+100] mov qword ptr [base_addres],rdi mov qword ptr [base_addr],rbx pop rbx code: movss [rdi+00000230],xmm5 jmp return base_addres: dq (double)0 base_addr: dq (double)0 BASEADDR: jmp newmem nop 3 return: registersymbol(BASEADDR) registersymbol(base_addr) registersymbol(base_addres) [DISABLE] BASEADDR: db F3 0F 11 AF 30 02 00 00 unregistersymbol(BASEADDR) unregistersymbol(base_addr) unregistersymbol(base_addres) dealloc(newmem) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ShadowStormOne Опубликовано 4 января, 2023 Автор Поделиться Опубликовано 4 января, 2023 Спасибо, с dq работает. Есть ссылка на документацию по db dq и тд? Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 4 января, 2023 Поделиться Опубликовано 4 января, 2023 30 минут назад, ShadowStormOne сказал: Спасибо, с dq работает. Есть ссылка на документацию по db dq и тд? db - 1 байт dw - 2 байта - 1 слово dd - 4 байта - 2 слова dq - 8 байт - 4 слова dt - 10 байт Вы пытаетесь регистр 64 битной игры запихнуть в 1 байт. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 4 января, 2023 Поделиться Опубликовано 4 января, 2023 2 часа назад, ShadowStormOne сказал: второй просто исчезает у тебя исчезает не второй, а именно первый. если бы ты воспользовался пошаговой отладкой (или хотя бы посмотрел в регионе памяти как это все выглядит)то ты понял бы. допустим rdi = 11 11 11 11 11 11 11 11, а rbx = 22 22 22 22 22 22 22 22. тогда, после срабатывания первой инструкции mov [base_addres],rdi у тебя в регионе памяти запишется правильный адрес 11 11 11 11 11 11 11 11, но после, срабатывания второй инструкции mov [base_addr],rbx у тебя в регионе памяти будет так 11 22 22 22 22 22 22 22 22 т.е. второй адрес будет правильным, а первый ты повредишь. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
ShadowStormOne Опубликовано 5 января, 2023 Автор Поделиться Опубликовано 5 января, 2023 11 часов назад, Garik66 сказал: посмотрел в регионе памяти Посмотрел но не внимательно, спасибо за разъяснение Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения