Сейчас на форуме: CDK123, zds, tyns777, tihiy_grom, morgot, rmn (+5 невидимых)

 eXeL@B —› Программирование —› Вопрос по PE exec
Посл.ответ Сообщение

Ранг: 13.6 (новичок)
Активность: 0.010
Статус: Участник

Создано: 06 ноября 2008 20:10
· Личное сообщение · #1

У меня возник такой вопрос:
- пытаюсь запустить считаный образ exe из ап своего процесса
если по пунктам, то:
- собираю файл с базой например: 0х01000000
- при запуске считываю образ ехе лежащего на диске с базой 0х00400000 в память
- выравниваю адреса\данные и т.д для валидного образа
- выделяю память VirtualAlloc по адресу ImageBase считаного файла (в своем же процессе) размером SizeOfImage
- копирую буфер считаного ехе в память по адресу (ImageBase) размером SizeOfHeaders
- считываю секции (корректирую) пишу по адресу ImageBase + VirtualAddress буфер Образ+PointerToRawData размером в SizeOfRawData для каждой секции в ап своего процесса.
- Создаю нить CreateThread с точкой входа на OEP образа (ImageBase + AddressOfEntryPoint)
После чего получаю экзепшн, память не может быть "write\read" =
Я думаю что ошибка может быть в создании нити...так как она вызывается по адресу ImageBase (моего файла) + адрес вызова CreateThread.. Если же так, то значит мне нужно скопировать участок данных с вызовом CreateThread в область образа и вызвать его от туда?? Верно...?
вот вообщем-то и суть вопроса
Ответите или просто укажете куда "смотреть" буду очь благодарен..Спасибо.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 06 ноября 2008 21:50
· Личное сообщение · #2

Не вижу тут настройки импорта. Не вижу примера. И не вижу, чтобы ты сам загрузил это в отладчик и тупо разобрался, почему и где происходит исключение.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 06 ноября 2008 21:57
· Личное сообщение · #3

stub
Реально косяки могут быть с импортом - ведь ты же ничего не сделал, чтоб получить валидные адреса, можно восстановить IAT через GetProcAddress, например, как в некоторых упаковщиках, или самому парсить экспорт, но так как ты хочешь образ просто промеппировать и запускать - не выйдет

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 107.5 (ветеран)
Активность: 0.150
Статус: Участник

Создано: 07 ноября 2008 02:28
· Личное сообщение · #4

Посмотрите на статьи MS-ReM`a на васме там есть пример загрузки ексе в чужое ап (думаю мало чем отличается, сам принцип понять можно). правдо на делфи

-----
Md5 fcbb6c9c9a5029b24d70f2d67c7cca74




Ранг: 6.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 ноября 2008 23:27
· Личное сообщение · #5

На васме есть превосходная статья FreeMan'a как раз по этому поводу.
Выложи пример. Мы посмотрим



Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 28 ноября 2008 01:28
· Личное сообщение · #6

если память будет занята нужны релоки, или вызвать ZwUnmapViewOfSection, хотя это опасно. и ещё можно в PEB пофиксить ImageBase (для работы с ресурсами через апи) и в списках модулей тоже, ато GetModuleFileName(0 не будет работать. ещё надо выставить R/W/E на секции по флагам.

-----
Shalom ebanats!




Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 29 ноября 2008 21:32
· Личное сообщение · #7

Stack
зы: а шо означает твой МД5 ? )

-----
My love is very cool girl.




Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 01 декабря 2008 08:38
· Личное сообщение · #8

theCollision, cracklab.ru

-----
Shalom ebanats!



 eXeL@B —› Программирование —› Вопрос по PE exec
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати