打个小广告。呃主要是因为感觉吾爱md排版不是很好看(略略略~~)
如果有碍阅读,请点击》这里《 阅读原文,并且回复。谢谢
实验软件
原链接为》(tools.pediy.com/win/PACK/Protectors/MSLRH/MSLRHv0.31a.rar)《
因为有防盗链,请点击》短连接下载《直接下载,
或是复制链接(tools.pediy.com/win/PACK/Protectors/MSLRH/MSLRHv0.31a.rar),在浏览器中粘贴地址后打开。
上面的地址已经被我屏蔽了,直接点击是不会有反应的。。。
附上云盘防爆链接
提取码: 3300
链接炸了回复。看到会补链。推荐直接点短链接下载(简单么23333)
侦壳
什么都没有查到
应该是自己编写的加密方式
(本身这就是一个加壳软件)
脱壳
发现问题
用IDA打开后,发现最底下是红色的,且有很多黑色部分(未知)
还有大部分的data数据,而且没有发现已解锁的函数(蓝色部分)
需要进行脱壳
OD辅助分析
OD打开,发现一开始有pushad
说明肯定是加壳了的
向下单步跟踪一下,发现有很多 花指令
注:[花指令]:通过来回跳转和加上其他多余的数据,让OD、IDA之类的反编译器无法正常分析,从而达到保护的效果
(跳转来条转去的)
现在主要是学习IDA,OD脱壳等有时候再发
注: 可以用ESP定律实现(==有空会发==)
IDA实现
引入
图解部分(不知道应该怎么叫)最上面可以看到上面有个pushad
先调整IDA,把地址显示出来
鼠标放到有效分析的最后一行
按下<kbd>space</kbd>,切换视图模式
敲黑板!补充一下
图中的代码
start endp ;sp-analysis failed
//分号后面的是注释,此处意为【分析失败】
;sub_456189↓p
//此处注释意为【分析交叉引用有冲突】
//一般是导航带上深红色区域(详见上图2-1)
注:交叉引用简介
定位到红色出错的CALL
按【D】转变为数据(应该类似OD的删除分析。~我猜的~)
分析
全部分析错误都没有了,
开始人工分析
(为了方便分析,请先按上面图2-2-2把地址显示出来这里就不上图了)
以下机器码查询自 CSDN博客
机器码 |
汇编语言 |
9A |
CALL immed32 |
E8 |
CALL immed16 |
E9 |
JMP immed16 |
EB |
JMP immed8 |
因为E8机器码在汇编中会被翻译为call
,但是后面的EB OC 00 00
会被翻译成call
的地址,但是这个地址并不存在,因此会报错。
那么就很清楚了,这里不是call
而是jmp
到一个地址
光标定位到下一行EB
,按【C】,将数据转换为代码
至此,一处花搞定
那什么叫做花指令呢
就是在本来正常的顺序下,让其不停跳转,中间一些永远不会执行到的地方,加上一些其他字符,使反编译器无法正常分析,就达到了在一定程度上保护程序的功效
这个截图上,除了这一处,还有一处,如下图
E8 F6 FF FF FF call near ptr byte_4560FF
这个near ptr byte_4560FF
也是不知其为何物
分析一下,发现这个一整段都是花,没有意义
花指令
一堆花加在一起,是为花指令
这个例子中,有以下几种情形(分析出来类型,方便接下来用脚本去除所有的花指令)
本来想用Md的Flowchart流程图写一下大概流程的。。
试了几次,放弃了
反正asm汇编的代码也算是很好懂的。
情形一
call label1
db 0E8h
label2:
jmp label3
db 0
db 0
db 0E8h
db 0F6h
db 0FFh
db OFFh
db OFFh
label1:
:call label2
label3:
add esp,8
情形二
jz label1
jnz label1
db 0EBh
db2
label1:
jmp label2
db 81h
label2:
情形三
push eax
call label1
db 29h
db 5Ah
label1:
POP eax
imul eax,3
call label2
db 29h
db5Ah
label2:
add esp,4
pop eax
情形四
jmp label1
db 68h
label1:
jmp label2
db 0CDh,20h
label2:
jmp label3
db 0E8h
label3:
脚本去除
吾爱破解论坛: IDA学习经验和实战记录--手过花指令(2)(已重排版)
CSDN: IDA学习经验和实战记录--手过花指令(2)(推荐。)。