Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых)

 eXeL@B —› Программирование —› Внедрение в секцию PE - файла.(функция на С++)
Посл.ответ Сообщение

Ранг: 36.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 12 января 2007 10:26
· Личное сообщение · #1

Переписываю простенькую функцию с ассемблера на С++(МОЖЕТ У КОГО-НИБУДЬ ЕСТЬ ГОТОВАЯ?), понятное дело, что мог её включить и в __asm , но С++ люблю как-то больше, смысл такой функция получает в единственном параметре путь до exe-файла, затем путём расширения последней секции файла записывает свой exe-файл. При выполнении исполняется программа-носитель и наша программа, которую внедрила наша функция. С вызовами API на ассемблере я знаком и в принципе часть кода связанного с API - функциями я перенёс, но вот когда идёт чистый ассемблерный текст вида:

mov edi,hMappingTo
assume edi:ptr IMAGE_DOS_HEADER
add edi,[edi].e_lfanew
add edi,4
assume edi:ptr IMAGE_FILE_HEADER
push [edi].NumberOfSections
pop NumberOfSections
add edi,sizeof IMAGE_FILE_HEADER
assume edi:ptr IMAGE_OPTIONAL_HEADER

пока в него ещё не вкурю. (Но это только пока ) ) Просьба не откажите в любезности и помогите дописать функцию на С++. Спасибо всем.
--> www.sxd-vzlom.narod.ru/asm.asm <-- --> www.sxd-vzlom.narod.ru/asm.asm <-- - это файл ассемблерного кода,
--> www.sxd-vzlom.narod.ru/asm.с <-- --> www.sxd-vzlom.narod.ru/asm.с <-- - это файл недопереписанной функции внедрения на С++.




Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 12 января 2007 19:58
· Личное сообщение · #2

Ну это же элементарный разбор заголовка РЕ файла.

IMAGE_DOS_HEADER* _edi = (IMAGE_DOS_HEADER*)(hMappingTo); // полагаю, что это укзатель на начало зачитанного в память файла
IMAGE_FILE_HEADER* _edi2 = (IMAGE_FILE_HEADER*)((char*)_edi + _edi->e_lfanew + 4); // получили смещение РЕ заголовка и проскипали sizeof(IMAGE_NT_HEADERS::Signature)
UINT NumberOfSections = _edi2->NumberOfSections; // скопировали в локальную переменную количество секций в файле
IMAGE_OPTIONAL_HEADER* _edi3 = (IMAGE_OPTIONAL_HEADER*)((char*)_edi2 + sizeof(IMAGE_FILE_HEADER));
теперь edi (а в нашем случае _edi3) указавает на структуру IMAGE_OPTIONAL_HEADER32 из заголовка PE файла

За такой стиль написания нужно расстереливать.
Для себя я сделал вывод что автор этого когда знает синтаксис masm ассеммблера, но не умеет на нем описывать вложенные структуры (см. IMAGE_NT_HEADERS в platform sdk).



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

Создано: 12 января 2007 21:49
· Личное сообщение · #3

sxd
rsdn.ru/
рекомендую!!!
там есть поиск, он поможет.



Ранг: 36.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 13 января 2007 10:24
· Личное сообщение · #4

DrGolova пишет:
Ну это же элементарный разбор заголовка РЕ файла.

IMAGE_DOS_HEADER* _edi = (IMAGE_DOS_HEADER*)(hMappingTo); // полагаю, что это укзатель на начало зачитанного в память файла
IMAGE_FILE_HEADER* _edi2 = (IMAGE_FILE_HEADER*)((char*)_edi + _edi->e_lfanew + 4); // получили смещение РЕ заголовка и проскипали sizeof(IMAGE_NT_HEADERS::Signature)
UINT NumberOfSections = _edi2->NumberOfSections; // скопировали в локальную переменную количество секций в файле
IMAGE_OPTIONAL_HEADER* _edi3 = (IMAGE_OPTIONAL_HEADER*)((char*)_edi2 + sizeof(IMAGE_FILE_HEADER));
теперь edi (а в нашем случае _edi3) указавает на структуру IMAGE_OPTIONAL_HEADER32 из заголовка PE файла

За такой стиль написания нужно расстереливать.
Для себя я сделал вывод что автор этого когда знает синтаксис masm ассеммблера, но не умеет на нем описывать вложенные структуры (см. IMAGE_NT_HEADERS в platform sdk).


Ну хорошо, а исходник Вы смотрели, не знаете где взять похожий исходник на С++?



Ранг: 36.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 13 января 2007 10:26
· Личное сообщение · #5

Я имею ввиду функцию внедрения, где происходит работа с PE-файлом.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 13 января 2007 10:41 · Поправил: HoBleen
· Личное сообщение · #6

Ничего не стоит переписать ее на си если знаешь асм. Проблема для тебя в том (если не знаешь асма) что такая работа обычно пишется на ассемблере.



Ранг: 72.3 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 13 января 2007 13:31
· Личное сообщение · #7

sxd пишет:
смысл такой функция получает в единственном параметре путь до exe-файла, затем путём расширения последней секции файла записывает свой exe-файл. При выполнении исполняется программа-носитель и наша программа, которую внедрила наша функция.


на самом деле если тупо компилить приведённый код (asm.asm) - полученная программа клеит файлы, но после результирующий фаел не запускается(1.0), так что при переводе есть вариант разобратся с PE форматом и подумать написать свой джойнер. Так как идея инжекта из сурца старая и будит палится всем и вся.



Ранг: 36.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 13 января 2007 14:16
· Личное сообщение · #8

HoBleen пишет:
Ничего не стоит переписать ее на си если знаешь асм. Проблема для тебя в том (если не знаешь асма) что такая работа обычно пишется на ассемблере.


Привет HoBleen! Не меня вообще не напрягает работа с файлами, но при работе с PE-файлом надо знать всякие там смещения, я имею ввиду размеры...
Поэтому и глючу...
)

sER пишет:
на самом деле если тупо компилить приведённый код (asm.asm) - полученная программа клеит файлы, но после результирующий фаел не запускается(1.0), так что при переводе есть вариант разобратся с PE форматом и подумать написать свой джойнер. Так как идея инжекта из сурца старая и будит палится всем и вся.


Может ты использовал (производил внедрение) запакованный файл, не пробовал, что-нибудь простое виндовое... И хочешь сказать, что файл будет палиться антивирю? Может есть смысл использовать EntryObscurePoint, может это не будет палиться?



Ранг: 72.3 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 13 января 2007 14:37
· Личное сообщение · #9

sxd пишет:
Может ты использовал (производил внедрение) запакованный файл, не пробовал, что-нибудь простое виндовое...

calc & чистый fasm, ничего не пакованое

sxd пишет:
И хочешь сказать, что файл будет палиться антивирю?

да

sxd пишет:
Может есть смысл использовать EntryObscurePoint, может это не будет палиться?

пробуй



Ранг: 36.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 13 января 2007 14:41
· Личное сообщение · #10

sER а у тебя нет ничего подобного на С++, ну или идейку перспективную подкинь каким лучше образов внедряться, чтоб следов по-минимуму было?



Ранг: 72.3 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 13 января 2007 15:04 · Поправил: sER
· Личное сообщение · #11

если без извратов то не суй весь фаел в секции, попробуц пересобрать результирующий фаел: подцепляй последовательно добавляя их в конец и запуская стандартно через ShellExecute из shell32.dll и сам этот вызов тоже обязательно спрятать(так как антивири его пасут) параллельно пошифровать (чем сложнее тем лучше) вызовы exec'a.


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


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