前言
之前的实验部分 , 也出现过加壳对抗 , 文中也说了几种工具脱壳和手动脱壳的方法 , 但是之前主要还是针对功能点的分析 。从这里开始 , 主要涉及到的就是逆向对抗了 。
Lab15:花指令
花指令是企图隐藏掉不想被逆向工程的代码块(或其它功能)的一种方法 , 在真实代码中插入一些垃圾代码的同时还保证原有程序的正确执行 , 而程序无法很好地反编译, 难以理解程序内容 , 达到混淆视听的效果 。
__asm { }内联嵌入__emit 0e8h;
当出现这样的语句时 , ida会把E8当作call,然后后面的部分当作调用函数 , 导致出现混淆 。
所以此时一般可以用xor配合跳转语句 , 保证程序的正常运行 。
除此之外 , 也可以加入0E9h等混淆IDA.
call $+5
add [esp],5
retn
当内联嵌入这样的语句时 , 会混淆IDA的流程图 , 这个语句最后的效果相当于一个jmp,等于没有 。
Lab15-1
放入IDA中查看 。
文章插图
可以看到这里有一个永假跳转 。
这边因为字符开头是E8,会让反编译误认为是Call,这时候把它先转为数据 , 然后把E8排除 , 就出现了原来的代码了 。
文章插图
文章插图
接着可以看到下面还有好几处地方一样
文章插图
用之前的方法修复
可以看到先是判断了参数的个数
文章插图
之后第一个参数和p比 , 第二个参数和d比 , 第三个参数和q比 , 进行对比 , 最后可以得出当参数是pdq的时候成功 。
文章插图
Lab15-2
放到IDA中查看 。
文章插图
可以看到第一个出现返汇编的地方 。
将40115E这一行 , 先变成data,然后把115F变成code , 最后E9转为nop.
文章插图
文章插图
文章插图
之后来到第二处
文章插图
进行相似的修补 。
文章插图
继续一样的修补 。
推荐阅读
- 当大厂程序员已开始用AI写代码 人类会被AIGC淘汰吗?
- C/C++的8种时间度量方式以及代码片段
- |车珠子有瘾?高端大气和田玉手串!让您一次看过瘾!
- 端午节有什么活动
- 高考|职校老师自掏腰包发红包引导学生学习兴趣,家长批评老师恶意诱导
- 中国网络经纪人登录58?房产中介经纪人怎么在网上开58端口?
- 端午节的寓意和意义~~端午节的寓意和内涵?
- 招聘|在为年终复盘抓狂吗?华为笔记本超级终端打造智慧化“职场利器”
- 前端开发和UI有什么区别 前端ui库
- 大学生|大学毕业去当高端家政,住豪宅、开飞机,到头来被说是高学历丫鬟