Сейчас на форуме: tyns777 (+5 невидимых) |
![]() |
eXeL@B —› Программирование —› cws |
Посл.ответ | Сообщение |
|
Создано: 13 апреля 2010 15:11 · Поправил: Clerk · Личное сообщение · #1 Здрасте. Откатывал лодер, мб кому интересно. Используем семпл из пакета Хатчессона лежащий в \MASM32\EXAMPLE8\MOB\CWS o Так как должна применяться релокация, а нормально к экзешникам она не применяется, то компилим с опцией /DLL. o Нотификация длл выполняется при захваченной кс LdrploaderLock. Всякое обращение к загрузчику из другого потока при захваченной этой кс приведёт к деадлоку. Поэтому не используем InitRoutine(), соответствеено компилим с опцией /NOENTRY. o Теперь нужен стартуп рантайм, вынесем его в экспорт с именем "Run", прежде поменяв в сурце имя "start" на "Run" и указав опцию линкеру /EXPORT:Run. После этого компилим и получаем cws.dll размером 0x19C00. Теперь жмём это посредством NTLZ(RtlCompressBuffer()) и получаем дамп размером 0x604F. Теперь шифруем, допустим простейшая битовая инверсия. Образ готов. Пишем небольшой стаб для загрузки, который расшифровывает образ, распаковывает, подгружает средствами тестируемого лодера и вызывает экспорт Run(): Code:
Помним что приложение использует GetModuleHandle(NULL), а в этом случае возвращается база экзешника, определённая в PEB[+8]. Фиксим это загрузкой туда нашей базы. Конпилим и получае экзешник размером 0x7200. Запускаем и видим битмапу с регионом наложенным на окно: ![]() Аттачимся ольгой. Сразу ругается про отсутствие модуля на диске. Хек ![]() ![]() |
|
Создано: 13 апреля 2010 15:23 · Личное сообщение · #2 Ещё можно пофиксить адрес базы перед Startup в LDR, что-то вроде: Code:
----- Shalom ebanats! ![]() |
|
Создано: 13 апреля 2010 15:37 · Личное сообщение · #3 |
|
Создано: 13 апреля 2010 18:51 · Личное сообщение · #4 Clerk пишет: а нормально к экзешникам она не применяется, то компилим с опцией /DLL ----- EnJoy! ![]() |
|
Создано: 13 апреля 2010 19:22 · Поправил: Clerk · Личное сообщение · #5 |
|
Создано: 13 апреля 2010 19:23 · Поправил: Clerk · Личное сообщение · #6 |
|
Создано: 14 апреля 2010 12:12 · Личное сообщение · #7 Clerk пишет: Так как лодер грузит длл секундочку, не надо передёргивать ты сказал: "должна применяться релокация, а нормально к экзешникам она не применяется" именно на это я и отвечал Clerk пишет: Собственно по теме чтонибудь есть ? я ответил, процитировав твою фразу в твоём же посте если ты считаешь, что фразы в твоём посте - не по теме, то претензии не ко мне или ты хотел сказать, что exe с реклоками грузить труднее, нежели dll? или ещё что-то? я не домысливаю за тебя, я процитировал конкретную фразу, не додумывая и не выдумывая. в итоге, на мой вопрос по существу ты не ответил проехали. по поводу сборки сорса: либо ты забыл про Code:
либо у тебя расширенный ntdll.inc ----- EnJoy! ![]() |
|
Создано: 14 апреля 2010 21:50 · Личное сообщение · #8 |
|
Создано: 14 апреля 2010 21:51 · Личное сообщение · #9 |
|
Создано: 17 апреля 2010 17:30 · Поправил: Clerk · Личное сообщение · #10 |
![]() |
eXeL@B —› Программирование —› cws |