objection源码分析记录
对神器objection的分析,学习一下frida的代码写法和大佬的思路
下方的大标题是objection的目录信息
androidliblibjava.tswarpJavaPerform(包装perform)123456789101112131415// all Java calls need to be wrapped in a Java.perform().// this helper just wraps that into a Promise that the// rpc export will sniff and resolve before returning// the result when its ready.export const wrapJavaPerform = (fn: any): Promise<any> => { return new Promise((resolve, reject) => { Java.perform(() => { try { r ...
MAS CRACKME3 分析笔记
第一印象首先拖进gda,看了一下,发现了四个甚至三个检测root
眼前一黑
随后看了一下native
可以看到是一个简单的异或然后比较,异或的key大概是主函数里的放到init的native里初始化的pizza(我去,pizza)
不过这里的异或还有一个数组是未知的,而这个数组它是由一个函数进行初始化的。混淆过的函数
感觉就是直接步过这个函数然后看数组值就行。
同时这里也有和level2一样的native反调试
直接用level2代码把exit hook了就差不多过了
个人想法是,java层把那几个checkroot全hook了,返回值恒等于true,然后native直接ida 动态调试提取数组就可以解了。
但是没做,直接看答案了,因为不知道那个类的是不是可以直接hook
看wp后分析主函数有个verifyLibs,完全没看到(寄
里面是对davlik字节码的检测和native代码的检测,用的是crc32
由于整个都是检测,直接pass掉就行,改dailvk代码即可
root检测总代码12345678910111213141516171819202122232425 ...
游戏安全-手游安全技术入门 阅读笔记
第一章静态修改文件游戏文件被静态修改并重新打包,签名
静态修改游戏资源修改游戏的资源文件,达到改变游戏逻辑或者塞入一些不健康信息的目的。
静态修改游戏代码一般手游都是用c++编写,通过编译后的游戏主逻辑的代码一般都用动态链接库保存。修改较多的是代码段和只读数据段,只读数据段的话存的一般是固定的一系列数据,一般是某些固定的参数。代码段自不用说。
修改配置和修改资源差不多,一般配置文件打包的时候都是加密的,但是一些游戏还是不加密,这样很容易达到篡改的目的。
动态篡改逻辑常规的动态篡改逻辑都会伴随着注入的操作,注入就是将动态链接库加载至目标进程,让目标进程执行动态链接库的代码,实现篡改逻辑
android平台的注入一般分为两种,一种是通过Zygote进程(xposed)渗透到目标进程之中,另一种是直接注入到目标进程之中。
IOS平台一般用MobileSubStrate组件将动态链接库注入游戏进程。
修改数据安卓可以通过”/proc/<pid>/maps”文件遍历有r标识的模块,然后读写”/proc/<pid>/ ...