首页
社区
课程
招聘
[原创]VirtualApp无脑脱某0的壳
发表于: 2017-3-27 22:20 13875

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

2017-3-27 22:20
13875

测试例子就用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的注册方法?


[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 1
支持
分享
最新回复 (9)
雪    币: 6729
活跃值: (3902)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢分享, 学习了
2017-3-27 22:26
0
雪    币: 35
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

楼主解决了onCreate 吗? 你说hook env ,应该是hook findclass 和 registerNatives 这两函数吧? 可是就算Hook了,因为都是c++写的,里面的方法步骤可以dump出来? 变量值也可以吗?  dex是因为第一个参数就是内存地址,第二个是长度,所以可以直接写文件保存。 希望指教下

2017-3-28 06:04
0
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼主问一下,你用的hook库是哪个,找了好久的hook库了
2017-3-28 08:23
0
雪    币: 35
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5

为什么hook RegisterNatives. 会报错 :  Error: unable to find the Symbol : RegisterNatives. 

用法如下: HOOK_DEF(jint,RegisterNatives,jclass clazz, const JNINativeMethod* methods, jint nMethods)

2017-3-29 09:43
0
雪    币: 32
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
memcpy  memcmp  你是故意的吗?
2017-4-18 10:01
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这个方法早就不能用了,新某0把方法都重写了,运行前好像没什么漏洞可以抓了,要不就运行时,要不就调试
2017-4-18 14:06
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
围观大神操作
2017-8-16 10:41
0
雪    币: 116
活跃值: (354)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
支持
2018-3-8 17:28
0
雪    币: 7
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢分享  支持一下
2018-4-21 13:53
0
游客
登录 | 注册 方可回帖
返回
//