这边由于公司提的需求,详情请看上一篇帖子
https://bbs.pediy.com/thread-246438.htm
这边尝试hook libc.so中的gettimeofday方法,但是在
MSImageRef image = MSGetImageByName("/system/lib/libc.so");
就报了image == null,so都没hook到,无法继续hook方法了
以为是游戏没有调用这个方法,打开游戏so,发现settime相关函数
hook了个遍,但是每次都是image == null,根本hook不到对应so
MSImageRef image = MSGetImageByName("/data/app/com.jzyx.dyqlb.xmw-1/lib/arm/libjzgame.so");
这边怀疑四点
1.Cydia Substrate框架不行,需要自己改动
2.我写的hook不对,需要改动
3.注入方式不对,必须动态注入so
4.hook的时机不对
整个过程
1.反编译目标apk,用ida找到对应的so中需要hook的方法
2.基于Cydia Substrate架构编写JNI,打出对应so
3.导入目标apk的lib,改目标apk主activity的oncreate方法,手动System.loadLibrary(“xxx.cy”);打好的so
4.回编译运行检测
结果每次都是image == NULL
JNI整体如下
/data/app/com.jzyx.dyqlb.xmw-1/lib/arm/libjzgame.so 为游戏内cocos2d的so库
#include <jni.h><br>#include <string><br>#include <android/log.h><br>#include "include/substrate.h"<br><br>#define TAG "HOOKDEMO"<br>#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__)<br><br>//指明要hook的lib<br>MSConfig(MSFilterLibrary, "/data/app/com.jzyx.dyqlb.xmw-1/lib/arm/libjzgame.so")<br><br>void (*old_ZN10cocostudio8timeline14ActionTimeline12setTimeSpeedEf)(float a);<br><br><br>void new_ZN10cocostudio8timeline14ActionTimeline12setTimeSpeedEf(float a) {<br> float temp = a*10;<br> old_ZN10cocostudio8timeline14ActionTimeline12setTimeSpeedEf(temp);<br>}<br><br>//初始化时进行hook<br>MSInitialize{<br> LOGE("MSInitialize");<br> MSImageRef image = MSGetImageByName("/data/app/com.jzyx.dyqlb.xmw-1/lib/arm/libjzgame.so");<br> if (image != NULL){<br> LOGE("image != null");<br> void * hookdemo = MSFindSymbol(image,"js_cocos2dx_Scheduler_setTimeScale");<br> if(hookdemo != NULL){<br> LOGE("hookdemo != NULL");<br> MSHookFunction(hookdemo,(void*)&new_ZN10cocostudio8timeline14ActionTimeline12setTimeSpeedEf,(void**)&old_ZN10cocostudio8timeline14ActionTimeline12setTimeSpeedEf);<br> } else{<br> LOGE("hookdemo == NULL");<br> }<br> }else{<br> LOGE("image == NULL");<br> }<br>}
不知道哪里的问题,请各位大佬指正
--------更新-----------
历时两天,已实现需求
简单讲就是写个so,apk去System.loadLibrary即可,其他什么got表,物理内存地址都是Cydia Substrate框架会解决
详细JNI https://blog.csdn.net/qq_26763799/article/details/82146582 写在这个博客里了,可以直接拿去打so
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2018-8-28 14:06
被到底打哪个龙编辑
,原因: