2016安全训练营

白帽子

2019/03/21 发布于 技术 分类

文字内容
1. 安卓 app 逆向与安全防护 主讲 人: 丰生强
2. 目录 1. 学会什么以及如何学习 1. 课程目标 2. 移动领域安卓方向的 app 市场的安全状况 2. 市场状况 3. 逆向工具的介绍与使用 3. 逆向工具使用 4. 常见加解密与压缩算法 4. 加解密基础 5.App 的网络协议分析技巧 5. 协议分析 6.app 壳 7. 安全防护 6. 常见 app 加固厂商脱壳方法研究 7. 如何编写更安全的 app
3. 课程目标 1. 什么是逆向工程 2. 为什么要学习安卓逆向 3. 如何学习安卓逆向 4. 如何学习其它平台的逆向工程技术
4. 什么是逆向工程 来自维基百科的定义: https://zh.wikipedia.org/zh-hans/ 逆向工程 逆向工程(又称反向工程),是一种技术过程,即对一项目标产品进 行逆向分析及研究,从而演绎 并得出 绎绎绎绎绎绎 品的 绎绎绎 理流程、 绎绎绎绎绎绎绎 构、 绎 功能性能规格等设计要素,以制作出功能相近,但又不完全一样的产 品。逆向工程源于商业及军事领域中的硬件分析。其主要目的是,在 不能轻易获得必要的生产信息下,直接从成品的分析,推导出产品的 设计原理。逆向工程可能会被误认为是对知识产权的严重侵害,但是 在实际应用上,反而可能会保护知识产权所有者。例如在集成电路领 域,如果怀疑某公司侵犯知识产权,可以用逆向工程技术来寻找证 据。 对最终程序的二进制代码所进行的逆向工程被称为“代码反向工 程”,或简称 RCE ( Reverse Code Engineering )。
5. 绎什 么要学 绎绎安卓逆向 绎绎 绎 逆向技术常见的应用场景 1. app 安全审查 2. 系统漏洞挖掘 3. 恶意代码杀查 4. 同行业竞品技术原理分析 5. 移除安全机制
6. 如何学绎绎 安卓逆向 绎绎绎 知识点 1. Java 基础( JCA 、 JSSE ) 2. 文件格式( DEX 、 OAT 、 ELF 、 Smali 、 resources.arsc ) 3. Smali 绎绎、 arm 反汇编阅读 4. Apktool 、 smali/baksmali 、 enjarify 、 androidclassyshark 、 jadx 、 JD-GUI 、 BytecodeViewer 、 Android Killer 的使用 5. JEB 、 jdb 、 Android Studio/Intellij IDEA 、 gdb 、 IDA Pro 的使 用
7. 如何学习其它平台的逆向工程技术 需要掌握的技能表 1. 操作系绎绎 的安全架构 绎绎绎绎 2. 操作系统中可执行文件格式 3. 反汇编工具的使用 4. 反汇编代码的阅读理解 5. 调试器的使用 6. 网络抓包工具的使用 7. 加解密知识
8. 市场状况 1. 安卓 App 安全形势 2. 安卓系统安全形势 3. 安卓逆向工程师市场需求
9. 安卓 App 安全形势 阿里移动安全漏洞年报
10. 安卓系统安全形势 阿里移动安全漏洞年报
11. 安卓逆向工程师市场需求 看雪论坛招聘专区
12. 逆向工具使用 1. 反编译工具 Apktool/Shakaapktool 、 smali/baksmali 、 dex2jar 、 enjarify 2. 静态分析工具 android-classyshark 、 jadx 、 JD-GUI 、 BytecodeViewer 、 Android Killer 的 使用 3. 动态调试工具 JEB 、 jdb 、 Android Studio/Intellij IDEA 、 gdb 、 IDA Pro 的使用 4.Hook 框架 Cydia Substrate 、 Xposed 、 adbi 、 Frida 等。 5. 沙盒环境 DroidBox
13. 反绎绎绎 工具 绎 Apktool https://bitbucket.org/iBotPeaches/apktool/ Shakaapktool http://www.rover12421.com/shakaapktool/ 为什么选择 Shakaapktool ? Shaka (沙加,黄金圣斗士之一) 处女座沙加( SHAKA ):被誉为最接近神的圣斗士,平时闭著双 眼,但当他张开眼睛时,其力量会大为增加,并使出天舞宝轮,夺 去敌人的五感。
14. 反编译工具 Shakaapktool http://www.rover12421.com/shakaapktool/ 增强功能:
15. 反编译工具 Shakaapktool http://www.rover12421.com/shakaapktool/ 对抗反反编译:
16. 反编译工具 Shakaapktool http://www.rover12421.com/shakaapktool/ 修正官方 Bug :
17. 反编译工具 smali/baksmali https://bitbucket.org/JesusFreke/smali 安卓反汇编的 基石 Smali 反汇编 Smali->Dex/Dex->Smali/Odex->Dex Smali 动态调试 ->smalidea
21. 反编译工具 AndroidCrackTool http://www.pd521.com/thread-1194-1-1.html Android 逆向助手 http://weibo.com/kgdiwss
22. 静绎绎 分析工具 绎绎 绎 JD-GUI http://jd.benow.ca/
23. 静态分析工具 android-classyshark https://github.com/google/android-classyshark
24. 静态分析工具 jadx https://github.com/skylot/jadx
25. 静态分析工具 BytecodeViewer https://github.com/Konloch/bytecode-viewer
26. 静态分析工具 Android Killer
27. 绎绎绎绎工 具 Dalvik Debugger jdb adb shell am start -D -n com.droider.crackme0201/.MainActivity monitor jdb -connect com.sun.jdi.SocketAttach:port=8700,hostname=127.0.0.1 methods com.tencent.crackme0201.MainActivity stop in com.droider.crackme0201.MainActivity.checkSN(java.lang.String, java.lang.String) where step step step locals dump this
28. 动态调试工具 Dalvik Debugger Android Studio/Intellij IDEA + smalidea https://github.com/JesusFreke/smali/wiki/smalidea
29. 动态调试工具 Native Debugger gdb gdb: ~/Library/Android/android-ndk-r12b/prebuilt/darwin-x86_64/bin/gdb gdbserver: ~/Library/Android/android-ndk-r12b/prebuilt/android-arm/gdbserver
30. 动态调试工具 Native Debugger gdb gdbserver :3333 --attach pid or gdbserver :3333 /data/local/tmp/xxx /* android_gdb #!/bin/sh ~/Library/Android/android-ndk-r12b/prebuilt/darwin-x86_64/bin/gdb "$@” */ adb forward tcp:3333'>tcp:3333 tcp:3333'>tcp:3333 android_gdb /xxx (gdb) target remote :3333 (gdb) set disassemble-next on (gdb) break *xxx (gdb) layout asm (gdb) layout regs (gdb) c ...
31. 动态调试工具 Native Debugger gdb + Affinic Debugger
32. 动态调试工具 Native Debugger lldb + ds2 https://github.com/facebook/ds2
33. 动态调试工具 Dalvik Debugger + Native Debugger JEB2 https://www.pnfsoftware.com
34. 动态调试工具 Dalvik Debugger + Native Debugger IDA Pro
35. Hook 框架 JEB2 https://www.pnfsoftware.com 监听调 试事件
37. Hook 框架 Xposed https://github.com/rovo89/Xposed 最为强大的安卓 Java 层 Hook 框架 1.Apk 方法 Hook 2. 系统方法 Hook 3. 系统资源修改 4. 系统增强补丁
38. Hook 框架 Xposed https://github.com/rovo89/Xposed 最为强大的安卓 Java 层 Hook 框架 微信抢红包? 1.Apk 方法 Hook 聊天消息防撤回? https://github.com/fkzhang/WechatUnrecalled public void hookMethod(ClassLoader classLoader) { try { XposedBridge.log("now hook crypt..."); Class clzAC = XposedHelpers.findClass("com.cxx.b.ac", classLoader); XposedBridge.hookAllMethods(clzAC, "h", new HookedMD5Method()); } catch (Throwable t) { XposedBridge.log(t); } } public static class HookedMD5Method extends XC_MethodHook { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { CommLog.e(TAG, "after " + param.method.getName() + "..."); String r0 = (String) param.args[0]; String ret = (String) param.getResult(); String pre = param.method.getName(); CommLog.e(TAG, pre + " data:" + r0); CommLog.e(TAG, pre + " ret:" + ret); super.afterHookedMethod(param); } }
39. Hook 框架 Xposed https://github.com/rovo89/Xposed 最为强大的安卓 Java 层 Hook 框架 2. 系统方法 Hook https://github.com/AndroidKnife/XposedDebug https://github.com/rovo89/XposedInstaller
40. Hook 框架 Xposed https://github.com/rovo89/Xposed 最为强大的安卓 Java 层 Hook 框架 3. 系统资源修改 http://repo.xposed.info/module-overview
41. Hook 框架 Xposed https://github.com/rovo89/Xposed 最为强大的安卓 Java 层 Hook 框架 4. 系统增强补丁 App Settings: https://github.com/rovo89/XposedAppSettings Xprivacy: https://github.com/M66B/XPrivacy NekoSMS https://github.com/apsun/NekoSMS …...
43. Hook 框架 Frida https://github.com/frida/frida Hook Native ,打印调用参数 Hook Java:
44. 加解密基础 1. 安卓中的 JCA 与 JSSE 2. 对称加密 3. 非对称加密 4. 数字证书 5. 算法工具
45. 安卓中的 JCA 与 JSSE JCA ( Java Cryptography Architecture ) 设计原则: 1. 实现的独立性与互用性 2. 算法的独立性与扩展性 实现的独立性-使用密码学服务( cryptographic services ),加密解密、数字 签名、数据摘要等算法的实现都基于这些概念。 算法的独立性-使用基于 provider 的架构, Cryptographic Service Provider (CSP) 必须实现一个或多个密码学服务。 实现的互用性-每个实现能够协同合作,如密钥的使用、签名的验证,对于同一 个算法而言, providerA 生成的密钥要能被 providerB 使用, providerA 生成的签名要能被 providerB 验证。 算法的扩展性-新算法要易于添加。
46. 安卓中的 JCA 与 JSSE CSP ( Cryptographic Service Providers ) MessageDigest md = MessageDigest.getInstance("MD5"); MessageDigest md = MessageDigest.getInstance("MD5", "ProviderC");
47. 安卓中的 JCA 与 JSSE CSP ( Cryptographic Service Providers ) Android 中的 Provider Provider[] providers = java.security.Security.getProviders(); for (Provider p : providers) { System.out.printf("%s/%s/%f\n", p.getName(), p.getInfo(), p.getVersion()); Set services = p.getServices(); for (Provider.Service s : services) { System.out.printf("\t%s/%s/%s\n", s.getType(), s.getAlgorithm(), s.getClassName()); } }
48. 安卓中的 JCA 与 JSSE CSP ( Cryptographic Service Providers ) Android 中的 Provider Android 4.4: AndroidOpenSSL/Android's OpenSSL-backed security provider/1.000000 DRLCertFactory/ASN.1, DER, PkiPath, PKCS7/1.000000 BC/BouncyCastle Security Provider v1.49/1.490000 Crypto/HARMONY (SHA1 digest; SecureRandom; SHA1withDSA signature)/1.000000 HarmonyJSSE/Harmony JSSE Provider/1.000000 AndroidKeyStore/Android KeyStore security provider/1.000000 Android 6.0.1: AndroidOpenSSL/Android's OpenSSL-backed security provider/1.000000 AndroidKeyStoreBCWorkaround/Android KeyStore security provider to work around BC/1.000000 BC/BouncyCastle Security Provider v1.52/1.520000 Crypto/HARMONY (SHA1 digest; SecureRandom; SHA1withDSA signature)/1.000000 HarmonyJSSE/Harmony JSSE Provider/1.000000 AndroidKeyStore/Android KeyStore security provider/1.000000 Android N: Deprecated? http://android-developers.blogspot.com/2016/06/security-crypto-provider-deprecated-in.html
49. 安卓中的 JCA 与 JSSE SPI ( Service Provider Interface ) Providers 中的接口通过 SPI 定义。 Signature -> SignatureSpi Cipher -> CipherSpi JCA 主要的 API : 引擎类与算法: 加解密操作、密绎绎 与算法参数 绎 绎 绎 绎 绎绎绎 、绎绎 象高 绎 绎绎 表示 绎 JCA 主要的 API : 核心类与接口:
50. 安卓中的 JCA 与 JSSE SPI ( Service Provider Interface ) 安全相关的 API : java.security javax.crypto java.security.cert java.security.spec javax.crypto.spec java.security.interfaces javax.crypto.interfaces import javax.crypto.*; Cipher c = Cipher.getInstance("AES"); c.init(ENCRYPT_MODE, key);
51. 安卓中的 JCA 与 JSSE KeyStore 密钥存储 KeyStore 类型: 1.jks 。 SunJCE Provider 提供,安卓中无法使用。 2.bks 。 BC Provider 提供,安卓默认支持。 3.pkcs12 。 JDKPKCS12KeyStore , BC Provider 提供,安卓默认支持。 4.dks 。 Domain KeyStore 。不常用。 bks: pkcs12:
52. 安卓中的 JCA 与 JSSE JSSE ( Java Secure Socket Extension ) JSSE 的用途:为 Java 版本的 SSL ( Secure Sockets Layer )与 TLS ( Transport Layer Security )提供框架实现。 JSSE 标准 API : 1. ServerSocketFactory 、 SocketFactory 2. 非阻塞引擎用于处理 SSL/TLS 数据流( SSLEngine ) 3. 绎建 套接字、服 绎绎套接字、 绎 绎 绎 SSL 服务套接字以及使用的类 4. 套接字的类表示:安全套接字上下文类、安全工厂类与引擎类 5. 密绎绎 与信任管理器接口( 绎 绎 绎 绎 绎 绎 绎 绎 X509KeyManager 、 X509TrustManager ) 安卓 JSSE 中的 Provider : HarmonyJSSE Provider :旧版本使用,代码基于 Java 实现。 OpenSSL Provider :新版本使用,代码基于 JNI Native 调用。
53. 安卓中的 JCA 与 JSSE 安卓中的证书绑定( Cert Pinning ) https://developer.android.com/training/articles/security-ssl.html
54. 安卓中的 JCA 与 JSSE 绎绎绎 绎绎定 Pinning ) Hook 绕过 基于 Xposed : JustTrustMe https://github.com/Fuzion24/JustTrustMe Breaking !!!( Cert 基于 Substrate : Android-SSL-TrustKiller https://github.com/iSECPartners/Android-SSL-TrustKiller
55. 对称加密 Cipher 类 algorithm/mode/padding algorithm :算法。 AES 、 DES 、 DESede 等。 mode :分组模式。 ECB 、 CBC 、 CFB 、 OFB 、 CTR 等。 padding :填充模式。 PKCS5Padding 、 PKCS7Padding 、 NoPadding 、 ZeroPadding
56. 对称加密 常见的对称加密算法
57. 非对称加密 Cipher 类 algorithm/mode/padding algorithm :算法。 RSA 、 DSA 等。 mode :分组模式。 ECB 。 padding :填充模式。 PKCS1Padding 、 NoPadding
58. 非对称加密 公钥与私钥 存储格式: DER ( Distinguished Encoding Rules ):区分编码规则。二进制格式,记录的第一个字段信息是一个 ASN.1 ( Abstract Syntax Notation One )对象。 DER 可用于编码公钥、私钥与证书。 PEM ( Privacy Enhanced Mail ):保密邮件的编码标准。信息转换为 ASCII 码或其他编码,使用 BASE64 对 加密后的信息进行编码。 DER 可用于编码公钥、私钥与证书。 XML :一些密码学的库支持使用 XML 保存公钥与私钥信息。 存储规范: PKCS#1 : RSA Public/Private Key file 。 Java 默认支持。 PKCS#8 : Public/Private Key file 。 OpenSSL 默认支持。 ASN.1 git://git.savannah.gnu.org/libtasn1.git
59. 非对称加密 公钥与私钥 -DER with PKCS#1 DER PrivateKey: -> DER PublicKey: ->
60. 非对称加密 公钥与私钥 -DER with PKCS#8 DER PrivateKey: -> DER PublicKey: ->
61. 非对称加密 公钥与私钥 -PEM with PKCS#1 PEM PrivateKey: PEM PublicKey:
62. 非对称加密 公钥与私钥 -PEM with PKCS#8 PEM PrivateKey: PEM PublicKey:
63. 非对称加密 公钥与私钥 -XML XML PrivateKey: PEM PublicKey:
64. 数字证书 什么是数字证书? 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书 包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时 间段内有效。 简单的说:在密码学领域,数字证书就是带有数字签名的公钥! 存储格式: DER ( Distinguished Encoding Rules ):区分编码规则。二进制格式,记录的第一个字段信息是一个 ASN.1 ( Abstract Syntax Notation One )对象。 DER 可用于编码公钥、私钥与证书。 PEM ( Privacy Enhanced Mail ):保密邮件的编码标准。信息转换为 ASCII 码或其他编码,使用 BASE64 对 加密后的信息进行编码。 DER 可用于编码公钥、私钥与证书。 存储规范: X509 :安卓系统大量使用的证书规范。目前使用 v3 版本。 PKCS#7 : .p7c 格式结尾。 PEM 存储的话,会以“ -----BEGIN PKCS7-----” 和 “ -----END PKCS7-----” 做头尾标记,存储证书链与单个证书。 PKCS#12 : .pfx 或 .p12 格式结尾。可存储证书、私钥及公钥。
65. 数字证书 X509 PEM 证书 ->
66. 数字证书 X509 证书
67. 算法工具 JCrypTool/CrypTool http://www.cryptool.org
68. 算法工具 openssl https://github.com/openssl/openssl echo -n "hello" openssl aes-128-cbc -a -e -K e0e0e0e0f1f1f1f1e0e0e0e0f1f1f1f1 -iv e0e0e0e0f1f1f1f1e0e0e0e0f1f1f1f1 tv611lW0N+HKtQi+ysr2TQ==
69. 算法工具 RECalcTool
70. 协议分析 1. 网络抓包 2. 数据包分析与识别 3. 日志分析 4. 代码分析与算法识别 5.Hook 输出或动态调试 6. 绎 绎 绎 果
71. 网络抓包 抓包工具: Http/Socket 抓包: tcpdump : adb shell tcpdump -p -vv -s 0 -w /sdcard/capture.pcap tcpdump -> WireShark Http/Https 抓包: Fiddler 、 Burpsuite 、 Charles 1. 手机导入 FakeCert.crt 2. 抓包工具配置 Https 代理 3. 手机设置代理服务器 4. 手机 Hook Breaking SSL Pinning 5. 抓包测试
72. 网络抓包 Http/Https 抓包配置 1 2 3 4
73. 数据包分析与识别 通信协议 数据格式 Socket 红色与绿色部分: 对应的 部分是固定 值,猜测 是协议的固定字段部分。 黑色部分: 应该是通信的真正数据,数据的长度为 16 字绎 的整数倍,猜 绎绎绎绎绎绎绎绎 是使用 绎绎绎绎 称或 绎 非 对称 加密,而通信 传输一般使用对称加 密,故猜测此处使用对称加密,接下来 需要反编译代码,验证猜测,找到密钥 与算法。
74. 数据包分析与识别 通信协议 REST or SOAP ? 数据格式 JSON application/octet-stream ??
75. 常见的压缩算法 application/octet-stream ?? 1F 8B 08 -> gzip 常见压缩算法数据头部: gzip 1F 8B 08 zip 50 4B (PK) rar 52 61 72 21(Rar!) zlib 78 9c lzma 6c 00 lz4 04 22 4D
76. 日志分析 App 日志输出 默认开启日志输出 自带了日志输出但默认关闭
77. 日志分析 过时的方法- Smali 注 入 针对日志输出语句被移除,但日志框架保留
78. 代码分析与算法识别 IDA Pro + FindCrypt2 AES Init Rijndael S-box
79. 代码分析与算法识别 AES_cbc_encrypt with PKCS5padding PKCS5Padding 有如下特点 : 1. 填充的字节都是一个相同的字节。 2. 该字节的值 , 就是要填充的字节的个数。 如果要填充 8 个字节 , 那么填充的字节的值就是 0×8; 要填充 7 个字节 , 那么填入的值就是 0×7; … 如果只填充1个字节,那么填入的值就是 0×1; PKCS5Padding 与 PKCS7Padding 的区别: 前者只作用于块大小为 64 字节的数据,后者没有此限制。
80. 代码分析与算法识别 CBC (密码分组链接模式) CBC 模式原理
81. 代码分析与算法识别 RSA/ECB/PKCS1Padding PKCS1Padding 填充规则
82. 代码分析与算法识别 RSA 1024 自定义 Padding 长度 12 ,默认 11, 数据长 117 字节
83. Hook 输出或动态调试 Hook:
84. 测试结果 测试报告 破解效果 代码还原
85. APP 壳 1. 简述 脱壳前学习的知识、壳的历史、脱壳方法 2. 第一代壳 3. 第二代壳 4. 第三代壳 5. 第 N 代壳
86. 简述 1.Apk 文件绎 构 绎 2.Dex 文件绎 构 绎 3. 壳史 4. 壳的识别
87. Apk 文件结构 文件或目录 作用 META-INF/ 也就是一个 manifest ,从 java jar 文件 引入的描述包信息的目录 res/ 存放资源文件的目录 lib/ 如果存在的绎 ,存放的是 绎 绎 绎 绎 绎 ndk 编出来的 so 库 AndroidManifest.xm 程序全局配置文件 l classes.dex 最终生成的 dalvik 字节码 resources.arsc 编译后的二进制资源文件
88. Dex 文件结构
89. 壳史 第一代壳 Dex 加密 1.Dex 字符串加密 2. 绎 源 加密 3. 对抗反编译 4. 反调试 5. 自定义 DexClassLoader 第二代壳 Dex 抽取与 So 加固 1. 对抗第一代壳常见的脱壳法 1.Dex Method 代码抽取到外部(通常企业版) 2.Dex 绎 绎 加绎 3.So 加密 第三代壳 Dex 绎 绎 解 密与 So 混淆 1.Dex Method 代码动态解密 2.So 代码膨胀混淆 3. 对抗之前出现的所有脱壳法 第四代壳 arm vmp (未来) 1.vmp
90. 壳的识别 常用加固厂商特征 娜迦: libchaosvmp.so , libddog.solibfdog.so 爱加密: libexec.so, libexecmain.so 梆梆: libsecexe.so, libsecmain.so , libDexHelper.so 360 : libprotectClass.so, libjiagu.so 通付盾: libegis.so 网秦: libnqshield.so 百度: libbaiduprotect.so
91. 壳的识别 基于特征的识别代码
92. 第一代壳 1. 内存 Dump 法 2. 文件监视法 3.Hook 法 4. 定制系统 5. 绎 绎 绎 绎 法
93. 内存 Dump 法 内存中寻找 dex.035 或者 dex.036 /proc/xxx/maps 中查找后,手动 Dump
94. 内存 Dump 法 内存中寻找 dex.035 或者 dex.036 android-unpacker https://github.com/strazzere/android-unpacker
95. 内存 Dump 法 内存中寻找 dex.035 或者 dex.036 drizzleDumper https://github.com/DrizzleRisk/drizzleDumper 升级版的 android-unpacker , read 和 lseek64 代替 pread ,匹配 dex 代替匹配 odex
96. 内存 Dump 法 IDA Pro + dumpDEX dumpDex https://github.com/CvvT/dumpDex
97. 文件监视法 Dex 优化生成 odex inotifywait-for-Android https://github.com/mkttanabe/inotifywait-for-Android 绎绎 文 绎绎 件 化
98. 文件监视法 Dex 优化生成 odex inotifywait-for-Android https://github.com/mkttanabe/inotifywait-for-Android 监视 DexOpt 输出
100. Hook 法 Hook dvmDexFileOpenPartial
101. 定制系统 修改安卓源码并刷机
102. 定制系统 DumpApk https://github.com/CvvT/DumpApk 只绎 绎 绎 部分壳 绎绎
103. 动态调试法 IDA Pro
104. 动态调试法 gdb gcore 法 .gdbserver :1234 –attach pid .gdb (gdb) target remote :1234 (gdb) gcore coredump 文件中搜索“ dex.035”
105. 第二代壳 1. 内存重组法 2.Hook 法 3. 动态调试 4. 定制系统 5. 静绎 脱壳机 绎绎绎
106. 内存重组法 Dex 篇 ZjDroid http://bbs.pediy.com/showthread.php?t=190494
107. 内存重组法 Dex 篇 ZjDroid http://bbs.pediy.com/showthread.php?t=190494 对付一切内存中完整的 dex ,包括壳与动态加载的 jar
108. 内存重组法 so 篇 elfrebuild
109. 内存重组法 so 篇 elfrebuild 构造 soinfo ,然后对其进行重建
110. Hook 法 针对无代码抽取且 Hook dvmDexFileOpenPartial 失败 Hook dexFileParse http://androidxref.com/4.4_r1/xref/dalvik/vm/DvmDex.cpp
111. Hook 法 针对无代码抽取且 Hook dvmDexFileOpenPartial 失败 Hook dexFileParse https://github.com/WooyunDota/DumpDex
112. Hook 法 针对无代码抽取且 Hook dexFileParse 失败 Hook memcmp http://androidxref.com/4.4_r1/xref/dalvik/vm/DvmDex.cpp
113. Hook 法 针对无代码抽取且 Hook dexFileParse 失败 Hook memcmp
114. 定制系统 修改安卓源码并刷机-针对无抽取代码 https://github.com/bunnyblue/DexExtractor
115. 定制系统 修改安卓源码并刷机-针对无抽取代码 https://github.com/bunnyblue/DexExtractor Hook dexfileParse
116. 定制系统 DexHunter- 最绎绎 大的二代壳脱壳工具 绎绎绎绎 绎绎 绎绎 https://github.com/zyq8709/DexHunter DexHunter 的工作流程
117. 定制系统 DexHunter- 最强大的二代壳脱壳工具 https://github.com/zyq8709/DexHunter DexHunter 的工作原理
118. 定制系统 绕过三进程反调试 http://bbs.pediy.com/showthread.php?p=1439627 修改系统源码后:
119. 动态调试 绕过三进程反调试 http://www.cnblogs.com/lvcha/p/3903669.html ls /proc/345/task ./gdbserver :1234 --attach346 ... (gdb) gcore gcore 防 Dump 解决方案: http://bbs.pediy.com/showthread.php?t=198995
120. 动态调试 断点 mmap 调试,针对 Hook dexFileParse 无效 原理: dexopt 绎 化绎 绎 ,dvmContinueOptimization()->mmap()
121. 静态脱壳机 分析壳 so 绎 绎 并绎 绎 绎 绎 原加密算法 绎绎 http://www.cnblogs.com/2014asm/p/4924342.html
122. 静态脱壳机 自定义 linker 脱 so 壳 https://github.com/devilogic/udog main() -> dump_file()
123. 第三代壳 1.dex2oat 法 2. 定制系统
124. dex2oat 法 ART 模式下, dex2oat 生成 oat 时,内存中的 DEX 是完整 的 http://bbs.pediy.com/showthread.php?t=210532
125. 定制系统 Hook Dalvik_dalvik_system_DexFile_defineClassNative 枚举所有DexClassDef ,对所有的 class ,调用 dvmDefineClass 进行强制加载
126. 第 N 代壳 so + vmp 动态调试 + 人肉还原 NOW AND FUTURE
127. 安全防护 1. 安全建议 2. 其它安全技术 3. 代码安全审计 4. 安全测试框架 5.App 加固 6.App 测试平台
128. 安全建议 1. Proguard 混淆 proguard-android.txt 2. Log 清除 3. so 符号 strip g++ -fvisibility=hidden –s 4. so ollvm https://github.com/obfuscator-llvm/obfuscator 5. 使用未公开的安全技绎 6. 安全审计
129. 其它安全技术 DEX 自修改技术 selfmodify https://github.com/leonnewton/selfmodify
130. 其它安全技术 so 模块隐藏技术 Android_memLoader https://github.com/1683942030/Android_memLoader_src
131. 代码安全审计 安卓平台审计框架 drozer https://github.com/mwrlabs/drozer
132. 代码安全审计 安全测试框架 MobSF https://github.com/ajinabraham/Mobile-Security-Framework-MobSF
133. App 加固 加固平台 加固宝 http://jiagu.360.cn/
134. App 测试平台 扫描平台 网址 360 捉虫猎手 http://appscan.360.cn 阿里聚安全漏洞扫描 http://jaq.alibaba.com/ 腾讯金刚审计系统 http://service.security.tencent.com/kingkong 百度移动云测试中心 http://mtc.baidu.com/startTest/safe AppRisk Scanner https://apprisk.newskysecurity.com 爱加密 http://www.ijiami.cn/ 梆梆加固 https://www.bangcle.com/ AppTest 掌测 http://www.appstest.cn/ TestIn 测试平台 www.testin.cn/ 腾讯优测 http://utest.qq.com/ 爱内测 http://www.ineice.com/ AppScan http://www-03.ibm.com/software/products/zh/appscanmobile-analyzer Fortify SCA http://www8.hp.com/us/en/software-solutions/applicatio n-security/
135. 所有文件与 ppt https://yunpan.cn/Oc6IY2WDM5MyxE (提取绎绎 :2e36 )
136. 谢 谢