eXeL@B —› Вопросы новичков —› Ollydbg create thread |
Посл.ответ | Сообщение |
|
Создано: 10 июля 2016 15:12 · Личное сообщение · #1 |
|
Создано: 10 июля 2016 16:11 · Личное сообщение · #2 |
|
Создано: 10 июля 2016 16:15 · Личное сообщение · #3 |
|
Создано: 10 июля 2016 16:21 · Личное сообщение · #4 |
|
Создано: 10 июля 2016 20:40 · Поправил: UberM · Личное сообщение · #5 Не , в гайдах по крекингу я понял как практически использовать комманды (jmp,call,mov,add,inc) ассемблера, в ollydbg , увидел как меняются регистры , флаги. Теперь пишу программу,одну уже написал (встроил шеллкод CreateProcessA calc.exe) в putty ,с другим шеллкодом не проканало,хотя он поидее создает поток сам, теперь хочу найти универсальный способ вставки шеллкода в PE. -=AkaBOSS=- если платно проконсультируешь велком ПМ |
|
Создано: 11 июля 2016 00:11 · Личное сообщение · #6 UberM пишет: встроил шеллкод CreateProcessA calc.exe ок. я так понимаю парсером импорта тут и не пахнет - адрес CreateProcessA статично задан (в другой версии винды он будет отличаться и код работать не будет). для того чтобы выполнить свой код, нужно либо создавать тред из внешней программы, либо перехватывать управление самому. в смысле - ты ведь так или иначе патчишь память, почему бы не пропатчить еще немного? найди код, который выполняется очень часто. например - цикл сообщений окна. там последовательно крутятся вызовы функций GetMessage, TranslateMessage и DispatchMessage. тут-то и можно будет встроиться, а в процессе выполнения своего кода либо установить флаг выполненной задачи, либо пропатчить всё обратно, восстановив исходные байты. смотри только чтоб потом адрес возврата в середину восстановленной инструкции не упёрся. Добавлено спустя 24 минуты для новичка возможно будет проще начать встраивать код с помощью автоассемблера CheatEngine там можно просто писать вещи типа: Code:
на полноценное решение такой подход не тянет, но для новичка - самое оно, имхо. |
|
Создано: 11 июля 2016 09:12 · Личное сообщение · #7 -=AkaBOSS=- Спасибо тебе огромное !!! Много для себя понял в Cheat Engine Такой еще вопрос. вот встраиваю WinExec. addres 1 cmd.exe ASCII PUSH addres 1 CALL WinExec выполняется CMD.EXE Теперь хочу выполнить cmd.exe /c mkdir 123 Но после Analyze code (CTRL+A) получается такое Пробовал делать 2 push'а - не выполняется , как тут решить? |
|
Создано: 11 июля 2016 14:25 · Поправил: -=AkaBOSS=- · Личное сообщение · #8 |
|
Создано: 11 июля 2016 17:51 · Личное сообщение · #9 |
|
Создано: 11 июля 2016 18:11 · Поправил: -=AkaBOSS=- · Личное сообщение · #10 Ctrl+A не помогает? тогда правый клик - Analisys - Remove analisys from module у тебя адрес инжекта изменился кажись, и колл уходит в пустоту. есть два вида коллов: 1. имеет в качестве операнда смещение относительно следующей инструкции. это как раз тот, которым ты апишку вызываешь: Code:
чтобы каждый раз не вычислять для каждого колла относительное смещение, применяют второй тип 2. операнд - регистр, адрес или комплексное выражение указывающее на ячейку памяти, содержащую адрес для перехода. например: Code:
в этом случае достаточно вычислить адрес назначения, поместить его в регистр или переменную и обратиться к ним соответствующим образом |
|
Создано: 11 июля 2016 18:12 · Личное сообщение · #11 |
|
Создано: 11 июля 2016 18:30 · Личное сообщение · #12 |
|
Создано: 11 июля 2016 18:42 · Поправил: -=AkaBOSS=- · Личное сообщение · #13 надо узнать базовый адрес кернел32 - его hModule оттуда уже можно использовать RVA - смещение относительно базового адреса загрузки модуля например, модуль загружен по адресу 0x12340000, и мы имеем нужный RVA - 0x5678 узнали базовый адрес, прибавили RVA - получили собственно то что хотели - 0x12345678 а если при перезагрузке модуль загрузился, например, по адресу 0x9870000, мы получим адрес 0x9875678 теперь переходим к проблеме - как получить базовый адрес? в системе для этого изначально служит функция GetModuleHandle. ей передаёшь имя модуля, она возвращает его hModule = базовый адрес. вроде просто? а вот и нет. потому что функция эта тоже находится в кернел32, базы которого мы изначально не имеем. Добавлено спустя 7 минут я еще не упомянул о том, что RVA апи функции в другой версии винды будет недействителен, и единственный верный способ - это найти базу нужного модуля, и просканировать его таблицу экспорта (кури доки по структуре PE файлов, я это перепечатывать не хочу) вот так и выходит, что куда ни сунься - без базовых адресов никуда ты не уплывёшь в чужом процессе. а значит - весь план коту под хвост. или нет ну и вдогонку чтобы найти базу модулей, обычно читают списки модулей в PEB.LoaderData. это я так, чтоб было о чём гугл спросить =) можно еще раскручивать цепочку SEH, поднимаясь до самого верха. принято считать, что самый крайний обработчик исключений принадлежит кернел32. почитай а на этапе разборок с TEB-PEB очень поможет |
|
Создано: 11 июля 2016 19:14 · Личное сообщение · #14 |
|
Создано: 13 июля 2016 13:20 · Личное сообщение · #15 |
eXeL@B —› Вопросы новичков —› Ollydbg create thread |