吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

楼主: 千里冰封

[原创逆向图文] 易语言信息框+基础逆向+写call

  [复制链接]
1655839652 发表于 2017-2-5 05:24 来自手机端 | 显示全部楼层

感谢楼主分享,很详细
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
雪碧cc 发表于 2017-2-5 11:39 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
万能的群主 发表于 2017-2-5 12:35 | 显示全部楼层

确实让我眼前一亮,吾爱汇编论坛可以学习很多
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
haier8917 发表于 2017-2-5 13:18 | 显示全部楼层

Shy 发表于 2016-12-14 13:10
不过还是问一下 retn 4表示有1个参数是为什么?4在16进制和10进制中也是4啊?那么原则上来说是有4个参的 ...

他在个RETN 4的意思其实真真的涵义应该是这样的,返回并释放堆栈空间:::你在对程序仔细研究的时候,便可以发现如下的现象,有些程序在进CALL的时候首先会对参数进行PUSH的,对吗,此时的PUSH是把参数压入到堆栈,并调用后面的CALL进行操作(比如计算,比较)对吧,当这些操作完后程序就会返回啦,如果这个参数在下个CALL里没用,那么,我们就要释放掉压入的参数在堆栈的空间,对吧,此时就用RETN n(注意,这个n其实表示释放多少个字节的堆栈空间(1个参数占4字节)),当然,也不用retn n,有些程序是在CALL前PUSH把参数压入堆栈,CALL内直接返回,出CALL后用ESP+n这样的方式进行释放空间的。。。。。他这样做的目的只有一个,堆栈平衡原则,另外你的这个问题retn 4表示有1个参数是为什么,我说下吧,因为在程序中,1个参数占4个字节,比如PUSH 12345678这个命令,你这样看push 压栈命令,12345678就是参数,我们把它分成字节的形式是这样的12 34 56 78,对吧,4个字节,也就是说1个参数4个字节,所以retn 4就是返回并释放4个字节(也就是返回并释放1个参数的堆栈空间),教程上说的就是返回1个参数,同理,你在某些程序上看到的retn 1C,1C换成10进制就是16+12=28,28/4=7,返回并释放28个字节(返回并释放7个参数的堆栈空间)

评分

参与人数 1HB +1 THX +1 收起 理由
Shy + 1 + 1 好深的理解,感谢感谢

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
haier8917 发表于 2017-2-5 13:49 | 显示全部楼层

千里冰封 发表于 2016-12-14 18:34
我已经在新的回复可见中,加入了图文解释,请查看
同时想请教,这次写出来的易语言程序,除了 ...

你可以这样操作:::OD加载完程序后,CTRL+G,输入401000,然后右键查找,二进制字串,输入FF55FC5F5E回车,一般就可以找到他的按钮事件特征码
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
haier8917 发表于 2017-2-5 13:55 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 千里冰封 发表于 2017-2-5 13:58 | 显示全部楼层

haier8917 发表于 2017-2-5 13:18
他在个RETN 4的意思其实真真的涵义应该是这样的,返回并释放堆栈空间:::你在对程序仔细研究的时候,便 ...

讲的很好
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 千里冰封 发表于 2017-2-5 14:00 | 显示全部楼层

haier8917 发表于 2017-2-5 13:49
你可以这样操作:::OD加载完程序后,CTRL+G,输入401000,然后右键查找,二进制字串,输入FF55FC5F5E回 ...

感谢赐教
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
gudoxxq 发表于 2017-2-5 14:00 | 显示全部楼层

讲的真好。谢谢!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
haier8917 发表于 2017-2-5 14:14 | 显示全部楼层

千里冰封 发表于 2016-12-14 19:41
因为我在写易语言程序的时候,已经写出来了。仔细看一下,
子程序1,是没有参数的
子程序2,有1个参数
...

这个RETN后面的数值不是与子程序所挂钩的,而是与进子程序之前的PUSH参数的个数所挂钩,比如在某个CALL进行操作(比如运算,比较)他需要两个参数,那么他就要在进CALL之前先push两个参数,在CALL里操作完准备返回的时候,这里有如下几种情况:1.之前压入的参数在后面的CALL没有作用,那么就可以在这里用retn 0x8(返回并释放8个字节(返回并释放两个参数)),也就是说带两个参数返回,如果这里直接retn,那么出CALL后就要使用esp+8,来释放掉这两个参数在内存里的空间因为push 12345678,我们这样理解,push压入(把参数压栈,后面的CALL好调用),12345678,我们分开来就是12 34 56 78,4个字节(1个参数4个字节),2.如果前面压入的参数在后面的CALL有作用,则这个CALL会直接返回,在后面的CALL执行完后在进行堆栈空间释放(或者说带参数返回)操作,这样的目的只有一个::::是程序的堆栈平衡原则,堆栈不平衡就会使程序的某个CALL的返回地址或者程序指针错误而崩溃的
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

91层
92层
93层
94层
95层
96层
97层
98层
99层
100层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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