avatar_DobrjaG

Гайд: Внедрение .dll в чужое приложение, Подробное описание

Автор DobrjaG, 2010 Июнь 21, 15:12

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

Ключевые слова [SEO] mu onlineобучениевнедрение .dll

DobrjaG

Видео
https://www.youtube.com/watch?v=VWqudyDgRkY
Доброго времени суток уважаемые пользователи форума x-mu.net.

В связи с тем, что проблема с внедрением .dll файлов в чужое приложение достаточно актуальная, я решил написать полное руководство для новичка, по данному вопросу.

Начну с инструментов которые нам потребуются для работы с внедрением .dll файла

1. OllyDbg - это отладчик уровня User Space, который приобрел большую популярность среди пользователей всего мира.
Сейчас для OllyDbg написано множество плагинов, так что работать с ним одно удовольствие.
OllyDbg обладает хорошей функциональностью, это делает его пригодным для решения различных задач и исследования кода любой сложности.
Интерфейс отладчика полностью настраиваемый: фон рабочих окон, цвет и размер шрифта, подсветка определенных ассемблерных инструкций и многое другое.

Скачать

2. Pe Explorer - программа для просмотра и редактирования PE-файлов - EXE, DLL, SYS, DRV, CPL, OCX, BPL, DPL, SCR и др.
Включает в себя PE Header Viewer, Exported/Imported API Function Viewer, API Function Syntax Lookup, Resource Viewer/Editor, Dependency Scanner & Disassembler.
Кроме всего прочего, с помощью PE EXPLORER можно без труда русифицировать самые разнообразные win-приложения...

Скачать

3. Утилита для системных программистов, позволяющая редактировать или просто просматривать многие части исполняемых файлов, создавать дамп из памяти, оптимизировать и анализировать их.

Скачать

Итак, после того как мы немного ознакомились с программами которыми будем работать, можно уже приступать к работе.
Первым делом запускаем наш отладчик OllyDbg и с помощью него открываем main.exe
File -> Open -> main.exe


После того как main.exe загрузился, мы увидим его большой ассемблерный код, что нам сейчас потребуется сделать так это запомнить или записать на бумажку либо в блокнот не важно :) точку входа в программу, на английском языке это звучит как EntryPoint.



Как вы заметили на картинке я указал стрелочку на цифирки, которые выделены белым цветом, эти цифирки называются смещением, на английском языке это звучит как Offset, значит так, как я сказал выше нужно запомнить либо записать этот Offset который выделен белым цветом.
Далее мы должны найти пустое место куда будем внедрять наш .dll файл, для этого скроллим либо нажимаем кнопку "PageDown" пока не увидим следующую картину



Теперь мы готовы внедрять .dll файл, для этого нажимаем Правый клик -> Folow in Dump -> Selection, и видим как нас перенесло в нижнее окно, под названием Hex Dump.
Теперь нам надо задать имя нашей .dll, для этого необходимо выделить столько точек сколько имеет символов ваша .dll учитывая и ".dll", например:
f1UZ.dll имеет 8 символов, получается необходимо выделить 8 точек и нажать пробел, и в появившемся окне, в строке Ascii вписываем имя вашей .dll



Нажмите ок либо Enter, теперь мы видим результат проделанной работы.
Далее отсчитываем несколько строчек, и вписываем следующие команды:
PUSH и указываем на первый offset где начинается красный текст, как мы видим у меня он 00801015
PUSH 00801015
Далее нам нужно вызвать функцию LoadLibraryA, для этого нажимаем Правый клик -> Search For -> Name (label) in current module либо Ctrl+N, и вспике этих функций ищем ту которая нам необходима.



После того как мы её нашли, кликаем на неё один раз и нажимаем Enter, кликаем ещё один разок на CALL DWORD PTR DS:[<KERNEL32.LoadLibraryA>] и нажимаем Enter.



Далее нам необходимо нажать на CALL DWORD PTR DS:[80220C], скопировать эту функцию и перейти в то место где мы внедряем наш .dll файл и вставить ниже нашей команды PUSH 00801015, то есть
PUSH 008010105
CALL DWORD PTR DS:[80220C]



Теперь нам нужно сделать прыжок на EntryPoint, делается это следующим образом
Вписываем ниже CALL DWORD PTR DS:[80220C]
JMP и тот offset который я вам говорил чтобы вы запомнили, тот offset который был выделен белым цветом.

PUSH 008010105
CALL DWORD PTR DS:[80220C]
JMP 007D37E6



Далее нам необходимо сохранить всю проделанную работу, для этого выделяем все изменения и нажимаем Правый клик -> Copy to executable -> Selection -> Правый клик -> Save file



Забыл о самом главном, перед тем как сохранить изменения, запомните offset команды PUSH 008010105, на этот offset мы будем изменять EntryPoint

Дело осталось за малым, необходимо изменить Entry Point для того чтобы .exe приложение смогло прочитать наш .dll файл.
Выше я описал программу Pe Explorer, но причинам того что лимит на её использование у меня закончился, прийдется использовать другую программу под названием LordPe.

Теперь запускаем программу LordPe и с помощью этой программы открываем main.exe
PE Editor -> main.exe


В строке Entry Point мы видим следующие цифирки, 003B23A0, если вы ещё помните, это начальный Entry Point, тот что я говорил запомнить ещё в самом начале.
Сейчас мы будем его изменять.
Обратите внимание на эту картинку https://radikal.ru/F/s49.radikal.ru/i125/09...07e187.jpg.html, обратите внимание на offset команды PUSH 00801015 -> 00801026.
Этот offset мы должны вписать в программу LordPe где строка Entry Point, как вы заметили я вписал не 00801026 а 00301026, почему я так сделал объясню чуть позже, собственно вы должны сделать точно так же.



Нажимаем Save -> Ok и радуемся :)

Понравился туториал ? жми спасибу :)

Кредиты: f1UZ

LeGrand

Спасибо конечно, но:
Какой имбицил советует менять EP? Скажите, ЗАЧЕМ? ЗАЧЕМ? МЕНЯТЬ Точку входа, обьясните мне! Чтобы файл нельзя было замолбоксить, или что??? Просто не понимаю... ))

DobrjaG

#2
Цитата: LeGrand от 2010 Июнь 21, 19:59  Спасибо конечно, но:
Какой имбицил советует менять EP? Скажите, ЗАЧЕМ? ЗАЧЕМ? МЕНЯТЬ Точку входа, обьясните мне! Чтобы файл нельзя было замолбоксить, или что??? Просто не понимаю... ))
Егор кажется!
Обрати на это
Кредиты: f1UZ

Simp1e

#3
с точкой входа LeGrand +1 еще я не вижу смысла с этого видео =) в интернете есть куча гайдов как хукать дллку если ты уже с ними разобраться не можеш вообще не стоит вникать в это =) во тут для " Новичка " не понятно каким образом он находит новую точку входа?
сделал бы просто "Новая точка входа" - 400000 = Новая точка входа  =) а не какой то математический мозг =)



OMG

ЦитироватьВ строке Entry Point мы видим следующие цифирки, 003B23A0, если вы ещё помните, это начальный Entry Point, тот что я говорил запомнить ещё в самом начале.
Сейчас мы будем его изменять.
Обратите внимание на эту картинку https://radikal.ru/F/s49.radikal.ru/i125/09...07e187.jpg.html, обратите внимание на offset команды PUSH 00801015 -> 00801026.
Этот offset мы должны вписать в программу LordPe где строка Entry Point, как вы заметили я вписал не 00801026 а 00301026, почему я так сделал объясню чуть позже, собственно вы должны сделать точно так же.

DobrjaG

Цитата: G.G.Akaruz от 2010 Июнь 22, 04:40  с точкой входа LeGrand +1 еще я не вижу смысла с этого видео =) в интернете есть куча гайдов как хукать дллку если ты уже с ними разобраться не можеш вообще не стоит вникать в это =) во тут для " Новичка " не понятно каким образом он находит новую точку входа?
сделал бы просто "Новая точка входа" - 400000 = Новая точка входа  =) а не какой то математический мозг =)



OMG
Просвити меня покажы где есть хорошый гайд!

Mr.Kernighan

"Guide" достойный уважения, истолкован так, что своей доступностью вполне подходит для новичков, не каждый сможет окунуться в дебри программирования и использовать разные методы hook'а.

DangeR


Rufus

у меня вопрос а как dll отсоеденить теперь от main.exe

HolyGrey

Чето ничего не получилось(  после всех операций Main крашится, ну в общем не запускается.

Помогите пожалуйста сделать защиту. skype katar_in_blood

NexusMDMTeam


Tiomkin

Voobscem za4em sebe parit mozg s etim .
vot programka ukazivajes dll i kuda xukat . i pises natpis kogda dllku udaliajes 4to budit pisatsia v errore .

https://www.2shared.com/file/N9RnUntB/hooker.html

MuScorpion

Цитата: Tiomkin от 2012 Янв. 27, 00:40  pises natpis kogda dllku udaliajes 4to budit pisatsia v errore .
Берёшь другую любую длл с таким же названием,меняешь и всё прекрасно работает.Смысл от этой проги.

mroul

Гайд ниасилил, да и смысл его читать. Есть утилита PreX Injector. В ней выбираешь процесс который хочешь проинжектить и длл соответственно. и фсе.

loopik

хувер не хукнет лучше чем руками (ручками всегда куда лучше)

Tekogero

Отличный гайд!!! Наконец у меня получилось, что долго не выходило!

Paqpka

Чтото не получается с етим гайдом сделать всё делаю вот последнее не понемаю ентри пойнт

Может кто сделать видио гайд как хукать .длл в маин через олидб и вынемать .длл с маин ?

Marlond

Такаяже проблема, пробывал в инете поискать подобное но выдает всякий бред и скопипастиную тему.


Похожие темы (5)