Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
L2 PTS
#31
Окей, вот такая штука:
[Изображение: b3681a10f4268d699e2421aa4fbc.png]
Это и есть пролог. Вообще рекомендую прочитать про calling convention. Многое станет ясно.
Вот ты это заменяешь на jmp addr.В конце выполнения ты можешь сделать jmp в то место откуда пришел и программа продолжит выполнение. Или же сделать ret и она вернет значение.
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ
#32
Zubastic Написал:Окей, вот такая штука:
[Изображение: b3681a10f4268d699e2421aa4fbc.png]
Это и есть пролог. Вообще рекомендую прочитать про calling convention. Многое станет ясно.
Вот ты это заменяешь на jmp addr.В конце выполнения ты можешь сделать jmp в то место откуда пришел и программа продолжит выполнение. Или же сделать ret и она вернет значение.

спасибо, про пролог теперь все ясноSmile
однако остались вопросы про
Zubastic Написал:В конце выполнения ты можешь сделать jmp в то место откуда пришел и программа продолжит выполнение. Или же сделать ret и она вернет значение.
вот тут можете разъяснить по подробнее?:redlol:
Ответ
#33
Я думаю стоит начать с литературы, а то кол-во вопросов так и будет увеличиваться.
Ответ
#34
Emperor Написал:Я думаю стоит начать с литературы, а то кол-во вопросов так и будет увеличиваться.

ну вот если вопросы у меня так и будут расти то обязательно займусь литературойSmile
что нибудь посоветовать можете из книг?
Ответ
#35
Sojang, Крупника\Юрова можно почитать. У них там вроде и учебники есть для вышек и простые книги для масс.
С забугорными не знаком.
Ответ
#36
Sojang Написал:спасибо, про пролог теперь все ясноSmile
однако остались вопросы про
вот тут можете разъяснить по подробнее?:redlol:
Допустим ты увеличиваешь функционал.
Ты берешь 5 байт и копируешь их к себе. Затем вместо 5 байт пишешь jmp в свою функцию. Там делаешь все, что нужно, после этого вызываешь 5 байт, которые перенес после чего делаешь jmp обратно (на тот же адрес который ты заменил +5 байт).
http://coderx.ru/showthread.php?t=3609

Вот почитай. Вообще зря ты на х64 полез, не разобравшись с х32.
Я могу ошибаться, более опытные форумчане думаю поправят.
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ
#37
Zubastic Написал:Допустим ты увеличиваешь функционал.
Ты берешь 5 байт и копируешь их к себе. Затем вместо 5 байт пишешь jmp в свою функцию. Там делаешь все, что нужно, после этого вызываешь 5 байт, которые перенес после чего делаешь jmp обратно (на тот же адрес который ты заменил +5 байт).
http://coderx.ru/showthread.php?t=3609

Вот почитай. Вообще зря ты на х64 полез, не разобравшись с х32.
Я могу ошибаться, более опытные форумчане думаю поправят.

Так в 64 же нету __asm вставок. Как тогда сделать jmp обратно то?Sad
Ответ
#38
Ну я уверен, что есть более легальные способы, вот мои идеи:
делаешь dummy функцию, например с мессадж боксом и вместо ее пишешь jump
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ
#39
Zubastic Написал:Ну я уверен, что есть более легальные способы, вот мои идеи:
делаешь dummy функцию, например с мессадж боксом и вместо ее пишешь jump

да я уже разобрался.
спасибо в любом случаеSmile
Ответ
#40
появилась новая проблема Big Grin
Меняю начало функции на свой код(mov rax, адрес jmp rax) и все окей функция из моей длл вызывается, но как только я пытаюсь выполнить свой asm код(нужен что бы продолжить работу программы) приложение зависает и закрывается..
Из за чего это происходит?(
Немного инфы из Dump File
Оригинал код
Мой код
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)