IDA学习经验和实战记录--手过花指令(2)

上一节(接着上一次自学)

声明

再次声明:上一次和这一次IDA的去花指令不是教程,
只是本人在学习IDA看教程时做的一些笔记和思考
方法版权归原教程发布者所有。
原发布者网站:(现在已经挂了,就不发出来了)

附上一次链接

CSDN链接(推荐)
吾爱破解论坛(为重排版,效果不是很理想)

分析原理

花指令的干扰

因为在花指令的干扰下,无法用OD、IDA之类的软件直接分析
(当然可以通过大神已经编写好的插件脱花指令,如果你强调这个没有去花插件快、便捷。那么恭喜你,可以直接关掉页面了,这篇不适合你,这只是为了一起分析、一起学习、一起进步,而不是教你如何使用去花插件。)
所以我们要手动分析,
但是问题来了,就算手动分析了一处,两处,三处,一个软件里花可能有上百出处,
就算全部分析完了,也需要一处处去掉
所以需要写一个脚本,帮助自己快速分析花指令。所以需要写一个脚本,帮助自己快速分析花指令。
那么如何让程序自动识别和去掉花指令呢

去掉花指令

原理

花指令原理之前已经说过了,就是来回的跳转,然后插入一些垃圾机器码比如单独看起来无效的E8、EB、0等等垃圾数据,使反编译软件无法分析,那么就要分两步去除花指令了。
第一步:

  • 识别哪些是有用的数据,哪些是垃圾数据。

第二步:

  • 把垃圾数据用nop(0x90h)填充。
如何识别垃圾数据

1-1
如图1-1,是上次手动修改的内容
就是有花导致反汇编无法继续分析的一个地方,
1-2
如图1-2
经过过程梳理(看蓝色箭头)
发现其实中间所有的部分都可以nop掉,并不影响程序的运行,
1-3
如图1-3,
依次按D将其转换为数据

同理,分析出需要nop掉的下面的部分
(有人会说灰色部分也是花对吧。但是这个不影响反编译,而且为了匹配更多的花,舍弃一句无关紧要的代码不去除也无伤大雅。当然也可以通过和我一起学习后,自己DIY,这个都好说)
1-4
1-5
如图1-4、1-5、1-6
注:红色是标签,蓝色箭头是跳转流程,绿色是有用的代码
依然整理一下
1-4-1
1-5-1
图1-4-1、1-5-1、1-6-1
(1-6和1-6-1貌似忘记截图了,懒得补了,反正下面有整理的代码)
代码整理如下:

==================1=======================
E8                byte_4560FA     db 0E8h
0A                                db  0Ah
00                                db    0
00                                db    0
00                                db    0
E8                                db 0E8h
EB                byte_456100     db 0EBh
0C                                db  0Ch
00                                db    0
00                                db    0
E8                                db 0E8h
F6                                db 0F6h
FF                                db 0FFh
FF                                db 0FFh
FF                                db 0FFh
==================2=======================
74                                db 74h
04                                db    4
75                                db 75h
02                                db    2
EB                                db 0EBh
02                                db    2
EB                                db 0EBh
01                                db    1
81                                db 81h
==================3=======================
50                byte_45613A     db 50h
E8                                db 0E8h
02                                db    2
00                                db    0
00                                db    0
00                                db    0
29                                db 29h
5A                                db 5Ah
58                                db 58h
6B                                db 6Bh
C0                                db 0C0h
03                                db    3
E8                                db 0E8h
02                                db    2
00                                db    0
00                                db    0
00                                db    0
29                                db 29h
5A                                db 5Ah
83                                db 83h
C4                                db 0C4h
04                                db    4
==================4========
  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值