如何修改函数返回地址?

xliu2019 2003-08-29 11:32:18
void main()
{
int i=3;
fun();
i=2;
printf("%d",i);
}

void fun()
{
}
如何构造fun,使main不执行“i=2”,
最好不用汇编
...全文
144 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jakeye 2003-08-29
  • 打赏
  • 举报
回复
学习ing
Tinybaby 2003-08-29
  • 打赏
  • 举报
回复
明白你的意思,但你拿出来的例子好像不是咱们好
建议看看一些API Hook的例子
那方面的内容非常丰富
idontlikenickname 2003-08-29
  • 打赏
  • 举报
回复


hoho~又是这个问题~~

liao2001 2003-08-29
  • 打赏
  • 举报
回复
想干什么?
想搞病毒?我日!
先看看汇编的栈和函数调用时push的顺序,然后再利用指针偏移把返回地址的部分+n。。。
seaquester 2003-08-29
  • 打赏
  • 举报
回复
调用函数时会将返回地址压入堆栈的, 在fun()中修改堆栈中的返回地址可以达到这个目的.
sevecol 2003-08-29
  • 打赏
  • 举报
回复
exit()??
oopig 2003-08-29
  • 打赏
  • 举报
回复
为什么不用fun返回值作为执行路径选择的条件?
sxxny 2003-08-29
  • 打赏
  • 举报
回复
void main()
{
int taraddress = 0x33333333//改成你想要fun函数返回后执行的语句的地址
int i=3;
_asm push taraddress;
fun();
i=2;
printf("%d",i);
}

void fun()
{
_asm pop eax;
}
sxxny 2003-08-29
  • 打赏
  • 举报
回复
void main()
{
int taraddress = 0x33333333//改成你想要fun函数返回后执行的语句的地址
int i=3;
_asm pusg taraddress;
fun();
i=2;
printf("%d",i);
}

void fun()
{
_asm pop eax;
}

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧