-
-
[原创]脱SO类UPX壳
-
发表于:
2016-7-30 18:14
12474
-
脱SO类UPX壳简介
目前有多家收费so加密壳都是用的UPX变种壳(直接改的UPX3.92),具体怎么编译UPX 相关文章有http://www.bubuko.com/infodetail-560231.html。今天大概讲讲怎么脱,详细的有时间整理一下以前的笔记,再发布。
早期的版本(大概2015年8月之前)大部分的类UPX壳都是可以通过修改关键字(如ijm? 改成UPX!),然后直接upx -d就可以脱掉。
现在的版本把-d功能作废了,有的还把压缩算法改了,还好没有把UPX作为压缩壳的本职功能改掉,也就是说它必然会解压到内存中,所以直接dump就可以。不过upx把section 头全部去掉了,所以要想IDA能把导出函数和导入函数对应上,就必须修复section头。
ThomasKing大神有一篇文章就是讲修复section头(http://bbs.pediy.com/showthread.php?t=192874)。原理上是根据dynamic段直接修复和利用节区的连续性(各个节区之间相邻关系)间接修复。个人觉得可能不需要去修复,也许可以通过写IDA脚本把ELF文件加载功能改一改就行(这个是猜测具体能不能我也不知)。
dump也不是一帆风顺的,很多so都做了反调试,防dump等保护措施,这些功能都可以通过Cydia hook掉(加UPX变种壳需要别人的ELF文件中有_init函数,其实这个也不是必须的,自己找一个函数把它的属性改成_init就行了,被改的函数最好是无参、一起来就运行不会对其他有影响)。
如果有人想做壳或者提升自己的逆向能力,研究阿里的这两届比赛题就够了,没必要去买别人的视频,入门免费的就够了,说实话那些拍视频的大部分都做不出阿里第二届比赛的第三题(用的是LLVM深度混淆,一般公司不会把混淆强度做的这么高,因为严重影响效率),希望这话没有触碰到大牛们的利益
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)