Посл.ответ |
Сообщение |
Ранг: 5.9 (гость) Активность: 0.02↘0 Статус: Участник
|
Создано: 28 августа 2012 15:19 · Личное сообщение · #1
Скажите как это можно сделать? Ничего в примерах не нашёл. Думаю что примерно так: Читаем 28h РЕ заголовка получаем смещение точки входа относительно ImageBase Из РЕ заголовка читаем адрес ImageBase (34h) Сложив эти две величины получаем Точку входа в загруженном файла. Потом нужно по очереди просматривать все секции. И проверять попадает ли она в адрес точки входа. Вот тут то я, кажется, уже сильно усложняю....
| Сообщение посчитали полезным: |
|
 Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 28 августа 2012 15:27 · Личное сообщение · #2
ну смотря, что нужно сделать  можно отмапить файл так, что просто потом перейти на смещение +address EP, или как у вас, перевести виртуальный адрес в файловое смещение и imagebase здесь не обязательно использовать. Rva и Va - чем отличаются?
----- [nice coder and reverser] | Сообщение посчитали полезным: |
Ранг: 5.9 (гость) Активность: 0.02↘0 Статус: Участник
|
Создано: 28 августа 2012 15:30 · Поправил: ekkl · Личное сообщение · #3
Не, мне нужно именно файловое смещение. Только что в винхексе просчитал "вручную". получилось. Только там секция кода шла первой.  ПС. Точка входа мне тоже нужна. Rva Насколько понимаю адрес относительно виртуального адреса загрузки va просто смещение от начала файла???
| Сообщение посчитали полезным: |
Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 28 августа 2012 15:36 · Поправил: Veliant · Личное сообщение · #4
Читаешь адрес EP из заголовка. Дальше перечисляешь секции, пока не найдешь ту которой принадлежит адрес. Вычитаешь из своего адреса виртуальный адрес начала секции и прибавляешь физический. Собственно это основной метод
| Сообщение посчитали полезным: |
 Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 28 августа 2012 15:37 · Личное сообщение · #5
ekkl виртуальный адрес или смещение в памяти. но я лучше бы отпамил (CreateFileMapping) файл с флагом SEC_IMAGE, так будет проще. а ещё лучше вручную это сделать, тогда переводы не будут нужны.
----- [nice coder and reverser] | Сообщение посчитали полезным: |
Ранг: 617.3 (!), 677thx Активность: 0.54↘0 Статус: Участник
|
Создано: 28 августа 2012 15:41 · Поправил: Vovan666 · Личное сообщение · #6
Что-то типа такого
| Сообщение посчитали полезным: ekkl |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 28 августа 2012 16:50 · Поправил: Maximus · Личное сообщение · #7
1. Загружаем файл (надо говорить как?), можно первые байт 1000 2. Задаем структуры:
3. Вычисляем в какой секции находится наша точка:
4. Вычисляем смещение:
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 5.9 (гость) Активность: 0.02↘0 Статус: Участник
|
Создано: 28 августа 2012 19:17 · Личное сообщение · #8
Всем спасибо. Потихоньку разбрираюсь. Но я кодирую на пуребейсике. Придется перевести. Vovan666, тихо спрошу
А что такое d? На асме давно не кодил и подобная запись не совсем знакома...
| Сообщение посчитали полезным: |
Ранг: 617.3 (!), 677thx Активность: 0.54↘0 Статус: Участник
|
Создано: 28 августа 2012 19:19 · Поправил: Vovan666 · Личное сообщение · #9
ekkl пишет: На асме давно не кодил и подобная запись не совсем знакома...
просто код брал из какого-то своего проекта, код практически не причесывал
| Сообщение посчитали полезным: |