当前位置:首页 > 报告详情

内窥镜-反混淆虚拟化加固的安卓程序-更新.pdf

上传人: 2*** 编号:140488 2023-08-31 41页 7.63MB

1、内窥镜-反混淆虚拟化加固的安卓程序演讲人:余帘虚拟化加固简介及研究背景01Rhino逆向RHINO字节码的特殊案例02加固后的程序结构更常见的虚拟化加固程序模式03恢复原始字节码基于已知模式进行逆向04观点和总结安卓程序加固趋势05目录/CONTENTS虚拟化加固是指将原始程序中包含的代码指令“编译”成由一组特定的自定义指令组成的字节码,并在自定义的虚拟机上执行该字节码。它是混淆手段中强度较高的一种,常用于:虚拟化加固简介非法用途:隐藏恶意行为,提高分析和执法难度合法用途:反剽窃、防抄袭,保护软件知识产权等近年来,安卓系统上使用虚拟化加固技术对应用进行混淆的案例持续增加。虚拟化加固安卓应用与加

2、固PC程序的区别在于,安卓存在多层次的架构,加固器普遍会利用Java Native Interface(JNI)进行跨层函数调用,而PC程序不存在这种特征。虚拟化加固安卓应用研究背景后续,我们又遭遇了多款在野的安卓恶意程序,它们使用了更为常见的虚拟化加固模式,并且加固器是闭源的。前述的逆向方法对这些程序不再适用,因此我们采用了一种更加通用的方法进行逆向,还原出混淆前的字节码数月前,我们发现一个安卓恶意样本的主要逻辑被编译成字节码,在Rhino JS引擎上执行,且源码字段被故意置空了。这种类型的混淆不是严格意义上的vmp但有相似之处。我们通过分析Rhino引擎的解释执行过程,能够逆向还原出部分原

3、始语义。Custom Virtual MachineInterpreter虚拟化加固简介及研究背景01Rhino逆向RHINO字节码的特殊案例02加固后的程序结构更常见的虚拟化加固程序模式03恢复原始字节码基于已知模式进行逆向04观点和总结安卓程序加固趋势05目录/CONTENTSRhino字节码案例-JS on AndroidonCreate()of Entry Activity handleIntent()doExecution()executeScriptWithContinuations()decrypt()这个恶意程序主Activity的onCreate()加载并执行一个Interp

4、retedFunction对象,该对象只保存字节码而非源码,使用interpretLoop()中一个有大量分支的switch-case语句解释执行。不像Dalvik字节码已有多款工具能够把它反编译成人类易读的java,目前没有现成工具可以逆向Rhino字节码Rhino字节码的生成Js源码抽象语法树(AST)字节码解析生成解释执行”foobar.split().reverse().join();rootExpressionStatementFunctionCallPropertyGetStringLiteral“”FunctionCallName“join”PropertyGetFunction

5、CallNamePropertyGet“reverse”StringLiteral“”StringLiteral“foobar”Name“split”Icode_LINEIcode_REG_STR_C0STRINGIcode_REG_STR_C1Icode_PROP_AND_THISIcode_REG_STR_C2STRINGIcode_REG_IND_C1CALLIcode_REG_STR_C3Icode_PROP_AND_THISIcode_REG_IND_C0CALLIcode_REG_STR1Icode_PROP_AND_THISIcode_REG_STR1STRINGIcode_RE

6、G_IND_C1CALLIcode_POP_RESULTRETURN_RESULT-42-16-4341-3338-44-16-3238-45-16-4541-33逆向-从字节码重建ASTIcode_LINEIcode_REG_STR_C0STRINGIcode_REG_STR_C1Icode_PROP_AND_THISIcode_REG_STR_C2STRINGIcode_REG_IND_C1CALLIcode_REG_STR_C3Icode_PROP_AND_THISIcode_REG_IND_C0CALLIcode_REG_STR1Icode_PROP_AND_THISIcode_REG

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要介绍了针对安卓程序的虚拟化加固技术及其逆向方法。 1. 虚拟化加固技术将原始程序中的代码指令编译成自定义字节码,并在自定义虚拟机上执行,常用于保护软件知识产权和隐藏恶意行为。 2. 文中分析了Rhino字节码的特殊案例,通过分析Rhino引擎的解释执行过程,能够逆向还原出部分原始语义。 3. 更常见的虚拟化加固场景中,加固器闭源,虚拟机在native库中实现,并进行针对特定应用的随机化,增加了逆向难度。 4. 提出了两种逆向方法:针对Rhino字节码的特殊案例,通过分析虚拟机重构AST,并从字节码中恢复源代码;对于更常见的情况,通过构建应用程序、收集执行跟踪日志,并使用软件基因,学习原始字节码和处理程序执行序列之间的映射关系。 5. 文中还提到了廉价打包器在Android恶意软件混淆中的应用,以及隐藏原始Dalvik字节码数据,并在执行期间将dex文件动态释放到内存中的另一种混淆技术。
如何逆向虚拟化加固的安卓程序? 虚拟化加固技术在安卓恶意软件中的应用趋势是什么? 如何通过软件基因识别处理程序?
客服
商务合作
小程序
服务号
折叠