OLLVM + NDK 混淆编译环境搭建

2017-07-25
阅读 3 分钟
10.2k
代码混淆能起到很好的反逆向分析,类似于 java 的 proguard 混淆和 dex 文件的 dexguard 混淆工具,c/c++ 也有对应的 ollvm 混淆组件。

NDK 高级编程(笔记)

2017-07-24
阅读 4 分钟
3.9k
Android 开发中针对 NDK 的书籍很少,《Pro Android C++ with the NDK》也是出版的比较早的一本书,有些内容可能对现在的开发并不适用。但是书中介绍的内容比较全面,难度也不是很大,对于 NDK 开发有很大帮助,特别是在 NDK 开发的配置和代码规范上。

Android.mk 配置参数

2017-07-23
阅读 4 分钟
7.9k
Android.mk 的可配置参数会比较多,但是常用的可能很少。在进行多项目 ndk 共享的时候,如果对各个参数比较了解,对项目的结构优化有不小的好处。

DEX文件混淆加密

2017-02-12
阅读 24 分钟
10.9k
现在部分 app 出于安全性(比如加密算法)或者用户体验(热补丁修复bug)会考虑将部分模块采用热加载的形式 Load。所以针对这部分的 dex 进行加密是有必要的,如果 dex 是修复的加密算法,你总不想被人一下就反编译出来吧。当然也可以直接用一个加密算法对 dex 进行加密,Load 前进行解密就可以了,但是最好的加密就是让人分...

DEX文件格式分析

2016-11-30
阅读 10 分钟
15.6k
前段时间忙于破解移动和电信的 apk ,挺久没有更新博客了,最近在写个工具,主要功能是通过配置对 dex 文件中的类型、函数、属性进行隐藏,达到防止被静态分析的效果。所以在写工具前必须对 dex 的文件格式有个清晰的认识,相对于 elf 文件格式 dex 文件格式会简单一些。

无聊 crackme

2016-11-03
阅读 7 分钟
4.1k
最近超级想打球,然后打了五分钟就把脚踝给扭伤了。原以为10月已经够悲伤了,没想到11月还倒霉。还好还有一群小伙伴。在寝室休息了两天,动不了,想起了之前kindle下的好几本书都没看,看了一半的《白夜行》(还不错,手贱先百度了剧情。。。。。雪穗),然后有个比我更无聊的人,发了一个网址给我。。。

APK反逆向之二:四种基本加固方式

2016-10-28
阅读 16 分钟
12.8k
近些年来移动 APP 数量呈现爆炸式的增长,黑产也从原来的PC端移到了移动端,伴随而来的逆向攻击手段也越来越高明。本篇章主要介绍应用加固的最基础的四种方式:1.proguard 混淆 2.签名比对验证 3.ndk 编译 .so 动态库 4.代码动态加载

APK反逆向之一:监控debug

2016-10-13
阅读 8 分钟
5.9k
在开发和逆向过程中很多时候都需要动态调试,开发时候可以用开发 android 的 IDE进行调试,native层也可用调试,Android Studio早就可以进行 native 的debug调试了。但是在 release 后的 apk 如果还检测到了 debug 调试,那么说明该 apk 正被破解。

ELF文件格式分析

2016-10-09
阅读 14 分钟
22.9k
可执行链接格式(Executable and Linking Format)最初是由 UNIX 系统实验室(UNIX System Laboratories,USL)开发并发布的,作为应用程序二进制接口(Application Binary Interface,ABI)的一部分。工具接口标准(Tool Interface Standards,TIS)委员会将还 在发展的 ELF 标准选作为一种可移植的目标文件格式,可以在 32 位 ...

关于Android so文件你所需要了解的

2016-09-29
阅读 4 分钟
6.4k
现在很多第三方SDK都会提供 so, 关于 ndk开发的好处之前的文章也有做了介绍。但是在技术支持的过程中发现大多数的Android 开发其实并不知道怎么正确的集成so文件。一般技术都是把第三方提供的所有so都导入到工程中,这样做对应单个第三方so是没有问题的,但是如果集成了多个第三方问题就来了。

Android Java层的anti-hooking技巧

2016-09-29
阅读 10 分钟
5.9k
一个最近关于检测native hook框架的方法让我开始思考一个Android应用如何在Java层检测Cydia Substrate或者Xposed框架。

nexus5 刷 Android6.0+Xposed

2016-09-29
阅读 2 分钟
5.3k
官方的镜像刷机真是简单快捷,所有操作他都写好了脚本,你要做的就是运行它。当然前提是你已经安装好了ADB。下载的Android SDK里面就已经集成了,这里就不说了。 官方镜像下载地址

NDK开发-ReleaseStringUTFChars调用的坑

2016-07-02
阅读 3 分钟
18.6k
在开发中部分关键代码是在 NDK 中处理的,但是前段时间我们在线上日志中发现有少量的日志报错。通过排查我们发现问题出现在 NDK 的 ReleaseStringUTFChars 函数上。虽然找到了解决办法,但是我还是没有分析出具体的问题在哪。

"**游"强制更新破解

2016-06-22
阅读 5 分钟
7.3k
好久没有更新博客了,因为一些特操蛋的事情,一直没有心思写。上两周终于把《Android 软件安全与逆向分析》 看完了,然后就老是想找个 apk 练练手,但是水平太差,稍微加密就啃不动了。刚好遇到了这个 apk 习惯性逆向分析。

NDK开发-JNI 局部引用、全局引用和弱全局引用

2016-06-17
阅读 13 分钟
3.2k
这篇文章比较偏理论,详细介绍了在编写本地代码时三种引用的使用场景和注意事项。可能看起来有点枯燥,但引用是在 JNI 中最容易出错的一个点,如果使用不当,容易使程序造成内存溢出,程序崩溃等现象。《Android JNI局部引用表溢出》这篇文章是一个 JNI 引用使用不当造成引用表溢出,最终导致程序崩溃的例子。建议看完这...

NDK开发 - C/C++ 访问 Java 变量和方法

2016-06-17
阅读 9 分钟
3.5k
上一篇有提到 JNI 访问引用数组,涉及了 C/C++ 访问 Java 实例的方法和变量。虽然在之前的开发中,并没有用到 C/C++ 范围 Java 层数据,但是这部分内容还是很有用的。

NDK开发 - JNI数组数据处理

2016-06-06
阅读 6 分钟
36.4k
很多时候利用 NDK 开发都是为了对数据进行加密操作,因为单纯的 Java 太容易被反编译了,加密算法也就很容易被破解,而利用 C/C++ 开发可以加大破解难度。文件的数据加密就需要通过 byte 数组传给 JNI。

NDK开发 - JNI基本数据和字符串处理

2016-06-01
阅读 4 分钟
6.6k
第一篇搭建环境,第二篇了解开发流程,第三篇扯了一些理论,这一篇是时候展现真正的技术了,主要是写一些 JNI 的基本类型数据处理以及字符串的处理,字符串是最经常涉及的数据类型。

NDK开发 - JNI数据类型与Java数据类型映射关系

2016-05-25
阅读 1 分钟
3.7k
介绍完Android JNI的开发流程就要开始码代码了,不过在码代码前还是有必要了解下JNI数据类型与Java数据类型映射关系,直接开始写肯定会懵逼。

NDK开发 - JNI开发流程

2016-05-24
阅读 5 分钟
4.7k
JNI是Java和C/C++建立连接的桥梁,开发者可以将关键的加密算法通过用C/C++实现以提高被反编译的难度,保护APK的数据安全。又或者通过C/C++获取一些手机数据,以此来绕过类似Xposed这类作弊工具,提高数据的准确性。源码地址:[链接]

NDK开发 - Android Studio环境搭建

2016-05-22
阅读 6 分钟
8.3k
Android studio在很早版本已经开始支持NDK开发了,但是好像一直没有出正式版的gradle插件,现在最新的版本插件版本是0.6.0-alpha5。之前使用好像有点问题,具体忘记了。所以一直使用0.4.0版本开发。

APK多开原理

2016-05-17
阅读 5 分钟
32.7k
去年给运营同事解释了最简单的多开原理,最简单的方式通过修改包名达到多开的目的。很多 APK 现在已经不能通过这个方式达到多开了,虽然 LOW ,但是对了解多开原理还是有点用的。

APK自我保护 - 字符串处理

2016-05-15
阅读 3 分钟
6.6k
在开发过程中字符串不可避免,但是这些字符串也可能是破解的关键点,比如服务器的地址和错误提示这些敏感的字符串信息。如果这些字符串采用硬编码方式,很容易通过静态分析获取。之前的一篇blog以提示的字符串以突破点 Android程序逆向分析

Android程序逆向分析

2016-05-13
阅读 9 分钟
96.8k
最近在看《Android软件俺去与逆向分析》,所以把自己的实践过程整理一下。实例选自书中的第二章节,一个最简单的破解案例。分析Android程序是开发Android程序的一个逆向过程。在分析前必须要了解Android开发的流程,程序结构,语句分支,解密原理。

APK自我保护 - DEX/APK校验

2016-05-11
阅读 3 分钟
9.9k
DEX/APK 校验是在应用开发结束后,在本地计算出其 CRC 值或者 MD5值。在应用运行的时候,通过网络或者资源文件中获取事前算好的值进行比对,如果不一致则说明 DEX/APK 可能存在被篡改的风险。

APK自我保护 - 代码乱序

2016-05-10
阅读 4 分钟
4.8k
代码乱序是指在不影响原有的代码逻辑,打乱代码布局,增加逆向分析的难度。代码乱序的原理与操作并不复杂,但是必须分析编译后的源码逻辑,而且实际运用到生成中难度比较大,所以这里也只是提供一个思路。