Сейчас на форуме: tyns777, cppasm (+7 невидимых)

 eXeL@B —› Вопросы новичков —› jmp переход средствами C++
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 15 мая 2017 20:39
· Личное сообщение · #1

Подскажите пожалуйста, знающие люди. Это совершенно новая для меня проблема. Допустим мой код весит 10 килобайт, нашел свободное место в файле, записал 5, остальные 5 записал в другое место, судя по многочисленным статьям между этими частями надо сделать безусловный переход jmp. С ассемблером я не знаком, поэтому я в тупике. Судя по всему аналог jmp в C++ это оператор goto, но я не понимаю как им воспользоваться.



Ранг: 134.1 (ветеран), 246thx
Активность: 0.220.1
Статус: Участник
realist

Создано: 15 мая 2017 20:46
· Личное сообщение · #2

Очередной бред. Учи матчасть, потом не будешь таких вопросов задавать.



Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 15 мая 2017 20:49 · Поправил: zombi-vadim
· Личное сообщение · #3

Jaa пишет:
Очередной бред.
Я это понимаю. Можно же хотя бы приблизительно помочь. Я же сказал что с ассемблером не знаком потому мне совсем не понятно что делать.



Ранг: 53.9 (постоянный), 33thx
Активность: 0.050
Статус: Участник

Создано: 15 мая 2017 20:58 · Поправил: deniskore
· Личное сообщение · #4

Судя по всему у вас в голове каша
Нужно определиться вы собираетесь патчить бинарник (скомпиленный ехешник)? Если да, тогда причем здесь оператор goto из Си?
Если определились с тем, что вам нужно патчить бинарник, находите место, которое вы хотите запатчить, предположим это код возврата из определенной функции, вы вставляете безусловный переход на это место(jmp) c адресом на свой участок кода, где обрабатываете "ситуацию" нужным образом.

Если вам нужно запатчить программу в памяти:
1) Открываете нужный процесс
2) Находите нужное место для патчинга через сигнатурное сканирование (byte pattern)
3) Выделяете память в открытом процессе
4) Записываете в выделенную память свой код
5) Вставляете jmp в адрес из пункта 2 на свой участок памяти из пункта 3

Если не очень понятно и нужны примеры, достаточно немного погуглить, примеров полно.




Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 15 мая 2017 21:00
· Личное сообщение · #5

zombi-vadim
Какой код? &^%$.. В каком файле? *&^%.. Вы себя слышите..?



Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 15 мая 2017 21:10 · Поправил: zombi-vadim
· Личное сообщение · #6

deniskore пишет:

Создано: 15 мая 2017 20:58 · Поправил: deniskore
Цитата · Личное сообщение · Стереть #4

Судя по всему у вас в голове каша
Вы правы! Но я пока даже не пытаюсь пропатчить бинарик. Я пытаюсь разделить свою программу внедренную в посторонний файл, на две части (записанную в разных местах) с сохранением работоспособности.



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 15 мая 2017 21:31
· Личное сообщение · #7

zombi-vadim
вам еще рано решать такие задачи
учите основу




Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 15 мая 2017 21:33
· Личное сообщение · #8

zombi-vadim пишет:
не пытаюсь пропатчить бинарик. Я пытаюсь разделить свою программу внедренную в посторонний файл

Это как..? При чём вообще C++..



Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 15 мая 2017 21:44
· Личное сообщение · #9

sefkrd пишет:
При чём вообще C++
Ну мой тест написан на C++.. Впихиваем его в свободное место в файле изменяем точку входа и все работает. Если места недостаточно , то нужно его записать в разные свободные места путем разделения.



Ранг: 3.5 (гость), 1thx
Активность: 00.01
Статус: Участник

Создано: 15 мая 2017 21:49
· Личное сообщение · #10

zombi-vadim, что за бред вы несете ? Какое разделение ? Какие свободные места ? Мозген не арбайтен.



Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 15 мая 2017 21:50
· Личное сообщение · #11

sendersu пишет:
учите основу
Как обидно, я думал что хотя бы приблизительно понимаю что делаю, оказывается нет Можете хотя бы подсказать основу, которую мне нужно учить..

Добавлено спустя 3 минуты
red0x пишет:
Мозген не арбайтен
Если так, то я тут не причем.



Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 15 мая 2017 21:54
· Личное сообщение · #12

zombi-vadim, а что ты читаешь? Покажи материал, там видно будет.



Ранг: 3.5 (гость), 1thx
Активность: 00.01
Статус: Участник

Создано: 15 мая 2017 21:54
· Личное сообщение · #13

zombi-vadim, для начала найдите 10 отличий С от С++ и научитесь использовать отладчик Visual Studio



Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 15 мая 2017 22:09 · Поправил: zombi-vadim
· Личное сообщение · #14

v00dooИзучаю формат PE из статей в интернете. А вы насколько я помню хранитель запрещенных знаний?




Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 15 мая 2017 22:16
· Личное сообщение · #15

zombi-vadim пишет:
Впихиваем его в свободное место в файле

Как?



Ранг: 3.5 (гость), 1thx
Активность: 00.01
Статус: Участник

Создано: 15 мая 2017 22:16
· Личное сообщение · #16

zombi-vadim, если изучаете формат PE, для чего вам C/C++ ? Я до сих пор не уловил той самой ниточки



Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 15 мая 2017 22:19
· Личное сообщение · #17

Я был бы очень благодарен за ссылку на статью, которая объяснит мне мат часть данного вопроса больше мне уже и не нужно ничего.



Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 15 мая 2017 22:23
· Личное сообщение · #18

zombi-vadim пишет:
мат часть данного вопроса

Если этот вопрос задать корректно, он уже будет содержать практически весь ответ



Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

Создано: 15 мая 2017 22:24
· Личное сообщение · #19

zombi-vadim
Мы рады тебе помочь, но просто не можем понять, что нужно сделать. Я думаю не только я не понял, вообще что нужно сделать.



Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 15 мая 2017 22:25
· Личное сообщение · #20

zombi-vadim, ты пришел сюда с вопросами, а не я, но при этом не смог сконструировать правильно вопрос, а уже огрызаешься.
Если ты читаешь про технику inline патчей, то наверняка там же и написан инструмент для работы, а твой вопрос определенно мешанина из понятий, которую никто тут не понял.




Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 15 мая 2017 22:26
· Личное сообщение · #21

zombi-vadim пишет:
С ассемблером я не знаком

zombi-vadim пишет:
ссылку на статью, которая объяснит мне мат часть

Я предположу, что теперь вам понятно что в сети искать..

| Сообщение посчитали полезным: v00doo


Ранг: 59.5 (постоянный), 326thx
Активность: 0.170.76
Статус: Участник

Создано: 15 мая 2017 22:28
· Личное сообщение · #22

zombi-vadim пишет:
Судя по всему аналог jmp в C++ это оператор goto, но я не понимаю как им воспользоваться.

Забудь про это, goto - это шлак.
Начинайте учиться правильно - --> Link <--

Добавлено спустя 2 минуты
zombi-vadim пишет:
С ассемблером я не знаком, поэтому я в тупике

Очень зря, ссылка выше.

| Сообщение посчитали полезным: sefkrd, zombi-vadim

Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 15 мая 2017 22:43
· Личное сообщение · #23

v00doo пишет:
Если ты читаешь про технику inline патчей
Нет не читал. Даже не понимаю почему простой вопрос поставил всех в тупик. sefkrd и red0x явно вообще не понимают о чем я пишу.

Добавлено спустя 5 минут
yashechkaСпасибо!!




Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 15 мая 2017 23:01
· Личное сообщение · #24

sefkrd и red0x явно вообще не понимают о чем я пишу.
Ага-ага..



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 15 мая 2017 23:20 · Поправил: dosprog
· Личное сообщение · #25

Jmp-переход средствами C++ - это goto. Тут нечего и гадать.



Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 15 мая 2017 23:32
· Личное сообщение · #26

dosprog пишет:
Jmp-переход средствами C++ - это goto. Тут нечего и гадать.
Вот так. Вдруг появился умный человек который понял мой вопрос. Так что же делать в моем вопросе, изучать ассемблер или....



Ранг: 1.4 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 15 мая 2017 23:47
· Личное сообщение · #27

если код на графы разложить то можно пересобрать и сделать переход через джамп или гото. Гото не любят быдлокодеры, которых васи в универе поучали что гото это плохо, хоть весь код это графы и ветвления через джампы условные и безусловные




Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 15 мая 2017 23:55
· Личное сообщение · #28

Продолжаем:
zombi-vadim пишет:
оператор goto, но я не понимаю как им воспользоваться

С ассемблером я не знаком
Вы хоть один яп знаете..??
Я вам в другом вашем топе уже писал, повторюсь: "вам лучше обратиться на киберфорум, стаковер, etc.."



Ранг: 10.7 (новичок)
Активность: 0.020
Статус: Участник

Создано: 16 мая 2017 00:04
· Личное сообщение · #29

zombi-vadim пишет:
Так что же делать в моем вопросе, изучать ассемблер или....


А как может быть иначе? Конечно изучать ассемблер. Или Вы решили, что Вас его здесь научат в нескольких постах?



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 16 мая 2017 00:26
· Личное сообщение · #30

скачай уже маны, мой маленький любитель лошадок.
shellcoder's handbook
malware researcher's\practical\handbook
тысячи их в гугле и пройдись по статьям на профильных ресурсах, но с такими задатками в новых OS ловить тебе нечего.


. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› jmp переход средствами C++
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати