Посл.ответ |
Сообщение |
Ранг: 47.4 (посетитель) Активность: 0.03↘0 Статус: Участник
|
Создано: 30 ноября 2006 13:27 · Личное сообщение · #1
Вообщем есть адрес в памяти к примеру 0040BC18 Как узнать его порядковый номер в EXE файле? скажите если не трудно
P.S. Учусь писать патчи...
| Сообщение посчитали полезным: |
|
Ранг: 19.0 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 30 ноября 2006 13:47 · Личное сообщение · #2
Есть проги LordPE или PE Tools, в них есть FLC (File Location Calculator) который и делает переводы.
| Сообщение посчитали полезным: |
Ранг: 47.4 (посетитель) Активность: 0.03↘0 Статус: Участник
|
Создано: 30 ноября 2006 13:51 · Личное сообщение · #3
Да мне не нужно что бы это делали программы так как по моему мнению крякер должен знать всё и уметь применить. А если (!К ПРИМЕРУ!) в будущем мне захочется написать подобную программу и я не буду знать как это делается? Что так и писать: зайди туда перевиди вот это и вставь сюда?
| Сообщение посчитали полезным: |
Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 30 ноября 2006 14:21 · Личное сообщение · #4
SeQuick, из кода это делается примерно так - читаешь в PE заголовки секций и смотришь в какую секцию этот адрес попадает. Потом смотришь смещение этой секции в файле и счетаешь разницу.
| Сообщение посчитали полезным: |
Ранг: 47.4 (посетитель) Активность: 0.03↘0 Статус: Участник
|
Создано: 30 ноября 2006 14:29 · Личное сообщение · #5
Ну это мне кажется лишний геморрой... Ведь если можно определить по адресу номер значить есть формула а если если есть формула значит проще посчитать чем ехать в Москву через Париж. Может я ошибаюсь
| Сообщение посчитали полезным: |
Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 30 ноября 2006 23:40 · Личное сообщение · #6
фомула есть) обычный поиск по RvaToOffset
но там много ньюансов, но в большинстве случае будет работать....
----- [nice coder and reverser] | Сообщение посчитали полезным: |
Ранг: 310.8 (мудрец), 29thx Активность: 0.43↘0 Статус: Участник
|
Создано: 01 декабря 2006 00:10 · Личное сообщение · #7
SeQuick пишет:
Ведь если можно определить по адресу номер значить есть формула
Есть не формула, а подпрограмма - это разные вещи. И я больше чем уверен, что она не в 100% правильный ответ дает. Поэтому два пути - использовать готовые инструменты/подпрограммы, либо написать свою. Второй путь ведет в никуда.
| Сообщение посчитали полезным: |
Ранг: 120.6 (ветеран) Активность: 0.09↘0 Статус: Участник rootkit developer
|
Создано: 01 декабря 2006 00:47 · Личное сообщение · #8
Это все примерно выглядит так (кусок кода)
for (num = 0; num < n_head->FileHeader.NumberOfSections; num++)
{
if (IN_REGION(entry->offset, section[num].VirtualAddress, section[num].SizeOfRawData))
{
offset = entry->offset - section[num].VirtualAddress + section[num].PointerToRawData;
break;
}
}
----- Скажем дружно - нафиг нужно. | Сообщение посчитали полезным: |
Ранг: 47.4 (посетитель) Активность: 0.03↘0 Статус: Участник
|
Создано: 01 декабря 2006 09:59 · Личное сообщение · #9
А можно в цифрах? На примере какого-нить конкретного адреса?
| Сообщение посчитали полезным: |
Ранг: 162.2 (ветеран) Активность: 0.09↘0 Статус: Участник
|
Создано: 01 декабря 2006 10:13 · Личное сообщение · #10
SeQuick
Для разных файлов будут разные цифры. Что непонятно в посте Ms-Rem?
| Сообщение посчитали полезным: |
Ранг: 27.7 (посетитель), 2thx Активность: 0.01=0.01 Статус: Участник
|
Создано: 01 декабря 2006 11:33 · Личное сообщение · #11
SeQuick пишет:
Да мне не нужно что бы это делали программы так как по моему мнению крякер должен знать всё и уметь применить.
Конкретно в данном случае, чтобы решить задачу, нужно знать формат PE файла. Тогда ты сразу поймешь, что универсальной формулы (типа "разделить на три и прибавить два") здесь НЕТ. Нужно парсить exe (PE), находить описатель секции, которая отвечает за нужный тебе диапазон адресов и, относительно ее начала (в файле и в виртуальных адресах) уже есть простая формула.
Представление о том какая информация содержится в описателе секции можно получить нажав в HIEW: F8, F6
| Сообщение посчитали полезным: |
Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 01 декабря 2006 11:34 · Поправил: s0larian · Личное сообщение · #12
....кста, просто посмотреть можно и в hiew - смотрим disasm - слева адреса. Нажимает F3 (edit) - слева смещения.
| Сообщение посчитали полезным: |
Ранг: 47.4 (посетитель) Активность: 0.03↘0 Статус: Участник
|
Создано: 01 декабря 2006 15:07 · Личное сообщение · #13
Проводил эксперименты дабы вычислить хотя бы как это происходит на деле и вывел небольшую закономерность. Причём испытана она на 3 разных прогах. Вообщем если хотите потестируйте. Берётся адрес байта из процесса (без имаг баз) к примеру DEC(0040BC2F - 00400000 - BFF(hex)) = порядковый номер байта в РЕ файле. и что самое странное это всё работает!!!
| Сообщение посчитали полезным: |
Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 01 декабря 2006 16:13 · Поправил: s0larian · Личное сообщение · #14
SeQuick, Ёлки-палки - мы же все тебе популярно объясняем, что это счетается используя виртуальные адреса по которым секции из PE файла загружаются в память. Перестань делать свои миклухо-маклайские арифметические попытки, и сделай правильно.
Утиль который делает все такие пересчёты смотрит PE - т.к. заголовок всегда в памяти.
| Сообщение посчитали полезным: |
Ранг: 162.2 (ветеран) Активность: 0.09↘0 Статус: Участник
|
Создано: 01 декабря 2006 20:14 · Личное сообщение · #15
SeQuick А теперь возбми свою формулу и посчитай смещение mz сигнатуры.
| Сообщение посчитали полезным: |
Ранг: 1.0 (гость) Активность: 0=0 Статус: Участник
|
Создано: 01 декабря 2006 20:32 · Личное сообщение · #16
Просто клиника какая-то...
wasm.ru/article.php?article=packlast01#21
| Сообщение посчитали полезным: |
Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 02 декабря 2006 02:06 · Личное сообщение · #17
мля понаписали из за пустяка, всю необходимую инфу челу дали, ну если не хочет он следовать
советам, то зачем просить тогда помощь? а вообще, чтобы всегда правильно переводить
RvaToOffset нужно учитывать выравнивание в файле...
----- [nice coder and reverser] | Сообщение посчитали полезным: |
Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 04 декабря 2006 16:46 · Личное сообщение · #18
AmLupus пишет:
Просто клиника какая-то...
LOL!!! +1
| Сообщение посчитали полезным: |