169 похожих чатов

Всем привет. мне надо в программу, для которой у меня

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

31 ответов

11 просмотров

не "передерешь" )

Реальный, но так делать не стоит. И, насколько я знаю, тут обсуждение вирусов запрещено

Entusiast
Реальный, но так делать не стоит. И, насколько я з...

не передерет он, там адреса будут другие

Entusiast
gcc -fPIC

и каким образом он там например адреса winapi генерирует в pic ? например WinExec ?

Rusty Shackleford
и каким образом он там например адреса winapi гене...

Ну почитай, я откуда знаю)) Я просто загуглил - "pic code on C" И выдало куча результатов Это в принципе возможно, здесь ничего сложного нет. Но делать так лучше не стоит

Entusiast
Реальный, но так делать не стоит. И, насколько я з...

А чего сразу вирусы-то? Я иногда так делаю патчи, когда пересобирать дольше.

s54820
А чего сразу вирусы-то? Я иногда так делаю патчи, ...

Ну поневоле запускать программу левую по запуску это несправедливо к пользователю, я бы обиделся

Entusiast
Ну поневоле запускать программу левую по запуску э...

Какой-нибудь древней игре оконный режим или запуск на дополнительном мониторе, или ещё какой конфиг пофиксить таким способом — самое то. Но я бы сделал так: добавляем в импорты целевого приложения свою длл, она грузится, а там уже можно извращаться как угодно. Может быть, и программу не придётся запускать, всё из длл делать.

s54820
Какой-нибудь древней игре оконный режим или запуск...

можно проще даже, посмотреть какие в принципе грузит длл это приложение и сделать dll хайджекинг, если есть возможность рядом с софтом длл свою разместить, ну и если есть условия для хайджекинга

Vladimir-Prog Автор вопроса
s54820
Какой-нибудь древней игре оконный режим или запуск...

можно поподробнее или ссылки на мануал какой-нить толковый. через dll думаю тоже подошло бы

Vladimir Prog
да, есть такая возможность

https://attack.mitre.org/techniques/T1574/001/

Vladimir Prog
можно поподробнее или ссылки на мануал какой-нить ...

Одну кнопочку нажать, и твоя DLL в импорт-таблице CFF Explorer

Rusty Shackleford
так испортишь подпись

А что за подпись, кстати? Чексумма чтоль

Entusiast
А что за подпись, кстати? Чексумма чтоль

ну на основе хешсуммы и сретификаты от доверенных центров в файл встраиваются, в детали сам не вникал

Vladimir Prog
screenshot чтото не хочет((

В export таблицу функцию свою добавь А то что ему импортировать? Нужна функция какая-то

Vladimir-Prog Автор вопроса
Entusiast
В export таблицу функцию свою добавь А то что ему...

я вроде бы понял - моя dll не экспортирует функций, поэтому надо в нее их добавить

Vladimir Prog
я вроде бы понял - моя dll не экспортирует функций...

Да Потом добавляешь в CFF Explorer свою DLL, выбираешь свою функцию, и нажимаешь "Rebuilt import-table" Насколько я знаю, не важно - вызывается функция, или нет. Всё равно твою DLL подгрузят, и ты сможешь выполнить свой DllMain

Vladimir-Prog Автор вопроса
Entusiast
Да Потом добавляешь в CFF Explorer свою DLL, выбир...

если нужная мне dll не имеет экспортных функций, то я так понимаю опять же мне придется написать свою dll, в которой будет экспортная функция, которая будет вызывать нужную мне dll или даже тупо нужный exe

Vladimir Prog
если нужная мне dll не имеет экспортных функций, т...

Тебе легче уже внедрить вызов LoadLibraryA Это легче лёгкого

Vladimir-Prog Автор вопроса
Entusiast
Тебе легче уже внедрить вызов LoadLibraryA Это лег...

push 0xDEADBEEF ; address of library name mov eax, 0xDEADBEEF ; address of LoadLibraryA call eax ; call LoadLibraryA такого типа?

В общем, если без заморочек, максимально быстро, и если ты не пишешь вирус, а чисто для себя хочешь тогда вот: 1. Открываешь у себя свою программу в x64dbg. Заходишь в отладочные символы, находишь kernel32.dll слева, тыкаешь, в поиске справа пишешь "LoadLibraryA", и находишь адрес. Копируешь его. 2. Доходишь до точки останова на точке входа (Entrypoint). Листаешь вниз, и ищешь code cave (много нулей), далеко лучше не листай, много места не нужно. Когда нашёл - выделяешь некоторую область, и нажимаешь Ctrl + E. Далее в окошке сверху "ASCII" пишешь название своей DLL. К примеру, "kernel32", .dll не нужно, LoadLibraryA этого не требует, а ты места сэкономишь Потом копируешь адрес начала названия твоей DLL, и ещё пропустив пару нулей, пишешь код: push eax push 0xАдресНазванияТвоейDll call 0xСтатическийАдресLoadLibraryA pop eax Далее переходишь на точку входа, и и копируешь оттуда инструкцию (или несколько), чтобы вместо этих инструкций всунуть хук на свой внедрённый код: call 0xАдресНаВнедрённыйКод ; Это должно стоять ровно на точке входа ... Потом в конце своего шеллкода вставляешь затёртые инструкции: push eax push 0xАдресНазванияТвоейDll call 0xСтатическийАдресLoadLibraryA pop eax ; тут затёртые инструкции ret Этот способ привязан к версии сборки Windows, потому что с каждым релизом адрес в kernel32.dll может сдвинутся, если туда что-то добавят. Чтобы сделать независимо от версии сборки нужно дописать больше кода, где тебе нужно будет брать адрес на kernel32.dll из PEB, и по пройтись по его PE export-table в поисках VA на LoadLibraryA Могу тоже это скинуть, если тебе нужен такой вариант

Vladimir Prog
push 0xDEADBEEF ; address of library name mov...

Ой, всё мне лень переписывать)) Тебе легче найти где-нибудь статейку по PIC

Vladimir-Prog Автор вопроса
Entusiast
Ой, всё мне лень переписывать)) Тебе легче найти г...

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

Vladimir Prog
вроде бы все понятно, я завтра буду пробовать. спа...

Давненько я шеллкоды не писал... Короче, вот тебе шеллкод на FASM. Делаешь тоже самое, что я писал до этого (в удалённых сообщениях): Останавливаешься на точке входа, копируешь инструкцию, прописываешь в шеллкоде в конце её, компилируешь шеллкод, вставляешь его куда-то далеко, где есть code cave (область памяти с нулями) (вставить можно, скопировав байты из бинарника, и потом CTRL + E, и вставляешь шеллкод), потом вместо инструкции на точке входа пишешь call 0xАдресГдеТвойШеллкод После этого, когда ты будешь запускать программу - с ней автоматически будет подгружаться .dll. Но это способ, если у тебя нет экспорт-таблице в .dll В имени dll дописывать .dll не нужно. Сэкономишь байты. Пытался оптимизировать под размер

Entusiast
Давненько я шеллкоды не писал... Короче, вот тебе ...

Кстати, можно тоже самое сделать и с запуском программ (чтоб при запуске одной, запускалась другая). Там даже менять много не нужно - пару строчек

Vladimir-Prog Автор вопроса

Похожие вопросы

Обсуждают сегодня

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Всем привет! Кто нибудь парсил в ручную JSON без библиотек и фреймворков? Есть может ссылки на оптимальный алгоритмы работы с текстом и примеры таких парсеров?
Lem
27
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
Есть сайт. Там была древняя версия эво. Стоял плагин, который каждый коммент в Jot делал отдельной страницей. После обновления все слетело, теперь старница открывается отдельн...
Artem
1
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Приветствую всех. Хочу начать изучать код для программирования микроконтроллеров и не пойму с чего начать. То ли с Си, то ли с плюсов. Чем языки вообще различаются. С чего мож...
Андрей
7
Карта сайта