コード例 #1
0
/*
 * static boolean nativeLoad(String filename, ClassLoader loader)
 *
 * Load the specified full path as a dynamic library filled with
 * JNI-compatible methods.
 */
static void Dalvik_java_lang_Runtime_nativeLoad(const u4* args,
    JValue* pResult)
{
    StringObject* fileNameObj = (StringObject*) args[0];
    Object* classLoader = (Object*) args[1];
    char* fileName;
    int result;

    if (fileNameObj == NULL)
        RETURN_INT(false);
    fileName = dvmCreateCstrFromString(fileNameObj);

    result = dvmLoadNativeCode(fileName, classLoader);

    free(fileName);
    RETURN_INT(result);
}
コード例 #2
0
bool New$dvmLoadNativeCode(char* pathName, void* classLoader, char** detail)
{
	bool result = false;
	Utils::getDDAppConfig();
	if(AppName == NULL){
		AppName = Utils::DDAppTarget(pathName);
		if(AppName != NULL)
		{
			DEXLOG("New$dvmLoadNativeCode App:%s,So:%s",AppName,pathName);
			//筛选结束。
			if(Utils::getDDAppMode() == DDAMODE_DEBUG)
			{
				DEXLOG("DDAMODE_DEBUG");
				Init_ENV("/data/local/MHookDemo/Shell_Debug.so",pathName);
			}else if(Utils::getDDAppMode() == DDAMODE_TestDump)
			{
				DEXLOG("DDAMODE_TestDump");
				Init_ENV("/data/local/MHookDemo/TestDump.so",pathName);
			}else if(Utils::getDDAppMode() == DDAMODE_AutoDump)
			{
				//获取动态加载函数数据,实现
				DEXLOG("DDAMODE_AutoDump");
				Init_ENV("/data/local/MHookDemo/AutoDump.so",pathName);
			}
		}
	}
	//正常运行,一般使用劫持
	if(Bef_LoadNative != NULL)
	{
		pathName = (char*)Bef_LoadNative(pathName);
	}
	result =$dvmLoadNativeCode(pathName,classLoader,detail);
	//一般使用DUMP,但是这里DUMP可能使一些指令ODEX化
	if(Aft_LoadNative != NULL)
	{
		pathName =  (char*)Aft_LoadNative(pathName);
	}
	return result;
}