Closed AdenTk closed 11 months ago
应该是没填完,代码就执行了
我有试过在填充后,把begin指针对应的size大小的dex文件保存到私有目录,使用jadx打开dex,发现抽取后的方法是有被填充回去的。
那把base.odex文件删掉试试
删除了/data/dalvik-cache/arm目录下的odex文件,确实可以正常运行,请问有什么措施可以不让他走odex呢?
试试hook execv,看有没有hook到dex2oat的执行
使用以下代码进行hook execv未发现他走dex2oat的过程
static void* (*oriexecve_addr)(const char *__file, char *const *__argv, char *const *__envp);
static void* (*oriexecv_addr)(const char *__path, char *const *__argv);
void* execve_addr22(const char *__file, char *const *__argv, char *const *__envp) {
DLOGD("process:%d,enter execve:%s", getpid(), __file);
if (strstr(__file, "dex2oat")) {
return NULL;
} else {
return oriexecve_addr(__file, __argv, __envp);
}
}
void* execv_addr22(const char *__path, char *const *__argv) {
DLOGD("process:%d,enter execv:%s", getpid(), __path);
if (strstr(__path, "dex2oat")) {
return NULL;
} else {
return oriexecv_addr(__path, __argv);
}
}
void hook_exec(){
void *execv_addr = DobbySymbolResolver(GetLibcPath(), "execv");
DobbyHook(execv_addr, (void *) execv_addr22,
(void **) &oriexecv_addr);
void *execve_addr = DobbySymbolResolver(GetLibcPath(), "execve");
DobbyHook(execve_addr, (void *) execve_addr22,
(void **) &oriexecve_addr);
}
这个问题后来有解决吗?
当前方式自己解决
dpt-android5.zip