2017年5月14日星期日

Android 逆向学习笔记 (九)- 从 Android 源码看 SO 的加载

分析完好久, 再不写估计要忘了 .... 做安卓逆向的时候常常会碰到写在 Shared Object(即 [*.so] 文件,下文 SO)的加固逻辑,碰到 SO 的时候惯性分析方法是:静态找 JNI_Onload / .init / .init_array 这些在加载之初会被调用的代码段或者是指向被调用代码段的指针段。 然而现在的加固基本上都会用各种方式抹掉函数关系、SHT 等导致直接静态分析 SO 时既不能从函数表里找到 JNI_Onload 也不能从 SECTION 里找到 .init,部分逆向人员在这种情况下走了弯路。 #1. Source Code Android 作为开源的系统,既然可以拿到源码,那么就可以尝试分析加载...
Read More

2017年5月11日星期四

ANDROID 逆向实例(八)- 乐固加固脱壳(2017.01)

虽然乐固做了一些反调试的东西,不过感觉比 Ali 更好分析一点,很多情况并不是反调试越厉害加固就越好。感觉 Ali 在加固方面做的比乐固有意思,Ali 利用 SP 来储存返回地址和参数所以整个流程很混乱,基本看上去就是在各种 JUMP,而乐固仍然是常规规的函数调用和返回方式,流程清晰很多。 另外想说一下,之前把对 Ali 壳的分析发到看雪了,可能因为我只把大概的流程放上去了所以有评论觉得这是一个很没技术的秒脱壳子,至于究竟这个壳子怎么样,好不好脱,完全没有自己尝试过。个人感觉 Ali 的壳子对于初学者来说有很深的学习意义,有不少有意思的细节,建议分析。 * 为了阅读这篇文章时更好理解文中所说内容,下面大多形如 [sub_]...
Read More

2017年4月25日星期二

ANDROID 逆向实例(七)- Ali 加固(2017.01)

也算是第一次独立完成壳子的分析大概花了两周的时间,通过这个壳子学到了很多,感觉学习价值还不错 ~ 先 apktool 看一下加固前后的目录结构,对比图如下,看出来主要修改的地方有两个,lib 下的 libdemolish.so 和 libdemolishdata.so,另一处是 com.ali.fixHelper 类。 这里还有一个需要留意的地方,原来的 Java 类都没有消失,目录结构也没有变化,先看一下加固后的 AndroidMainfest.xml。这里不贴图了,比较之后发现源 Mainfest 和加固后的 Mainfest 没有区别,入口还是 com.example.helloworld.MainActivity...
Read More

2017年4月9日星期日

OS X 逆向实例(二)- BetterZip 3.1.2

一直在用 BetterZip,之前是找了一个网上的 License 最近突然不能用了,感觉可能是 BetterZip 升级到 3.x 之后之前的 License 过期 ✊。过期的 BetterZip 有几个不方便的地方: 1. 不可以单个文件拖入/拖出压缩文件夹 2. 不可以保存修改过的压缩文件夹 3. 每次打开会弹框,提示需要更新 之前一直在用 Hopper 静态分析 MachO 感觉不爽的地方很多 😥 也不知道是不是用的有问题,最后还是操起 IDA,MachO 拖进去,静态分析的时候有一个需要注意的问题,因为 IDA 还原出的函数很多很多,需要确定一下哪些函数是 Crack Registration...
Read More