记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

移动安全(十)|TengXun加固动态脱壳(下篇)

2020-09-09 22:40


yi




dong




an




quan





0x00背景





本文是团队新加入的大佬咸湿小和尚在研究腾讯加固动态脱壳的一些总结经验,篇幅较长,希望各位大佬在细品之下有所收获~




0x01本文目录







0x02实验目的




通过动态分析调试对腾讯加固进行脱壳尝试





0x03实验开始






本篇为上一篇移动安全(九)|TengXun加固动态脱壳(上篇)的延续,如果上篇未读,请先点击上面标题移步上篇 >>>>

6、找到关键的线程函数


发现是关键的runCreate,而对应的参数是78017D96


因此我们就要点击为上一个




进入到这里secshell的读取位置,这时候如果有经验的话,直接可以看到关键点在result,而result最后赋值hi在判断v8以后的


而相对较好就是每一个程序都跟踪一次



跟踪v8为判断javavm类型,是否存在libart.so文件,这时候如果模块中没有libart.so文件就说明执行的是23行这个分支:



因此,在23行跳进去函数后直接在其实头压栈的时候下好断点:



7、查看分析关键函数


然后查看程序:



得出:



这个时候进行流程图查看:



通过执行程序流程图,跟踪程序执行流程:



看到这里开始关注寄存器,堆栈,还有汇编的变化,记录每一步的变化:



关注点,跟踪解密特殊位置函数,已知数据大小为0x2840



跟踪计算偏移量,进行解密



可知计算下来的执行下来的R3=0x38C14R2=0x9710,然后R0=R3+R2,然后R3=0x1000, 然后R0=R0+R3=(0x38C14+0x9710)+0x1000,然后逻辑右移0xC,再逻辑左移0xC


因此写出python程序:


hex((((0x38C14+0x9710)+0x1000)>>0xC)<<0xC)


得到结果:



0x43000


而数据头文件大小为0x43000+0x28=0x43028


跟踪R0



这时候为了方便计算



dumpdex



staticmain(void){ autofp,begin,end,dexbytefp=fopen("C:\\dump.dex","wb"); begin=0x774CE000end=0x775C2000for( dexbyte=begin;dexbyte<end;dexbyte++)     fputc(Byte(dexbyte),fp);}


8、处理dex文件


可以看到,混淆到我都不知道是odex还是dex文件了



然后继续看程序,执行解密heard部分数据:



这里对R5进行处理:



双击R5跟踪:



这里竟然出现了dex


说明这里就是起始点,那么还有就是结束点


结束点=起始点+文件大小,应该就在源程序中:


跟踪每一个可疑的数据:



看到R20x70就是文件大小,因为:程序执行四个参数分别为寄存器的r0,r1,r2,r3



而在输出的时候显示:



而这个时候还有一个问题就是第一个程序的文件大小,这样只有偏移量没有大小


这时候又得回到源程序



可以看到这里面引入了一个新的变量v70=v00,然后v70执行了一系列操作


不管那么多,先执行,发现v100指向R3


R3A7C14



若要分析v100是否为文件大小,向上逻辑虽然找不到,但是至少v70跟踪可以看出


dumpdexheard文件



脚本:


staticmain(void)


{


autofp, begin, end, dexbyte;


fp= fopen("C:\\dump_heard.dex", "wb");


begin= 0xBED8EC54;


end= 0xBED8EC54+0x70;


for( dexbyte = begin; dexbyte < end; dexbyte ++ )


fputc(Byte(dexbyte),fp);


}


因此程序逻辑清晰了:


先获取到混淆的dex,然后根据偏移量,计算出起始点位置,然后再解密另一个dex文件头部和文件大小,然后拼接处再前面的dex的偏移量起始点处,这时候在赋上第一个文件大小A7C14


然后使用010editor


edit->selectrange



然后File->saveselection as file



保存后,到dexheard.dex中全选,edit->copy as hex


然后到前面保存好的dexpastefrom hex



打开dex



完美脱壳!





往期经典推荐:

漏洞笔记|记一次与XXE漏洞的爱恨纠缠

深入探究浏览器编码及XSS Bypass

Apache Solr远程命令执行复现

“最后”的Bypass CDN 查找网站真实IP

渗透实战(一)|BSides Vancouver 2018 (Workshop)

移动安全(一)|Android设备root及神器Xposed框架安装

内网信息收集篇

  MSF 下域内渗透

>>关于我们:

WhITECat安全小组隶属于起源实验室分支安全小组,主要致力于分享小组成员技术研究成果、最新的漏洞新闻、安全招聘以及其他安全相关内容。团队成员暂时由起源实验室核心成员、一线安全厂商、某研究院、漏洞盒TOP10白帽子等人员组成。

欢迎各位大佬关注^_^

关注我们

开放共享


扫描上方二维码添加关注

一起分享安全狮的日常








知识来源: https://mp.weixin.qq.com/s?__biz=MzIwMDcyNzM0Mw==&mid=2247484470&idx=3&sn=40d185a659934c45851273d88353199a&chksm=96f98a76a18e0360db133009867d23dba48de9f0729884730b09b26d240acb5ed74b09818907&scene=27&k

阅读:20968 | 评论:0 | 标签:移动 加固 安全

想收藏或者和大家分享这篇好文章→复制链接地址

“移动安全(十)|TengXun加固动态脱壳(下篇)”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

ADS

标签云