Сейчас на форуме: asfa (+6 невидимых) |
eXeL@B —› Вопросы новичков —› Как найти конец текущей секции? |
Посл.ответ | Сообщение |
|
Создано: 29 ноября 2013 16:15 · Личное сообщение · #1 Хочу сделать базонезависимый код. Есть код, который будет размещаться в пустом месте секции чужой программы. Этот код перебирает все адреса идущие вниз по секции от места внедрения кода (адрес инкрементируется), и попутно ищется определенная комбинация байт. Задача стоит такая, чтоб не выскочить за пределы текущей секции. То-есть ограничить перебор адресов последним адресом секции. Есть-ли какие "хитрые команды", которыми можно определить этот "последний адрес"? Типа как эта, я ее применил, чтоб определить "текущий адрес". Code:
|
|
Создано: 29 ноября 2013 16:19 · Личное сообщение · #2 LdrFindEntryForAddress/RtlPcToFileHeader() -> IMAGE_SECTION_HEADER.SizeOfRawData Гнилой конечно метод. Выделяйте память, если это инфект, то добавляйте новую секцию и(или) юзайте лодер. | Сообщение посчитали полезным: Crawler |
|
Создано: 29 ноября 2013 16:19 · Поправил: ajax · Личное сообщение · #3 virtual size секции. считывается из PE заголовка файла: Dr0p не напрягай мосх. чую, это просто мемпатчер. размер нужен для поиска паттерна ----- От многой мудрости много скорби, и умножающий знание умножает печаль | Сообщение посчитали полезным: Vovan666, Kuzya69 |
|
Создано: 29 ноября 2013 16:33 · Личное сообщение · #4 |
|
Создано: 29 ноября 2013 16:38 · Поправил: Dr0p · Личное сообщение · #5 |
|
Создано: 29 ноября 2013 16:54 · Поправил: Kuzya69 · Личное сообщение · #6 |
|
Создано: 29 ноября 2013 17:31 · Личное сообщение · #7 |
|
Создано: 29 ноября 2013 20:36 · Поправил: dosprog · Личное сообщение · #8 |
|
Создано: 30 ноября 2013 03:51 · Поправил: Dr0p · Личное сообщение · #9 |
|
Создано: 30 ноября 2013 05:14 · Поправил: Kuzya69 · Личное сообщение · #10 |
|
Создано: 30 ноября 2013 13:46 · Личное сообщение · #11 Kuzya69, ...вызов стандартных апи может у меня обломиться. Например при использовании другого компа, а тем-более другой винды. -- ) Так адреса функций нужно получать через GetProcAddress(), тогда не обломится. | Сообщение посчитали полезным: Kuzya69 |
|
Создано: 06 декабря 2013 21:26 · Поправил: dosprog · Личное сообщение · #12 Dr0p,Crawler, вяло поясню, что имелось в виду. Размер дисковой секции вполне может быть 0, если упакованный код содержится в другой дисковой секции. Так что же тогда в ней искать, если RawSize==0 ?... --ADD-- Dr0p, Возможно, недостаточно чётко сформулировал. Например, UPX превращает в файле секцию кода в "пустышку" с RawSize=0 и VirtSize = реальный_размер_распакованного_кода, а сам запакованный код в файле лежит в другой секции (специально добавленной UPX'ом). В памяти код распаковывается в свою изначальную секцию и запускается на выполнение, при этом в PE-хидере в памяти для этой секции кода продолжает оставаться RawSize=0. Ну, да ладно. Не стОит продлевать оффтоп... Просто уточнил сказанное. (Это если рассматривать общий случай). |
|
Создано: 06 декабря 2013 23:17 · Личное сообщение · #13 |
eXeL@B —› Вопросы новичков —› Как найти конец текущей секции? |