逆向——运行时压缩

1.数据压缩

数据压缩是计算机工程的主要研究内容,经过数十年发展已经有了深入研究,今后还会出现更多,更好的算法。不论哪种形态的文件都是由2进制组成的,只要使用合适的压缩算法,就能缩减其大小。经过压缩的文件若能100%恢复,则称该压缩为无损压缩;若不能恢复原状,则称该压缩为有损压缩

无损压缩

无损压缩用来缩减文件的大小,压缩后的文件更易保管、移动。使用经过压缩的文件之前,需要先对文件解压缩(此过程应该保证数据完整性)。
如7-zip的压缩文件就是无损压缩算法。最具代表性的无损压缩算法有Run-Length、Lempel-Ziv、Huffman等。此外还有许多其他压缩算法,它们都是在上面三种的基础上改造而成的。

有损压缩

有损压缩允许压缩文件时损失一定信息,以此换取高压缩率。压缩多媒体文件时,大部分都使用这种有损压缩方式。从压缩特性来看,有压缩的数据解压缩后不能完全恢复原始数据。人类的肉眼与听觉几乎无法察觉到这些多媒体文件在压缩中损失的数据。经过有损压缩后,虽然压缩文件与原文件存在差异,但重要的是人类几乎区分不出这种微小的差别。以mp3文件为例,mp3的核心算法通过删除超越人类听觉范围的波长区段来缩减数据大小。

2.压缩器

PE压缩器是指可执行文件的压缩器,准确一点应称为“运行时压缩器”,它是PE文件的专用压缩器。
#1.使用目的
@缩减PE文件的大小,便于网络运输与保存。
@隐藏PE文件内部代码与资源。
#2.使用现状
运行时压缩的概念早在DOS时代就出现了,可当时并未广泛使用。因为当时的PC速度不怎么快,每次执行文件时,解压缩的过程会引起很大的系统开销。而现在的PC速度已经变的非常快,用户不能明显的察觉运行时压缩文件与源文件在执行时间上的差别。因此,现在的实用程序、“打补丁”文件、普通程序等都广泛应用运行时压缩。
#3.压缩器种类
PE压缩器大致可分为两类:一类是单纯用于压缩普通PE文件的压缩器;另一类是对源文件进行较大变形、严重破坏PE头、意图稍嫌不纯的压缩器。如Virtus、Trojan、Worm等压缩器。

3.保护器

PE保护器是一类保护PE文件免受代码逆向分析的实用程序。它们不像普通程序一样仅对PE文件进行运行时压缩,而应用了多种防止代码逆向分析的技术(反调试、反模拟、代码混乱、多态代码、垃圾代码、调试器监视等)这类保护器使文件压缩后反而比源文件要大一些,调试起来非常困难。
#1.使用目的
防止破解,保护代码与资源。
#2.使用现状
这类保护器大量应用于对破解很敏感的安全程序。比如安装在线游戏时会自动安装安全保护程序,游戏安全保护程序就是为了防止“破解工具”运行的。
恶意的游戏破解者总是想方设法破解游戏的安全保护程序,因为破解成功后它们可以利用游戏内核获取金钱的回报。所以,安全保护程序为了防止恶意破解而使用各种保护器来保护自己。
另一方面,常见的恶性代码中也大量使用保护器来防止杀毒软件的检测。有些保护器还能提供多变的代码,每次都会生成不同的形态(但功能相同)的代码,这给病毒诊断带来很大困难。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
个人使用过的一些反编译工具 1、反编译:【jdax】: a、直接拖拽apk文件/dex文件/资源文件等 进入即可自动反编译,可搜索里面常量等进行定位。
 b、如没加壳,可直接查看 c、如有加壳,可以看到是用什么平台加的壳 2、脱壳: a、搭配【frida】+【FRIDA-DEXDump】(https://github.com/hluwa/FRIDA-DEXDump)可在自动脱壳(电脑端) b、搭配【xposed】+【Fdex2】,可自动脱壳(手机端) c、搭配【xposed】+【DumpDex】,可自动脱壳(手机端) 防范方式: a、检测是否有运行frida,有则关闭应用 b、检测是否有运行Fdex2 / DumpDex,有则关闭应用 c、检测是否有运行xposed,有则拒绝请求 3、hook: a、【frida】,通过反编译或其他途径获取目标类的路径、方法名,可以直接打印方法参数/结果,且可修改返回结果 b、【xposed】+【inspeckage】:可在pc端查看app各种信息&hook打印方法参数/结果 防范方式: a、检测是否有运行frida,有则关闭应用 b、检测是否有运行xposed / inspeckage, 有则拒绝请求 3、代理: a、【Postern】使用这个可绕过app屏蔽的系统代理 防范方式: a、检测是否有运行Postern,有则拒绝请求 b、检测是否使用系统代理,有则拒绝请求 4、证书: a、单向证书:使用【xposed】+【JustTrustMe】绕过app的单向证书校验 b、双向证书:反编译后找出证书&找出证书密码 防范方式: a、检测是否有运行xposed / JustTrustMe, 有则拒绝请求 b、在so层保存密钥+so加密等,增加破解难度 5、so文件破解: 需要用到IDA这个工具,还需要继续学习。。。 6、其他常规防范: 代码混淆、资源混淆、加固、字符串加密、密钥存so、xposed检测、常用逆向软件检测、签名验证、防hook等。。。 上面只是简述了几种常用逆向方式&防范方式,还有更多技能待了解&学习。 相关学习链接:
https://book.crifan.com/books/android_app_security_crack/website/ https://www.jianshu.com/p/c37b1bdb4757 https://www.jianshu.com/p/ee0062468251 https://www.jianshu.com/p/bab4f4714d98
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值