紧急求助:如何在应用程序运行的时候给程序打补丁?

长山互联网未来探索 2010-07-14 09:09:24
环境:Linux AS5.0
开发语言:c/c++

需求:在应用程序运行的时候,希望能够不停止应用程序,而对应用程序打补丁,从而改变应用程序的行为。
印象当中VxWorks系统是可以的,但是Linux下查了一天,没有找到。diff和patch是对源代码打补丁的,实现不了这个功能。

那位高手用过,指点一下。谢谢!!!
...全文
160 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyworth98 2010-07-15
  • 打赏
  • 举报
回复
晕,没仔细看,原来是在linux下,不知道有没有实现上面的机制,如果实现了,就可以一样处理
skyworth98 2010-07-15
  • 打赏
  • 举报
回复
一般而言,每个导出函数开始处的就是两个字节的 MOV EDI, EDI指令,之前紧接着5条NOP指令,也就是下面这种形式。




NOP
NOP
NOP
NOP
NOP

_ProcEntry:
MOV EDI, EDI



而实现hot patching只需要把MOV EDI, EDI修改为一条短跳转指令(一条短跳转指令恰好两个字节),把MOV EDI, EDI上面的五个NOP修改为一条长跳转指令(一条长跳转指令恰好五个字节),短跳转指令跳到长跳转指令上,长跳转指令跳到修改后的函数体上。
james_hw 2010-07-15
  • 打赏
  • 举报
回复
没这么用过,可能可以用动态加载的方式实现。
algorithms_memo 2010-07-14
  • 打赏
  • 举报
回复
按照插件方式实现.
BlueMap 2010-07-14
  • 打赏
  • 举报
回复
思考过这个问题,学习。。。
  • 打赏
  • 举报
回复
可以通过读配置文件的方式,修改配置文件,代码内部定期读取文件
山书生 2010-07-14
  • 打赏
  • 举报
回复
马克…… ^.^
G_Spider 2010-07-14
  • 打赏
  • 举报
回复
不停止也要挂起部分线程,通过写内存,完成补定,再唤醒线程.
赵4老师 2010-07-14
  • 打赏
  • 举报
回复
虚拟机和脚本化
adamwyb 2010-07-14
  • 打赏
  • 举报
回复
可以考虑使用流程文件,更新流程文件改变程序的行为。
Lonelywolf1899 2010-07-14
  • 打赏
  • 举报
回复
主程序和子程序都用exe, 调用哦

子程序的exe可以更新

69,373

社区成员

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

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