首页
社区
课程
招聘
[原创]脱SO类UPX壳
发表于: 2016-7-30 18:14 12770

[原创]脱SO类UPX壳

2016-7-30 18:14
12770
脱SO类UPX壳简介
     目前有多家收费so加密壳都是用的UPX变种壳(直接改的UPX3.92),具体怎么编译UPX 相关文章有9ecK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0#2j5Y4g2C8L8#2)9J5k6h3y4G2L8g2)9J5c8X3W2F1k6X3!0V1k6i4c8S2K9h3I4Q4x3X3b7#2y4U0l9J5x3K6q4Q4x3X3g2Z5N6r3#2D9i4@1f1K6i4K6R3H3i4K6R3J5i4@1f1@1i4@1u0n7i4K6S2m8i4@1f1#2i4@1p5@1i4@1p5&6i4@1f1#2i4@1p5@1i4@1p5%4i4@1f1$3i4@1p5$3i4K6R3J5i4@1f1^5i4@1q4q4i4@1t1J5i4@1f1^5i4@1q4q4i4@1t1J5i4@1f1$3i4K6R3H3i4K6S2q4i4@1f1@1i4@1t1&6i4K6R3^5i4@1f1^5i4K6R3@1i4@1t1I4i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1^5i4@1q4r3i4@1p5$3i4@1f1%4i4@1u0n7i4K6R3$3i4@1f1%4i4K6W2m8i4K6R3@1i4@1f1$3i4K6W2o6i4K6R3&6i4@1f1$3i4K6V1%4i4@1t1$3i4@1f1&6i4K6V1%4i4@1t1@1i4@1f1$3i4K6V1#2i4@1t1@1i4@1f1%4i4K6V1H3i4K6R3$3i4@1f1@1i4@1t1^5i4K6R3H3i4@1f1@1i4@1t1^5i4K6S2n7i4@1f1@1i4@1u0n7i4@1p5#2i4@1f1#2i4K6R3&6i4K6S2p5i4@1f1%4i4K6W2m8i4K6R3@1i4@1f1%4i4@1q4o6i4K6V1@1i4@1f1^5i4@1q4q4i4@1t1H3i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1#2i4K6R3$3i4K6S2p5i4@1f1#2i4K6S2r3i4K6V1I4i4@1f1#2i4@1t1^5i4K6R3K6i4@1f1K6i4K6R3H3i4K6R3J5
早期的版本(大概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深度混淆,一般公司不会把混淆强度做的这么高,因为严重影响效率),希望这话没有触碰到大牛们的利益

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
讲的不详细,有点看不懂。希望出详细案例分析。
2016-7-30 18:22
0
雪    币: 590
活跃值: (678)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享,又是一篇好文章
2016-7-30 21:56
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
mark , 正好也在研究SO加壳和脱壳,谢谢分享
2016-8-1 10:31
0
雪    币: 1
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我用UPX 3.9.2 编译出来的upx.out  但是upx 在对arm64-v8的so文件加壳时就会报错 UnknownExecutableFormatException 错误。连接里面贴出来的文章是去年的了。但里面提到的缺少init 函数没有在section里面生成INIT解决不了这个问题。我用readelf -d 看了 so文件里面是有init段的。主要是现在几百块钱的手机都是arm64v8处理器了。有谁碰到这个问题。可以分享一下解决方法。
2016-8-1 19:38
0
雪    币: 42
活跃值: (617)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
恩,upx现在是不支持64位的,可以自己模仿32位的改一个64位的出来。可能以后还会出一个问题就是Android7系统的linker好像会对section检查,具体没看Android7源码
2016-8-2 12:33
0
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
谢谢楼主分享思路,阿里比赛题目是个好东西
2016-8-4 20:34
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
一看就没修过upx 的section 头,知行不合一啊
2016-8-8 12:01
0
雪    币: 42
活跃值: (617)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
是啊,对不起,让你根据我的方法做修复失败了。希望你在分析分析了
2016-8-11 19:29
0
游客
登录 | 注册 方可回帖
返回