开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5554|回复: 33
收起左侧

[易源码分享] 三种思路 动态置入代码

[复制链接]
结帖率:96% (24/25)
发表于 2022-6-6 13:53:22 | 显示全部楼层 |阅读模式   保留地址
分享源码
界面截图: -
是否带模块: 调用了模块
备注说明: -
@FWS569 讨论得出的方法,其中方法1,2的原作者是此人

众所周知 置入代码() 中只能写字节集常量不能写变量,但是仍然有办法支持动态置入代码

第一种思路是搜索并修改源码内的常量,如图,搜索内存把{ 114, 51, 4, 19, 19, 81, 0 }替换成需要动态置入的代码

1.png


第二种思路是把代码写到子程序然后调用子程序
2.png

第三种思路与第二种类似,源码来自
https://bbs.125.la/forum.php?mod=viewthread&tid=14701023
3.png

其中方法 二/三 和直接外部调用的效果是一模一样的

动态置入代码.zip (347.53 KB, 下载次数: 76)

点评

114514?!(警觉)   河南省焦作市  发表于 2024-1-28 21:38

评分

参与人数 4好评 +4 精币 +9 收起 理由
易语言资源网 + 1 + 3 支持开源~!感谢分享
小翁哥哥 + 1 + 2 支持开源~!感谢分享
Ls60 + 1 + 3 共同努力,共同进步
wuqingg + 1 + 1 感谢分享,很给力!~

查看全部评分


本帖被以下淘专辑推荐:

结帖率:100% (8/8)

签到天数: 14 天

发表于 2022-6-6 16:04:00 | 显示全部楼层   广西壮族自治区崇左市
动态置入代码普遍都是call一个函数来实现
易语言的置入代码是在编译的时候直接把参数的字节集编译出去当成机器码执行

假设有这一段代码, 假设信息框编译后的机器码是 10,20,30
信息框(...)
置入/动态置入 代码({1,2,3})
信息框()

那易语言编译后就是 10,20,30,1,2,3,10,20,30
他是直接把置入代码编译进去了

动态置入的话一般就是
10,20,30,  这个是信息框
puch {1,2,3}的地址,
call 动态置入代码,

10,20,30  这个是后面的信息框

动态置入编译后大概就是这样的

这样的话一般会有两种实现方法
1. call一个函数来执行, 这个方式容易实现, 但是call是会改变寄存器的, 所以执行那些需要用ebp,esp等这些寄存器的时候, 这种方法就不好实现了
2. jmp长跳转, 在动态置入代码的时候计算出要返回的地址, 然后把动态执行机器码拼接一下, 先执行动态机器码, 然后跳转回原来的地方, 最后jmp跳转过去就行了

第一种方法是可以直接封装成一个命令来使用, 优点是方便携带, 缺点是会影响寄存器, 实际上也可以在调用函数里处理一下寄存器, 这样也可以实现不影响
第二种方法不能封装成一个命令, 得在调用的地方处理返回地址, 然后用易语言的置入代码jmp跳过去, 好像没啥优点, 缺点是很繁琐, 还不能封装

还是用上面的代码来做实验,
方法1编译后就是上面说的动态置入
方法2编译后大概是这样
10,20,30, 信息框
jmp {1,2,3}
jmp 下一句10,20,30的地方
10,20,30

点评

call方法不错   广东省江门市  发表于 2023-8-17 16:44

评分

参与人数 2好评 +2 精币 +6 收起 理由
冰棍好烫啊 + 1 + 3 新技能已get√
Ls60 + 1 + 3 共同努力,共同进步

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2024-6-22 09:41:38 | 显示全部楼层   江苏省苏州市
回复 支持 反对

使用道具 举报

发表于 2024-3-26 18:51:28 | 显示全部楼层   江西省宜春市
        支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2024-2-2 14:48:16 | 显示全部楼层   浙江省杭州市
感谢分享!!!!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 19 天

发表于 2024-1-21 09:00:00 | 显示全部楼层   山东省淄博市
感谢分享,学习了
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 1 天

发表于 2022-11-2 22:37:28 | 显示全部楼层   四川省泸州市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:29% (6/21)

签到天数: 2 天

发表于 2022-10-15 19:08:08 | 显示全部楼层   湖南省邵阳市
支持开源精神
回复 支持 反对

使用道具 举报

发表于 2022-8-11 17:52:33 | 显示全部楼层   江苏省连云港市
感谢发布作品,精易因你更精彩!
回复 支持 反对

使用道具 举报

发表于 2022-7-30 21:46:28 | 显示全部楼层   广东省广州市
666支持开源精神
回复 支持 反对

使用道具 举报

发表于 2022-7-24 21:37:47 | 显示全部楼层   河北省邯郸市
wwwwwwwwwwwwwwwwww
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表