| Сейчас на форуме: 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  | 
| 
 | 
Создано: 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 —› Вопросы новичков —› Как найти конец текущей секции? | 








 Для печати