Главная » Статьи » Крэкинг |
Внедрение .dll в чужое приложение
В
связи с тем, что проблема с внедрением .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, тот что я говорил запомнить ещё в самом начале. Сейчас мы будем его изменять. Обратите внимание на эту картинку http://radikal.ru/F/s49.radikal.ru/i125/09...07e187.jpg.html, обратите внимание на offset команды PUSH 00801015 -> 00801026. Этот offset мы должны вписать в программу LordPe где строка Entry Point, как вы заметили я вписал не 00801026 а 00301026, почему я так сделал объясню чуть позже, собственно вы должны сделать точно так же. Нажимаем Save -> Ok и радуемся | |
Просмотров: 5222 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 1 | ||
| ||