RockHammer Опубликовано 9 марта, 2015 Автор Поделиться Опубликовано 9 марта, 2015 В 09.03.2015 в 15:53, keng сказал: Цитирую MSDN: "The pointer that specifies a desired starting address for the region of pages that you want to allocate." Это - про второй аргумент VirtualAllocEx. Если надо выделить память в конкретной области - даем адрес этой области. Аргумент не обязательный.А как это конкретизировать? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 9 марта, 2015 Поделиться Опубликовано 9 марта, 2015 Если не знаешь, зачем, то и не надо. Ставь там 0 и все. Параметр не обязательно указывать, как и сказано в MSDN. Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 9 марта, 2015 Автор Поделиться Опубликовано 9 марта, 2015 В 09.03.2015 в 16:06, keng сказал: Если не знаешь, зачем, то и не надо. Ставь там 0 и все. Параметр не обязательно указывать, как и сказано в MSDN.Я поставил NULL )P.s. когда-то я думал, что NULL - это ноль ))))))))) Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 9 марта, 2015 Поделиться Опубликовано 9 марта, 2015 А сейчас как думаешь? (: Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 9 марта, 2015 Автор Поделиться Опубликовано 9 марта, 2015 В 09.03.2015 в 17:33, keng сказал: А сейчас как думаешь? (:Думаю, что это нулик, но по-английски ))) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 9 марта, 2015 Поделиться Опубликовано 9 марта, 2015 В общем.1. Аллокает не тот размер, что ты указал, а размер не меньше указанного до ближайшей границы страницы памяти.2. Декоммит сразу же освобождает память и затирает ее, что ты и наблюдал. Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 10 марта, 2015 Автор Поделиться Опубликовано 10 марта, 2015 В 09.03.2015 в 21:52, Xipho сказал: В общем.1. Аллокает не тот размер, что ты указал, а размер не меньше указанного до ближайшей границы страницы памяти.2. Декоммит сразу же освобождает память и затирает ее, что ты и наблюдал.Яснопонятно. Разобрался с реализацией, осталось вникнуть в смысл послания Keng'a. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 10 марта, 2015 Поделиться Опубликовано 10 марта, 2015 Какого именно? Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 10 марта, 2015 Автор Поделиться Опубликовано 10 марта, 2015 В 10.03.2015 в 13:35, keng сказал: Какого именно?Какого именно Keng'a? Или какого именно послания?1. Кенга - да он вроде один тут)) 2. Послания, которое первым или вторым ответом идет) От тебя) Я пытался вначале вникнуть, но у меня пар из ушей пошел, как в мультфильмах.Нужно еще раз попробовать) Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 10 марта, 2015 Поделиться Опубликовано 10 марта, 2015 Я попробую вечером написать статью на эту тему. Может, так проще будет. С картинками! Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 13 марта, 2015 Поделиться Опубликовано 13 марта, 2015 Тема почищена. Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 15 марта, 2015 Автор Поделиться Опубликовано 15 марта, 2015 (изменено) Попробовал я, значит, этот способ. Возник еще один вопросик:Я так понимаю, что игровой код мы будем изменять и инъектировать не с помощью асмы, а с помощью байтов 0x12, 0x23 вот такого типа.Ok, so let's test this shit. Я взял несколько байтов на пробу и засунул к себе в прогу. Не работает. Потому что:Код наш (0х12, 0х12) был взят во время нашей инъекции из СЕ. Т.е. он адаптирован под конкретный адрес. А в нашей проге он представлен в виде смещения.Вот примерчик://типо тут пример на AA в СЕ... типо перешли на новый адрес newmemmov ebx, 28add ebx, 3push pentagonjmp [notepad.exe + 150A] //тут прыжок обратно в оригинальный кодНу и...//типо тут пример _работы_ нашей софтины. Т.е. что она пишет по адресу после компиляшки... типо перешли на newmemmov ebx, 28add ebx, 3push pentagonjmp 0x12345 //т.е. тут мы прыгаем на оригналку. НО! по смещению. //Т.е. наша выделенная память может отличаться от той, где мы брали её в начале. //И прыгнуть мы можем при повторном использовании куда-нибудь в другое место и игра обрушится.Как решить это? Изменено 15 марта, 2015 пользователем RockHamer Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 15 марта, 2015 Поделиться Опубликовано 15 марта, 2015 Смещение мы считаем ручками, для обоих переходов. А потом только записываем. Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 15 марта, 2015 Автор Поделиться Опубликовано 15 марта, 2015 В 15.03.2015 в 18:11, keng сказал: Смещение мы считаем ручками, для обоих переходов. А потом только записываем.Ok, как его считать ручками?Это еще ладно, тут логика нужна. Но... Как переводить наш математический результат - в байты? (т.е. в 0хEB, 0x12) Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 15 марта, 2015 Поделиться Опубликовано 15 марта, 2015 Гляди: JMP 1 то же самое, но в опкодах: E9 01 E9 - опкод команды, 01 - смещение для прыжка. В 16-ричной системе счисления. Как его считать? Арифметикой. Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 15 марта, 2015 Автор Поделиться Опубликовано 15 марта, 2015 (изменено) В 15.03.2015 в 18:50, keng сказал: Гляди: JMP 1 то же самое, но в опкодах: E9 01 E9 - опкод команды, 01 - смещение для прыжка. В 16-ричной системе счисления. Как его считать? Арифметикой.Ok, тогда почемуnotepad.exe+350A - E9 F1CAFEFF - jmp FFF60000Просто не понятно как именно переводить)Т.е. как бы переводить в HEX... и потом ещё раз переводить в HEX?))Это как: ничего не написал в коде нажал ctrl + s, прошло 10 сек ещё раз нажал ctrl + s ))0 Чтоб уж наверняка) Изменено 15 марта, 2015 пользователем RockHamer Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 15 марта, 2015 Поделиться Опубликовано 15 марта, 2015 А теперь сходи и почитай про представление отрицательных чисел в 16-ричной системе счиления. (; Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 марта, 2015 Поделиться Опубликовано 15 марта, 2015 В 15.03.2015 в 18:58, RockHamer сказал: Просто не понятно как именно переводить)Я делаю так, если мне нужно узнать байты, в скрипте (временно, лучше если инструкция только на запись и разовая) прописываю инструкцию которую мне нужно, включаю скрипт, перехожу в отладчик, перехожу на адрес прыжка инъекции и там смотрю байты. Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 16 марта, 2015 Автор Поделиться Опубликовано 16 марта, 2015 В 15.03.2015 в 20:22, garik66 сказал: Я делаю так, если мне нужно узнать байты, в скрипте (временно, лучше если инструкция только на запись и разовая) прописываю инструкцию которую мне нужно, включаю скрипт, перехожу в отладчик, перехожу на адрес прыжка инъекции и там смотрю байты.В том-то и дело! Такой способ не работает! Нужно математически это всё высчитывать. Вычитать один адрес из другого и переводить это всё в HEX... В 15.03.2015 в 20:05, keng сказал: А теперь сходи и почитай про представление отрицательных чисел в 16-ричной системе счиления. (;Кстати, какой адрес из какого вычитать?И... Можно ссылку на эту тему? А то я ни разу об этом не слышал. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 16 марта, 2015 Поделиться Опубликовано 16 марта, 2015 В 16.03.2015 в 12:00, RockHamer сказал: И... Можно ссылку на эту тему? А то я ни разу об этом не слышал.Можно, разумеется. [ссылка] Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 16 марта, 2015 Автор Поделиться Опубликовано 16 марта, 2015 В 16.03.2015 в 12:06, Xipho сказал: Можно, разумеется. [ссылка] Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 18 марта, 2015 Поделиться Опубликовано 18 марта, 2015 Ты статью-то мою прочитал? Там даже готовый пример есть. Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 20 марта, 2015 Автор Поделиться Опубликовано 20 марта, 2015 (изменено) В 18.03.2015 в 13:37, keng сказал: Ты статью-то мою прочитал? Там даже готовый пример есть. Статья? А она уже вышла?Просто смотрел в твоём блоге (kekekeng) и там такой темы нет. Изменено 20 марта, 2015 пользователем RockHamer Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 21 марта, 2015 Автор Поделиться Опубликовано 21 марта, 2015 Ан, нет. Увидел) Спасибо, поучительно) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения