Код (Text): char* hNewModule = (char*)VirtualAllocEx(hProc,hModule,size,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE); if(hNewModule==NULL) ErrorExit(); if (!WriteProcessMemory(hProc,hNewModule,hModule,size,&ByteOfWriten)) ErrorExit(); Как мне в данном примере избавится от VirtualAllocEx базу я смещаю -> "0x13140000" #pragma comment(linker,"/BASE:0x13140000") В тупую не работает =( WriteProcessMemory(hProc,0x13140000,hModule,size,&ByteOfWriten)
BadLogin Сервис NtWriteVirtualMemory пишет в память по указанному смещению в сегменте с нулевой базой. Вообще кодер который использует винапи ничего не должен знать про существование сегментации и пр. Иначе это введёт в заблуждение, ибо винапи предпологают мышление соответствующие.
Как это нет, в чёмже тогда проблема, или может вы не видите её.. могу предположить что ожидается знаменитое окно с отправкой отчёта в мс. - такого не будет. TEB.LastStatusValue там код ошибки. NtProtectVirtualMemory чтобы атрибуты страниц изменить, разрешив запись. Та апи её юзает, если возвратит ошибку то записать не получится. Не известно что за циферки, база базой, но модуль может быть где угодно в памяти. Переменные не известны. Может хэндл процесса не валидный, или число записываемых байт, или адрес..
Clerk Да какие сегменты, он видать просто блок страниц имел в виду Че ж тебя все так на аппаратуру то тянет, когда ей и не пахнет
BadLogin а ты напиши что тебе надо в конечном итоге. кофейной гущей для гадания нас тут не спонсируют)