吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 46001|回复: 270

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

  [复制链接]
千里冰封 发表于 2016-12-13 22:59 | 显示全部楼层 |阅读模式

本帖最后由 千里冰封 于 2016-12-14 21:21 编辑

第一步:易语言写程序
1.1.png
双击“按钮”添加如下代码
1.2.png
然后  点击菜单【编译】--->保存    (注:我保存的文件名为:33.exe


打开程序,运行一下
1.3.png
程序运行正常,只有输入“qianlibingfeng”    才会弹出信息框“注册成功”,   否则提示“注册失败”。


第二步,OD逆向----(输入错误依然提示“注册成功”)
技术源于 Shark恒
打开OD,点击菜单【文件】-->【打开】---打开33.exe   (注:  OD载入  编写的程序)
2.1.png
打开之后,程序自动停到了这里,然后按F9(或者点击箭头所指的“▶”这个符号   或者 点菜单 【调试】--【运行】),让程序运行。

我们在编写的程序里,随便输入几个字符,提示“注册失败”
2.2.png
此时,我们按F12(或者点击“││”),让程序暂停
2.3.png
然后我们点击箭头所指的K,或者按Alt+K,或者点击菜单【查看】--【调用堆栈(zhàn)】我们发现,里面有提示“注册失败”的信息。
MessageBoxA差翻译可知MessageBox是信息框的意思。
2.4.png

调用来自=krnln.10068337   这是程序领空。标志:krnln

调用来自=user32.77D9EAC9  这是系统领空。标志:user32



在箭头所指的那一行,右击,选择【显示调用】
2.5.png
此时程序来到了,箭头所指的位置,我们按F2(或者右击选择【断点】--【切换】),下断点。
下好断点之后,让程序运行起来(按F9),当我们再次输入字符,点“按钮”后,程序会暂停在我们下断的位置。
2.6.png
此时,我们按一次F8(单步步过)----   (多谢Shy大神的指正注:按F8可以让程序去执行一行代码,但是不进入call的内部
2.7.png
我们发现,我们断下位置的call,作用就是调用 信息框   
我们点击确定,此时程序又处于暂停状态了   (注:只有暂停状态,才能一步一步按F8进行跟踪调试)


接下来我们可以一次次的按F8,直到返回上一层call调用。
或者点击菜单【调试】--【执行到返回】,这里我们选择此步骤
2.8.png
运行这个菜单后,程序到了这一步,我们按F8,执行这行代码。


在这里提示一下:call 就是调用的意思,call是可以嵌套的。比如,call 子程序1 ,而子程序1里面又进行了  call 子程序2 。当子程序2运行结束后,就要返回到  子程序1 ,继续执行里面的代码,子程序1执行完毕后,就返回到 call 子程序1 下面的代码,继续执行。
0.png

2.9.png
仔细看来到的位置,1002CDDE   多么熟悉的身影,就是刚才堆栈区的提示的,【返回到****】的位置

但是这里并不是关键call ,因为没有关键跳。  更重要的是,没有代码区的,注释栏里面,没有找到“注册成功”,“注册失败”这样的提示文字。
这里不是关键位置,那么我们继续返回,上一层的call 调用(按F8一步步直到返回,或者点击菜单【调试】--【执行到返回】然后再按一次F8,返回到上一层。提示:执行到retn这行代码的时候,堆栈区,都会提示返回到的位置
2.10.png
看图不多说,继续按F8,回到上一层call。返回之后我们找到堆栈区提示的2个地址
2.12.png
2.11.png
这次理解堆栈区那句【返回到***来自***】的意思了吗?

这次我们找到了提示“注册成功”“注册失败”的代码了。那么接下来,我们做3件事
第一件事,爆破
我们发现提示“注册成功”的代码在提示“注册失败”之前,按着电脑的逻辑,应该是先执行前面的代码,后执行后面的代码。那么,为什么没有执行前面的代码,直接提示了“注册失败”呢?答案只有一个,“注册成功”被跳过去了,么有执行,那我就要找到这个跳转,让它不去跳。
我们在提示“注册失败”这里下一个断点(选中这一行代码,按F2)
2.13.png


让程序运行(F9)起来,然后再次输入错误字符,程序就会断到,我这次下断点的地方。
2.15.png


程序果然,在我们下断点的位置,暂停下来了。说明我们找的位置是对的,如果找错了,那么就不会在我们下断点的位置暂停下来。(此时我们第一次下断点的位置,已经可以取消了。)
取消断点如图:
2.16.png
2.17.png

言归正传,我们继续找,是那一句代码跳过了“注册成功”
2.18.png
看图,我们发现,原来是这个   je 33.004094C1 代码 在作祟,导致了跳过“注册成功”  (注:je 是条件跳转--意思是结果为0则跳转,jmp是无条件跳转。条件跳转有很多,这里不一一举例,遇到再说,大家可以去网上搜。)(注释:OD中红色箭头线,代表跳转成立。

现在我们找到了罪魁祸首,那就好办了,直接把这行代码给nop掉,就行了。
在这行代码上,右击  ---【二进制】---【用Nop填充】
2.19.png
好了,保存吧,保存流程如下:①选中修改的代码(可以多选,不要少选),右击--【复制到可执行文件】--【选择】
在弹出的心对话框中直接   右击,选择【保存文件】
ok 了,现在运行一下,这个新保存的程序,是不是,随便输入什么字符都能提示“注册成功”了


现在我们要做第二件事,找到真正的字符串“qianlibingfeng”


2.20.png
刚才我们找到的je跳过了“注册成功”我们把它叫做关键跳   
而关键跳上面一般就是关键call  (95%的关键call是不会被跳过去的所以箭头所指的call才是关键call
这个关键call做了什么事情呢,它真的是关键call吗,如果是关键call,那就必然会被执行,我们可以在这个call的位置下断(F2)
(F9)让程序运行起来,然后输入错误字符,点击“按钮”
2.21.png
我们发现,果然断在了关键call这里。那我们按F8,一步步跟踪看看
2.22.png
2.23.png

好了,废话不多说,其实我们早就找到了正常的字符串,多跟踪,多观察,更加确定了我们找到的字符串的正确性,也培养,认真的习惯。


接下来做最后一件事,写call。

0040942E    55              push ebp
我们看这一行代码,机器语言55 对应汇编语言 push ebp,这一般就是call [***],这个 [***] 的程序的入口.它的作用,也是非常有用的。以后再讲。现在我们还是老规矩,返回到这个子程序的上一层call调用。
怎么返回到上一层,小伙伴们,开动脑筋,我在上一层等你们呦

3.1.png

我们来到上一层,找到了上一层的call
1002CE5B    FF55 FC         call dword ptr ss:[ebp-0x4]              ; 33.0040942E


我们在这个call上下个断点,然后运行程序,再次输入错误字符,点击“按钮”  
3.2.png
程序果然断在了这里。
我们发出,call调用的是  0040942E  这个地址的程序,那我们在用易语言写call之前,可以用call测试工具,测试一下。


3.3.png
测试工具大家可以去百度搜,或者下载我提供的。

我们发现,测试成功了,不用点源程序的“按钮”,依然可以起到和点击“按钮”一样的作用。
当然写call不仅仅是为了这样哟。我这里只是抛砖引玉。

好了,我们开始用易语言写call
3.4.png
新建一个程序,添加一个按钮控件,然后双击这个按钮,开始写代码
3.6.png
因为我们要用到汇编,所以开始写之前,需要添加一个汇编模块,这里我用 的清风汇编模块,还需要获取程序进程,我 用了FZ海的模块
易语言代码编写如图。解释如图。不明白的可以问我。
写好之后,调试运行一下。
先打开原程序,然后点易语言菜单【运行】--【运行】
4.png
ok,一切正常。编译即可。不在赘述。


结尾在加一条提示:在OD中,retn代表返回,同时代表,这是一个无参call。retn 4 表示有1个参数,retn 8代表有2个参数 。retn 10代表有几个参数呢?小伙伴呢,想一想? 提示:retn后面的数是16进制。
答案:
游客,如果您要查看本帖隐藏内容请回复







补充内容 (2017-2-5 14:30):
关于retn n 代表几个参数的问题,其实retn n的本质只是在进行堆栈平衡并返回到调用语句的下一行代码,add esp,n 也是一种堆栈平衡的方法。逆向之路要走的更远,可以看看罗云杉写的Windows 32位汇编语言程序设计。

call.zip

1.26 MB, 下载次数: 95, 下载积分: HB -3

密码是xuepojie.com

评分

参与人数 101威望 +1 HB +159 THX +37 收起 理由
白丁老师 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
lies + 1
小才不才 + 1
NOP + 2
xiaoxixpj + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
willgoon + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
longge188 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
禽大师 + 1
24567 + 2
雼琵迗 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
太阳神 + 2 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
bing_mao + 1
虚心学习 + 1
Wayne + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
行行行行行行 + 1
邂逅涟漪 + 1
澳洲小袋鼠 + 1
sjtkxy + 1 + 1
阿无无无 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
消逝的过去 + 1
故人陆续凋零 + 1
boot + 2
yexing + 1
agan8888 + 1
仰天长笑哇哈哈 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
冷亦飞 + 1
小声点我布隆 + 2 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
temp + 1 + 1
weiran324 + 2 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
liugu0hai + 1 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
普鲁托 + 1
小菜虫 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
jaunic + 2
Shin + 2
上帝的恩赐 + 2 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
langzill + 1
hetao8003200 + 1
eurchin + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
brswbx201610 + 1
zsr849408332 + 1 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
mengzhisuoliu1 + 1
mengzhisuoliu + 1
cai7381237 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
XiaoWeiSec + 1
xiaoyudian4900 + 1
PCbeta + 1
ZSSR2009525 + 1
骜梵 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2016-12-13 23:40 | 显示全部楼层

真不错,讲的很细致。我相信肯定会帮助很多人~ 精华走一波。建议对最后易语言汇编部分再稍稍讲解一下,有点一笔带过了。(模块中用到的函数)

评分

参与人数 1HB +1 收起 理由
Asm + 1 MessageBox是信息框,那弹出的子窗口是什么呢恒大大

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shy 发表于 2016-12-14 00:17 | 显示全部楼层

另建议写源码,不建议写模块,增强一下自身的E水平,,你这样调用大量模块的话会使程序运行速度变慢和体积增大,,坐等源码级写法
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 千里冰封 发表于 2016-12-14 10:56 | 显示全部楼层

Shark恒 发表于 2016-12-13 23:40
真不错,讲的很细致。我相信肯定会帮助很多人~ 精华走一波。建议对最后易语言汇编部分再稍稍讲解一下,有点 ...

谢谢恒大的支持,易语言我也是初步,努力学习一下,后期用源代码写出来,尽量不用模块
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 千里冰封 发表于 2016-12-14 10:58 | 显示全部楼层

Shy 发表于 2016-12-14 00:17
另建议写源码,不建议写模块,增强一下自身的E水平,,你这样调用大量模块的话会使程序运行速度变慢和体积增大 ...

谢谢Shy大的支持,努力向不用模块的目标前进

点评

Shark恒”点评说:
学破解论坛的学习氛围还是不错的吧  详情 回复 发表于 2016-12-14 12:00

评分

参与人数 1HB +1 THX +1 收起 理由
Shy + 1 + 1 分享精神,是最值得尊敬的!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2016-12-14 12:00 | 显示全部楼层

千里冰封 发表于 2016-12-14 10:58
谢谢Shy大的支持,努力向不用模块的目标前进

吾爱汇编论坛的学习氛围还是不错的吧
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
LYQingYe 发表于 2016-12-14 12:21 | 显示全部楼层

mark一下,再详看
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
h0s0x0 发表于 2016-12-14 13:01 来自手机端 | 显示全部楼层

讲的不错  谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shy 发表于 2016-12-14 13:10 | 显示全部楼层

千里冰封 发表于 2016-12-14 10:58
谢谢Shy大的支持,努力向不用模块的目标前进

不过还是问一下 retn 4表示有1个参数是为什么?4在16进制和10进制中也是4啊?那么原则上来说是有4个参的,怎么到你这有只有1个了?
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
geegtb 发表于 2016-12-14 13:13 | 显示全部楼层

讲的很详细啊
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

1层
赞帖
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

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

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


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

Powered by Discuz!

吾爱汇编 www.52hb.com

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