Тема: image address
Показать сообщение отдельно
  #1  
Старый 24.09.2015, 11:05
Аватар для a.n.d.r.e.w
a.n.d.r.e.w a.n.d.r.e.w вне форума
Прохожий
 
Регистрация: 01.07.2015
Сообщения: 28
Версия Delphi: delphi xe7
Репутация: 10
По умолчанию 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 ...."????
Ответить с цитированием