摘要:http://www.epubit.com.cn/book/onlinechapter/33620 阅读总结两个层面上的hook: java层:需要了解虚拟机的特性与java上反射的使用; native层:难点在于理解elf文件。关键在于如何找到函数的入口点、替换函数。对于进程附着,Android的...
阅读全文
摘要:一、使用DDMS1.将程序使用apktool转化为smali代码,在关键代码左右注入log代码(的smali形式,如输出寄存器v0的值),之后重新打包apk,再执行时可以从 logcat 中看到输出。2.栈跟踪法:如,在关键代码左右插入new Exception("print trace").p...
阅读全文
摘要:原生程序有静态链接和动态链接两种,其中动态链接又分为动态链接程序和动态链接库。静态链接:需要在gcc编译参数中指定 -Bstatic,在生成可执行程序时会链接crtbegin_static.o 和 ctrend_android.o目标文件。crtbegin_static.o中定义了静态链接程序的启动...
阅读全文
摘要:jvm虚拟机:指令集为零地址形式的指令集,即指令的源参数和目标参数都是隐含的,通过java虚拟机中提供的一种数据结构“求值栈”来传递。dalvik虚拟机运行时也为每个线程维护一个PC计数器和调用栈,此调用栈 维护一份寄存器列表,寄存器的数量在方法结构体的registers字段中给出,DVM根据这个值...
阅读全文
摘要:HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。握手过程的简单描述如下:1.浏览器将自己支持的一套加密规则发送给网站。2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站...
阅读全文
摘要:1. 加壳apk的加壳:在程序外面再包裹一层代码,保护里面的代码不被非法修改或者反编译。被保护的程序用加密算法加密,解密逻辑写在作为壳的APK中,实际执行的是被保护的程序。大多是通过DexClassLoader或者隐藏的函数openDexFile将源dex(即被保护的app)加载进来,然后动态替换A...
阅读全文