Сообщение от Жека
Не успеешь стырить, т.к. сразу после загрузки ресурсов следует их удаление.
(разве что спец. прогой, которая будет отслеживать изменения в папке, если такая есть).
|
Тормозишь процесс каким-нибудь отладчиком (например OllyDBG) на CloseHandle и спокойно все копируешь.
Чтобы можно было читать\писать ресурсы напрямую, без темп-файлов, надо перехватить функции CreateFile ReadFile\WriteFile CloseHandle из Kernel32, т.к. очевидно что внутри всяких LoadMesh и подобных используется I\O сишного рантайма (msvcrt) - обертка над вышеуказанными winapi функциями.
Берешь хендл подгруженной в процесс kernel32
Kernel32 = GetModuleHandle ( "kernel32.dll" )
получаешь адрес нужной функции
CreateFileA = GetProcAddress ( Kernel32, "CreateFileA" )
и делаешь редирект на свою аналогичную функцию, например техникой сплайсинга - заменяешь в начале CreateFileA 6 байт
т.е. сохраняешь старые 6 байт (чтобы по окончании восстановить) и пишешь две инструкции
$63 - push
адрес_твоей_функции
$C3 - ret
Когда процесс вызовет эту функцию, благодаря записаному коду, он перепрыгнет на твою. Например в CreateFile по переданому имени определяешь файл в архиве, и если его нет - восстанавливаешь обратно оригинальные 6 байт и вызываешь родную CreateFile, сразу же заменяешь обратно.