首页
社区
课程
招聘
[求助]cydia无法hook apk中的so
发表于: 2018-5-17 13:06 3361

[求助]cydia无法hook apk中的so

2018-5-17 13:06
3361
在我的nexsu5 4.4.0系统上,能hook 系统中的方法(dexFileParse),但是第三方apk中so的方法不能hook。

我的hook.cpp代码如下
#include <jni.h>
#include <string>
#include "android/log.h"
#include "substrate.h"
#include "DexFile.h"
#include <unistd.h>
#include <sys/mman.h>

#define LOGI(...)  __android_log_print(ANDROID_LOG_INFO, "tonghu", __VA_ARGS__)


extern "C"{
    int (*original_getAge)(void);
}

extern "C" int replaced_getAge(void) {
	LOGI("new get age");
    return 99;
}
MSConfig(MSFilterLibrary, "libnative-lib.so")
MSConfig(MSFilterExecutable, "/system/bin/app_process")
MSConfig(MSFilterLibrary, "/system/lib/libdvm.so")

/**
 * we must use this to find other app's so
 * @param sopath
 * @param symbol
 * @return
 */
void* lookup_symbol(char* libraryname,char* symbolname)
{
	void *imagehandle = dlopen(libraryname, RTLD_GLOBAL | RTLD_NOW);
	if (imagehandle != NULL){
		void * sym = dlsym(imagehandle, symbolname);
		if (sym != NULL){
            LOGI("find symbol: %s", symbolname);
			return sym;
			}
		else{
			LOGI("(lookup_symbol) dlsym didn't work");
			return NULL;
		}
	}
	else{
		LOGI("(lookup_symbol) dlerror: %s",dlerror());
		return NULL;
	}
}

DexFile* (*oldDexFileParse)(const u1* data, size_t length, int flags);

DexFile *newDexFileParse(const u1* addr, size_t len, int dvmdex) {
    LOGI("new Dex File Parse");
	return oldDexFileParse(addr, len, dvmdex);
}

void hook(char* file, char* symbolName, void *origin, void **result) {
	MSImageRef image = MSGetImageByName(file);
    void *symbol;
	if (image != NULL) {
        symbol = MSFindSymbol(image, symbolName);
	} else {
		symbol = lookup_symbol(file, symbolName);
	}
    if (symbol == NULL) {
        LOGI("Can't find symbol again!!");
        return;
	}
    MSHookFunction(symbol, origin, result);
}



MSInitialize {
    LOGI("MSInitialize22");
    hook("/data/data/com.th.jnidebugtest/lib/libnative-lib.so", "getAge", (void *)&replaced_getAge, (void **)&original_getAge);
    hook("/system/lib/libdvm.so", "_Z12dexFileParsePKhji", (void *)&newDexFileParse, (void **)&oldDexFileParse);
};
请问各位大神是什么原因呢。是我手机系统版本的问题还是什么啊。我已经搜索好久了。

重启之后cydai的log如下
I/CydiaSubstrate(22784): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(22785): MS:Notice: Injecting: /system/bin/app_process
I/CydiaSubstrate(22785): MS:Notice: Loading: /data/data/com.th.cydiatest/lib/libhook.cy.so
I/CydiaSubstrate(22785): MS:Notice: Loading: /data/data/com.saurik.substrate/lib/libAndroidCydia.cy.so
I/CydiaSubstrate(22785): MS:Notice: Loading: /data/data/com.saurik.substrate/lib/libDalvikLoader.cy.so
I/CydiaSubstrate(22807): MS:Notice: Injecting: /system/bin/mediaserver
I/CydiaSubstrate(22834): MS:Notice: Injecting: /system/bin/bootanimation
I/CydiaSubstrate(22785): MS:Notice: Injecting: /system/bin/app_process
I/CydiaSubstrate(22785): MS:Notice: Loading: /data/data/com.th.cydiatest/lib/libhook.cy.so
I/CydiaSubstrate(22785): MS:Notice: Loading: /data/data/com.saurik.substrate/lib/libAndroidCydia.cy.so
I/CydiaSubstrate(22785): MS:Notice: Loading: /data/data/com.saurik.substrate/lib/libDalvikLoader.cy.so
I/CydiaSubstrate(23241): MS:Notice: Injecting: /system/bin/wpa_supplicant
I/CydiaSubstrate(23682): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23727): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23741): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23742): MS:Notice: Injecting: /system/xbin/supolicy
I/CydiaSubstrate(23743): MS:Notice: Injecting: /system/xbin/supolicy
I/CydiaSubstrate(23750): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23756): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23761): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23762): MS:Notice: Injecting: /system/bin/dhcpcd
I/CydiaSubstrate(23771): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23772): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23773): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23774): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23775): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23769): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23794): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23795): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23802): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23807): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23809): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23812): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23814): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23824): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23834): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23844): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23846): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23849): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23850): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23851): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23855): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23859): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23861): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23862): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23863): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23841): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23870): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23873): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate(23883): MS:Notice: Injecting: /system/bin/toolbox


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 2708
活跃值: (1723)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
用FRIDA  试试
2018-5-17 14:27
0
雪    币: 54
活跃值: (745)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
试一试只保留  MSConfig(MSFilterExecutable,  "/system/bin/app_process")    呢
2018-5-17 14:53
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
chmlqw 试一试只保留 MSConfig(MSFilterExecutable, "/system/bin/app_process") 呢
试了。不行 adb logcat -s tonghu  和adb logcat -s CydiaSubstrate的log
I/CydiaSubstrate( 3770): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 3769): MS:Notice: Injecting: /system/bin/app_process
I/CydiaSubstrate( 3769): MS:Notice: Loading: /data/data/com.th.cydiatest/lib/libhook.cy.so
I/CydiaSubstrate( 3769): MS:Notice: Loading: /data/data/com.saurik.substrate/lib/libAndroidCydia.cy.so
I/CydiaSubstrate( 3769): MS:Notice: Loading: /data/data/com.saurik.substrate/lib/libDalvikLoader.cy.so
I/CydiaSubstrate( 3778): MS:Notice: Injecting: /system/bin/mediaserver
I/CydiaSubstrate( 3826): MS:Notice: Injecting: /system/bin/bootanimation
I/CydiaSubstrate( 3769): MS:Notice: Injecting: /system/bin/app_process
I/CydiaSubstrate( 3769): MS:Notice: Loading: /data/data/com.th.cydiatest/lib/libhook.cy.so
I/CydiaSubstrate( 3769): MS:Notice: Loading: /data/data/com.saurik.substrate/lib/libAndroidCydia.cy.so
I/CydiaSubstrate( 3769): MS:Notice: Loading: /data/data/com.saurik.substrate/lib/libDalvikLoader.cy.so
I/CydiaSubstrate( 4226): MS:Notice: Injecting: /system/bin/wpa_supplicant
I/CydiaSubstrate( 4700): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4791): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4816): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4821): MS:Notice: Injecting: /system/xbin/supolicy
I/CydiaSubstrate( 4822): MS:Notice: Injecting: /system/xbin/supolicy
I/CydiaSubstrate( 4817): MS:Notice: Injecting: /system/bin/dhcpcd
I/CydiaSubstrate( 4826): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4828): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4831): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4832): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4836): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4841): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4848): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4849): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4850): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4851): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4852): MS:Notice: Injecting: /system/bin/toolbox
I/CydiaSubstrate( 4853): MS:Notice: Injecting: /system/bin/toolbox

I/tonghu  ( 3769): MSInitialize33
I/tonghu  ( 3769): find symbol: getAge
I/tonghu  ( 3769): MSInitialize33
I/tonghu  ( 3769): find symbol: getAge
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse
I/tonghu  ( 3769): new Dex File Parse

2018-5-17 15:18
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
chmlqw 试一试只保留 MSConfig(MSFilterExecutable, "/system/bin/app_process") 呢
使用frida很简单就可以了。果然很强大啊!!!
Interceptor.attach(Module.findExportByName("libnative-lib.so" , "getAge"), {
    onEnter: function(args) {
        console.log('open called!')
    },
    onLeave: function(retval) {
        retval.replace(100)
    }
})

2018-5-17 17:14
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
Vn小帆 用FRIDA 试试
果然frida可以。强大!!
2018-5-17 17:16
0
雪    币: 2049
活跃值: (2082)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
hook("/data/data/com.th.jnidebugtest/lib/libnative-lib.so",  "getAge",  (void  *)&replaced_getAge,  (void  **)&original_getAge); 
第二个参数  不要  带  &    ,函数名本事就是地址,本菜鸟测试  挂钩第三方so的时候  带&  就失败,不带  就正常。
2018-5-17 18:05
0
雪    币: 19
活跃值: (1111)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
frida不要太爽,基本都支持,比xposed好多了
2018-5-17 20:31
0
游客
登录 | 注册 方可回帖
返回