image address
Привет форум!
Такой вот вопрос. Хочу с помощью отдельной программы зашифровать кусок exe файла содержащий некоторую функцию, а при выполнении этого exe он будет сам свой кусок расшифровывать. Вобщем задача тривиальная, определить адреса этого блока в момент шифрации отдельной программой и адрес такого же блока при дешифрации самого себя.
Делаю так нахожу всякими череззаднийпроходными способами адрес в памяти самого процесса получаю Addr1
потом загружаю в мемористрим этот же exe нахожу там этот же кусок по адресу Addr2
дальше определяю смещения
Ofs1=Addr1-Hinstance
Ofs2=Addr2-MS.Memoryв итоге Ofs1<> Ofs2
Если посмотреть в VMMap то адрес имидж блока начинается с header который 4КБ а адрес .tеxt с адреса $00401000 но разница меньше 4КБ
Как понять что это за дельта где ее определить получается Ofs1-Ofs2= 3072 байт?
Хммм.. перефразирую вопрос.
есть тестовое приложение, в нем есть к примеру функция "Test", я могу получить ее адрес:
Addr1:=Addr(Test);
если по этому адресу просто вычитать данные получим к примеру "C3 8D 40 00 55 8B EC B8 ...."
затем я запускаю другое приложение в котором, загружаю в мемористрим exe файл моего тестового приложения
и вот вопрос, как мне определить позицию меморитсрима по которой я прочитаю тот же блок "C3 8D 40 00 55 8B EC B8 ...."????
|