Подскажите пожалуйста, знающие люди. Это совершенно новая для меня проблема. Допустим мой код весит 10 килобайт, нашел свободное место в файле, записал 5, остальные 5 записал в другое место, судя по многочисленным статьям между этими частями надо сделать безусловный переход jmp. С ассемблером я не знаком, поэтому я в тупике. Судя по всему аналог jmp в C++ это оператор goto, но я не понимаю как им воспользоваться.
Ранг: 16.3 (новичок), 2thx Активность: 0.15↗0.22 Статус: Участник
Создано: 15 мая 2017 20:49 · Поправил: zombi-vadim · Личное сообщение · #3
Jaa пишет: Очередной бред. Я это понимаю. Можно же хотя бы приблизительно помочь. Я же сказал что с ассемблером не знаком потому мне совсем не понятно что делать.
Ранг: 53.9 (постоянный), 33thx Активность: 0.05↘0 Статус: Участник
Создано: 15 мая 2017 20:58 · Поправил: deniskore · Личное сообщение · #4
Судя по всему у вас в голове каша Нужно определиться вы собираетесь патчить бинарник (скомпиленный ехешник)? Если да, тогда причем здесь оператор goto из Си? Если определились с тем, что вам нужно патчить бинарник, находите место, которое вы хотите запатчить, предположим это код возврата из определенной функции, вы вставляете безусловный переход на это место(jmp) c адресом на свой участок кода, где обрабатываете "ситуацию" нужным образом.
Если вам нужно запатчить программу в памяти: 1) Открываете нужный процесс 2) Находите нужное место для патчинга через сигнатурное сканирование (byte pattern) 3) Выделяете память в открытом процессе 4) Записываете в выделенную память свой код 5) Вставляете jmp в адрес из пункта 2 на свой участок памяти из пункта 3
Если не очень понятно и нужны примеры, достаточно немного погуглить, примеров полно.
Ранг: 16.3 (новичок), 2thx Активность: 0.15↗0.22 Статус: Участник
Создано: 15 мая 2017 21:10 · Поправил: zombi-vadim · Личное сообщение · #6
deniskore пишет:
Создано: 15 мая 2017 20:58 · Поправил: deniskore Цитата · Личное сообщение · Стереть #4
Судя по всему у вас в голове каша Вы правы! Но я пока даже не пытаюсь пропатчить бинарик. Я пытаюсь разделить свою программу внедренную в посторонний файл, на две части (записанную в разных местах) с сохранением работоспособности.
sefkrd пишет: При чём вообще C++ Ну мой тест написан на C++.. Впихиваем его в свободное место в файле изменяем точку входа и все работает. Если места недостаточно , то нужно его записать в разные свободные места путем разделения.
sendersu пишет: учите основу Как обидно, я думал что хотя бы приблизительно понимаю что делаю, оказывается нет Можете хотя бы подсказать основу, которую мне нужно учить..
Добавлено спустя 3 минуты red0x пишет: Мозген не арбайтен Если так, то я тут не причем.
zombi-vadim, ты пришел сюда с вопросами, а не я, но при этом не смог сконструировать правильно вопрос, а уже огрызаешься. Если ты читаешь про технику inline патчей, то наверняка там же и написан инструмент для работы, а твой вопрос определенно мешанина из понятий, которую никто тут не понял.
zombi-vadim пишет: С ассемблером я не знаком zombi-vadim пишет: ссылку на статью, которая объяснит мне мат часть Я предположу, что теперь вам понятно что в сети искать..
zombi-vadim пишет: Судя по всему аналог jmp в C++ это оператор goto, но я не понимаю как им воспользоваться. Забудь про это, goto - это шлак. Начинайте учиться правильно - --> Link <--
Добавлено спустя 2 минуты zombi-vadim пишет: С ассемблером я не знаком, поэтому я в тупике Очень зря, ссылка выше.
v00doo пишет: Если ты читаешь про технику inline патчей Нет не читал. Даже не понимаю почему простой вопрос поставил всех в тупик. sefkrd и red0x явно вообще не понимают о чем я пишу.
dosprog пишет: Jmp-переход средствами C++ - это goto. Тут нечего и гадать. Вот так. Вдруг появился умный человек который понял мой вопрос. Так что же делать в моем вопросе, изучать ассемблер или....
если код на графы разложить то можно пересобрать и сделать переход через джамп или гото. Гото не любят быдлокодеры, которых васи в универе поучали что гото это плохо, хоть весь код это графы и ветвления через джампы условные и безусловные
Продолжаем: zombi-vadim пишет: оператор goto, но я не понимаю как им воспользоваться С ассемблером я не знаком Вы хоть один яп знаете..?? Я вам в другом вашем топе уже писал, повторюсь: "вам лучше обратиться на киберфорум, стаковер, etc.."
скачай уже маны, мой маленький любитель лошадок. shellcoder's handbook malware researcher's\practical\handbook тысячи их в гугле и пройдись по статьям на профильных ресурсах, но с такими задатками в новых OS ловить тебе нечего.