Ollydbg Инструкция По Применению

Ollydbg Инструкция По Применению

Я поклонник OllyDBG. Так как считаю, что эра SoftICEа уже в прошломно он ещ актуален для отладки драйверов. Открываем в нм. Интересующие нас инструкции начинаются здесь. Инструкция OR выполняется, на этот раз между еах и edx, который. Ну для той задачи что в этой статье вполне хватило бы OllyDbg, а он бесплатен. Декомпиляция и вызов функции по адресу Cyber. Guru. ru. Written on 1. Исследование типовой защиты в отладчике OllyDbg. Стрелочки, которые находятся левее кода инструкции, показывают направление перехода. Января 2. 01. 4. Это руководство будет разбито на серию шагов с общим примером, сопровождаемым применением знаний к настоящей программе. Нужен компилятор C для компиляции кода для DLL. Компиляция тестового приложения и попытка работы над ним, скорее всего, дадут разные результаты из за настроек компилятора, поэтому лучше всего использовать приложение, включенное в callbin. Зачем делать это Есть много причин для декомпиляции вызовов к внутренним функциям процессов. Например, дополнения или модификации для игр используют прием вызова внутренних функций процесса игры, чтобы отобразить текст на экране. Возможно, надо расширить функционал горячих клавиш программы или же надо вызвать функцию win в игре. Так или иначе, данный прием применяется гораздо шире, чем указано здесь. Это руководство требует хорошего значения ассемблера x. Win. 32 API. Написание тестового приложения. Сначала пишется приложение, затем оно декомпилируется, чтобы увидеть, как вызывается эта функция. Будет создано простое приложение, выполняющее арифметические действия и выводящее значения с помощью функции. Ниже приведено тестовое приложение undef UNICODEinclude lt span class. Большое преимущество написания собственного приложения и его декомпиляции заключается в том, что вы уже знаете, что искать. Пытаясь вызвать функцию по адресу приложения, исходного кода которого у вас нет, вы должны быть готовы проделать большую лишнюю работу, так как это трудная задача. Будет декомпилирована отладочная сборка программы включенная в callbin. Ollydbg Инструкция По Применению На Русском' title='Ollydbg Инструкция По Применению На Русском' />Почему отладочная сборка, а не выпускаемая сборка с выключенными оптимизациями Это слегка облегчает анализ для отладчика, но не играет роли. Если посмотреть на выпускаемую сборку программы, в зависимости от оптимизаций компилятора, my. Secret. Function. Плюс, так как функция может быть встроенной, попытка вызвать ее по адресу может быть тщетным поиском. Анализ начинается с открытия Olly. Dbg. Объяснение принципа работы. В окне Olly. Dbg нажмите F3 и найдите Tut. Example. exe. После его открытия появится следующее окно сообщения Можно просто нажать кнопку OK и продолжить это предупреждение появляется из за особенностей отладочной сборки собрана в VS2. IDE, для справки. Щелчок правой кнопкой мыши по главному окну и выбор Искать Все межмодульные вызовы выдаст новое окно Это окно показывает вызовы всех функций, которые делает исполняемая программа. Зайдя на ollydbg. VERSION 2. Попытка подсунуть ollydbg. Vc50 PDK приводит к. Данная статья приведена исключительно в информационноознакомительных целях. Коллектив проекта DAXA не несет никакой ответственности. Теперь EIP равен 401002, и в листинге видим, что первая инструкция выполнилась и. Вспомним, где OllyDbg показывает значения регистров Взгланув. Примы социальной инженерии применять можноOllydbg Инструкция По ПрименениюВидно, что она вызывает printf из MSVCR9. D. dll, Get. Async. Key. State из USER3. С помощью этого можно определить, где находятся main и my. Secret. Function. Следует начать с main и увидеть, как вызывается my. Secret. Function. Дважды щелкните по одной из функций Get. Async. Key. State   и Olly. Dbg покажет адрес, где они вызываются. Щелкните на верхней строке   и Olly. Dbg покажет следующее Так как есть исходный код, можно просто поставить точку останова выделить строку и нажать F2 на Get. Async. Key. State, так как известно, что она контролирует, вызывается my. Secret. Function. Так как не нужно заходить в функцию и смотреть, как USER3. Get. Async. Key. State, и продолжается установка точек останова на каждой строке включительно до второй функции Get. Async. Key. State. После завершения получится следующее Начинается анализ нажмите F9 Выполнить программу. Olly. Dbg должен сразу дойти до первой точки останова и подсветить строку. Давайте нажимать F2 построчно и смотреть, что программа делает без вмешательства. Она доходит до этой строки 0. A   7. 4 1. A            JE SHORT Tut. Examp. 0. 04. 11. Обратите внимание, что код клавиши для VK. Теперь можно изучить, что эта функция делает, или чего не делает. Надо посмотреть, что делают пропущенные строки 0. C   6. A 0. 4            PUSH 4. E   6. 8 4. 0E2. 01. PUSH 1. E2. 40. 00. EC5. 74. 10. 0      PUSH Tut. Examp. 0. 04. 15. EC  ASCII. Далее вызывается некоторая функция, стек исправляется после возврата управления ею, и продолжается цикл. Это кажется знакомым и на самом деле является разобранной формой my. Secret. Function an. Argument,. Выделите строку вызова и нажмите Enter, чтобы дойти до функции. Отладчик дойдет до следующей строки 0. E9 A2. 03. 00. 00      JMP Tut. Examp. 0. 04. 11. C0это очередной переход на 0x. C0. Оказывается, что функция  расположена не по адресу 0x. C0. Снова нажмите Enter на этой строке и перейдете к функции по этому адресу. Перейдя к 0x. 00. C0, вы увидите знакомые вещи, такие как вход функции и выходные инструкции printf. C0 адрес, который надо вызвать в программе, чтобы вызвать эту функцию с пользовательскими аргументами прежде чем приступить к этому, надо хотя бы изучить, что происходит в функции, и увидеть, как она выглядит разобранная. Их будет легко отследить, так как они отделены вызовами printf. Также, смотря на исходный код, можно его прямо сопоставить с разобранным кодом. Расшифровка параметров. Примечание Те, кто знает ассемблер, могут пропустить эту часть, так как функции и объяснения весьма простые. Прежде чем изучать это, стоит посмотреть на начало функции, где видно 0. PUSH EBP0. 04. 13. BEC             MOV EBP,ESP0. EC C0. 00. 00. 00    SUB ESP,0. C0. Это обычно называется вводной частью и устанавливает кадр стека для переданных аргументов, локальных переменных, сохраненных регистров и так далее. В конце этой функции видна группа извлеченных из стека регистров 0. E   8. 1C4 C0. 00. ADD ESP,0. C0. 00. BEC             CMP EBP,ESP0. E8 CAD9. FFFF      CALL Tut. Examp. 0. 04. 11. B   8. BE5             MOV ESP,EBP0. D   5. D               POP EBPЭто называется завершающим кодом и восстанавливает состояние стека, так что программа может нормально продолжить выполняться после завершения этой функции. Ко всем параметрам при этом будут обращаться как к чему то, добавленному в EBP указатель базы. Тахометр Ат 6 Инструкция. Переменные, переданные функции в качестве параметров, являются. Аргументы являются. Пора вернуться к изучению первой части, разыменовывающей param. D8 к нему. Важные части были объяснены, и в основном все понятно без объяснений, при условии знания мнемоник языка ассемблера. В тексте эти вещи подробно не анализируются, так как комментарии на картинке ясно описывают, что происходит. Начинается с param. Происходящее объясняется путем комментариев рядом с важными строками в дизассемблировании. Чтобы следовать за точками останова в отладчике, поставьте точку останова на этой строке и начните анализировать 0. F5   8. B4. 5 0. 8          MOV EAX,DWORD PTR SS. Начнем со следующего param. Надо как то вызвать функции по конкретному адресу памяти в процессе. Нельзя вызвать ее из своего процесса, так как каждый процесс находится в своем собственном виртуальном пространстве. Допустим, что код скомпилирован, исполняемый файл запускается как secret. Также допустим, что ничего неизвестно о виртуальной памяти, и было написано приложение с функцией, указывающей на 0x. C0, при предположении, что это my. Secret. Function. При попытке вызвать эту функцию не будут получены нужные результаты из за того что процесс находится в другом адресном пространстве. Следовательно, надо инжектировать DLL. Путем этого можно получить доступ к пространству памяти процесса secret. Код этой DLL выглядел бы так. Написание DLLinclude lt span class. Создается поток внутри процесса, в который была инжектирована эта DLL, и устанавливается цикл, ждущий нажатия клавиши. После нажатия F2 должна вызываться функция, в свою очередь вызывающая внутреннюю функцию процесса. Однако передаются собственные параметры вместо тех, которые жестко закодированы в оригинальный файл. Функция Call. Function. Было выбрано соглашение о вызовах. При необходимости можно было бы еще детальней изучить дизассемблированный исполняемый файл и посмотреть, как очищается стек, чтобы установить, используется ли другое соглашение о вызовах. В исполняемом файле создается указатель функции на адрес 0x. C0, являющийся адресом, ранее найденным для my.

Ollydbg Инструкция По Применению
© 2017