欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]VirtualApp无脑脱某0的壳

[原创]VirtualApp无脑脱某0的壳

测试例子就用http://bbs.pediy.com/thread-213214.htm这个帖子的例子了,前面我已经介绍过了这个项目是个虚拟引擎,其实可以做很多事,那么我们怎么利用这个项目来脱壳呢?

其实很简单,就是利用Hook.

前面的帖子里介绍过了各种反调试啊,然后不停的找之类的,那么我们不这样做。我们只Hook打印日志,看看能得到什么信息。

我们需要hook哪些函数呢?

mprotect
mmap
open
munmap
memcmp

这个五个函数,先hook起来,然后把参数打印一遍即可。

这样我们就可以得到一个加壳App的执行流程。

HOOK_SYMBOL(RTLD_DEFAULT,mprotect);

HOOK_SYMBOL(RTLD_DEFAULT,mmap);

HOOK_SYMBOL(RTLD_DEFAULT,open);

HOOK_SYMBOL(RTLD_DEFAULT,munmap);

HOOK_SYMBOL(RTLD_DEFAULT,memcmp);

在日志当中我们看到这样的一段日志。

open了一个2.dex

调用libart当中的

art::EncodedStaticFieldValueIterator::ReadValueToField

这个函数。

所以这个2.dex很可能就是脱壳之后的dex。

我们在memcpy当中这样hook

HOOK_DEF(int,memcmp,const void *buf1, const void *buf2, unsigned int count){

    //LOGD(">>>>> memcmp >>> start: %s, size_t: %d", buf1, count);    int ret = orig_memcmp(buf1, buf2,count);    if(!ret && strstr((char*)buf2,"dex"))

    {

        int size = *(int*)((int)buf1+0x20);        LOGD(">>>>> in >>>>>> memcmp >>> start: %s, size_t: %d", buf2, size);        if(size == 687136) {

//            HexDump((char *) buf1, size, (int) buf2);            FILE* fp = fopen("/sdcard/1.dex","w");            fwrite(buf1,size,1,fp);            fflush(fp);            fclose(fp);        }

    }

    return ret;}

先将这个dex给保存下来。

然后分析,里面就会出现oncrate函数 是native的了。

接下来如何分析得到这个oncrate函数的函数体呢?


我们是不是可以hook env的注册方法?

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功