Показать сообщение отдельно
Старый 27.03.2012, 15:17   #10
Платон Александрович
Нуждающийся
 
Аватар для Платон Александрович
 
Регистрация: 05.10.2011
Адрес: Россия, Южно-Сахалинск
Сообщений: 66
Написано 42 полезных сообщений
(для 83 пользователей)
Ответ: KirpArc - очередной упаковщик

Сообщение от Жека Посмотреть сообщение
Не успеешь стырить, т.к. сразу после загрузки ресурсов следует их удаление.
(разве что спец. прогой, которая будет отслеживать изменения в папке, если такая есть).
Тормозишь процесс каким-нибудь отладчиком (например 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, сразу же заменяешь обратно.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Платон Александрович за это полезное сообщение:
johnk (27.03.2012), Жека (27.03.2012)