[置顶] Android Apk加壳原理分析

0x00    阅读本文前,建议读者首先阅读Android加壳原理,参考文章Android中的Apk的加固(加壳)原理解析和实现。如果没有看过这篇文章,本文理解起来比较困难。    0x01    下面我们来分析脱壳代码为什么要这样写,核心脱壳代码在ProxyApplication类里面,首先执行成员方法attachBaseContext,然后执行成员方法onCreate。    那么attach...
阅读(4422) 评论(8)

[置顶] Android安全之旅系列博客导读

总结下近一年的学习经历,以中国的新年为节点。时间从2015年年后到今天,2015年年末。    1、重新学习了一遍《Linux内核源代码情景分析上下册》,毛德操著,并记录学习历程,写下了博客。    2、重新学习了一遍《Android系统源代码情景分析》,罗升阳著,并记录从开机启动到Home界面的展示整个流程。    3、学习了一个小型java虚拟机的源代码,并调试修改源代码中的错误,最后可以运行...
阅读(2088) 评论(5)

Linux进程与线程及其他知识点拾遗

0x00进程与线程的区别    进程和线程都是由父进程创建出来了,区别在于是否共享页表和页目录表。    进程是通过系统调用fork来创建的。使用全新的页表和页目录表,实行copy_on_write策略。asmlinkage int sys_fork(struct pt_regs regs) { return do_fork(SIGCHLD, regs.esp, &regs, 0)...
阅读(183) 评论(0)

Linux内核页面换入换出

0x00内存页面分类与换入换出规则    内存页面分为用户页面和内核页面。    用户页面有以下几种:    1、普通的用户空间页面,包括进程的代码段、数据段、堆栈段、以及动态分配的存储堆。    2、通过系统调用mmap()映射到用户空间的已打开文件的内容。    这些页面既涉及分配、使用和回收,也涉及页面的换出/换入。    内核页面有以下几种:    1、kmalloc分配用作某些临时性的数...
阅读(236) 评论(0)

Android SO逆向-C++虚函数表解析

0x00 一般继承(无虚函数覆盖)class Base { public: Base() { ALOGD("Base ..."); } virtual void f() { ALOGD("Base::f"); } void g() { ALOGD("Base::g"); } virtual void h() { ALOGD("Base::h"); } virtual ~Base...
阅读(329) 评论(0)

AndroidManifest文件格式、Resource.arsc文件格式解析与混淆

0x01 AndroidManifest文件格式解析    1.1 文件格式解析    我们就不重新造车轮子了,参考Android逆向之旅---解析编译之后的AndroidManifest文件格式。    提示下,在看这篇文章时,大家最好下载了010editor,并且下载了解析AndroidManifest文件的模板AndroidManifestTemplate.bt,这样可以帮助我们更加清晰的理...
阅读(924) 评论(0)

反编译利器Apktool和Dex2jar导入源码以及编译调试

0x00 Apktool源码下载与导入    0.1 apktool源码下载    地址:https://github.com/iBotPeaches/Apktool。    0.2 导入    打开Android Studio,选择Open an existing Android Studio project,选择Apktool文件夹导入。   0x01 编译并调试Apktool源码    1....
阅读(1063) 评论(0)

Android SO 加载分析与导入表Hook、导出表Hook

0x00 参考文章    关于so加载分析,就是从System.loadlibrary开始的,层层玻璃代码真相,在Android SO 加壳(加密)与脱壳思路,我们说ELF Header中的一些字段是无用的,Section Header也是无用的,这是为什么呢?    答案是在so加载的过程中,没有使用的,有关Android so加载深入分析,请参考这篇pdf,http://download.cs...
阅读(1160) 评论(0)

Android NDK中C++ STL库动态和静态链接

0x00 本文参考    本文参考Android NDK中C++运行时库介绍。    我们在开发NDK的时候,经常需要使用C++ STL库开发,那么这些库是如何和我们的程序链接的呢?   0x01 C++ STL分类     这些静态链接库和动态链接库都位于哪呢?    答案是位于ndkpat/sources/cxx-stl。我们截图看下这个目录:    我们可以清晰的对照两张图。libstlpo...
阅读(1343) 评论(0)

Anti-Debugging Skills In APK

0x00 本文参考    本文主要是参考Anti-Debugging Skills In APK ,请读者先阅读此文,本文只是对其中的难点进行讲解和说明。   0x01 ida调试so原理    要理解反调试原理,首先要理解调试原理。有关如何使用ida调试so,请参考ida动态调试so,在init_array和JNI_ONLOAD处下断点。    几个关键的步骤,说明下原理:    1.1 在手机...
阅读(784) 评论(0)

Android SO 加壳(加密)与脱壳思路

0x01 常见的Android SO加壳(加密)思路    1.1 破坏Elf Header    将Elf32_Ehdr 中的e_shoff, e_shnum, e_shstrndx, e_shentsize字段处理,变为无效值。由于在链接过程中,这些字段是无用的,所以可以随意修改,这会导致ida打不开这个so文件。    1.2 删除Section Header    同样的道理,在链接过程中...
阅读(3786) 评论(1)

Android PLT/GOT 符号重定向过程

0x00 项目工程    项目地址:http://download.csdn.net/detail/jltxgcy/9602851。    下面列出核心代码:#include "com_example_ndkplt_PLTUtils.h" #include #include #include #include #define LOG_TAG "PLTUtils" #define ALOGD...
阅读(907) 评论(0)

Android SO 文件结构及readelf命令

0x00 Android SO 文件结构    so文件结构详细的分析,请看Android逆向之旅---SO(ELF)文件格式详解,这里就不重复造车轮子了。    我们待分析的so已经上传到csdn,下载地址:http://download.csdn.net/detail/jltxgcy/9602803。   0x01 readelf命令   1.1 so文件整体图       1.2 reade...
阅读(1190) 评论(0)

Inject Zygote and Hook Native Method(过反调试,过防dump)

0x00 进程注入    通过ptrace机制,调用目标进程的dlopen来加载我们的so,实现进程注入。    这部分知识在Android中的so注入(inject)和挂钩(hook) - For both x86 and arm,有详细的解释,请读者先阅读这篇文章。    那么被注入的进程是如何返回到我们的进程中呢?答案在regs->ARM_lr = 0。具体的分析请参考Android注入完全...
阅读(1298) 评论(0)

Android Inline Hook

0x00 Android Inline Hook    Inline Hook即内部跳转Hook,通过替换函数开始处的指令为跳转指令,使得原函数跳转到自己的函数,通常还会保留原函数的调用接口。与GOT表Hook相比,Inline Hook具有更广泛的适用性,几乎可以Hook任何函数,不过其实现更为复杂,考虑的情况更多,并且无法对一些太短的函数Hook。    项目代码:https://github...
阅读(1439) 评论(1)

Android SO ARM及Thumb2指令集

0x00 ARM寄存器    1.1 通用寄存器    1.未分组寄存器:R0~R7    2.分组寄存器:R8~812    R13:SP,常用作堆栈指针,始终指向堆栈的顶部,当一个数据(32位)推入堆栈时,SP(R13的值减4)向下浮动指向下一个地址,即新的栈顶,当数据从堆栈中弹出时,SP(R13的值加4)向上浮动指向新的栈顶。    R14:连接寄存器(LR),当执行BL子程序调用指令时,R...
阅读(834) 评论(1)

C语言字符串处理及内存管理函数

0x00    这一节,我们介绍下常用的C语言字符串处理函数和内存管理函数。    0x01    字符串处理函数:    strstr:返回字符串中首次出现子串的地址    详解地址:http://c.biancheng.net/cpp/html/174.html。    strchr:查找某字符在字符串中首次出现的位置    详解地址:http://c.biancheng.net/cpp/ht...
阅读(411) 评论(0)
312条 共21页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:468857次
    • 积分:8143
    • 等级:
    • 排名:第2165名
    • 原创:311篇
    • 转载:0篇
    • 译文:1篇
    • 评论:160条
    最新评论