-
-
[原创][分享]Dex动态加载关键函数调用链
-
发表于:
2020-3-21 17:35
5854
-
写在后面,以上所有图,都是上完@hanbingle师傅的课程后,自己看源码后整理的,如果有错误,欢迎指摘;最后在这里感谢@hanbingle师傅的指导和鼓励。
----------------------------更新实践部分-------------------
为了证实我的图中标注的脱壳点有效,拿了一个腾讯加固的例子
这里选取我之前总结的调用图中的DexFileVerifier::Verify
和DexFileVerifier
以及OpenFile
函数与DexFile::DexFile
函数作为脱壳点,
在函数中插入以下dump dex的代码
编译源码,刷机,
刷机成功后,安装并给予应用存储权限,然后运行app,并在sdcard目录下使用grep
命令过滤dex,最终得到脱壳后的文件如下
可以发现最终是可以脱下来的,有兴趣的可以测一测其他的加固,应当都是能脱下来的,测试的apk见
链接:https://pan.baidu.com/s/1zHzMVJ9XYT4q-NgwPRb12A 密码:q7x4
DexFileVerifier(const DexFile* dex_file,
const uint8_t* begin,
size_t size,
const char* location,
bool verify_checksum)
: dex_file_(dex_file),
begin_(begin),
size_(size),
location_(location),
verify_checksum_(verify_checksum),
header_(&dex_file->GetHeader()),
ptr_(nullptr),
previous_item_(nullptr) {
// 以下是添加的代码
char dexfilepath[100]={0};
int pid=getpid();
sprintf(dexfilepath,"/sdcard/%d_%d_DexFileVerifier.dex",(int)(size),pid);
int fd=open(dexfilepath,O_CREAT|O_RDWR,0666);
if(fd>0){
write(fd,begin,size);
close(fd);
}
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-3-27 10:10
被Simp1er编辑
,原因: 更新代码