跳至主要內容

脱壳管理

missking大约 2 分钟

重要

脱壳功能主要是针对一代整体壳和二代抽取壳进行处理,vmp以及dex2c之类的java代码native化无法处理

脱壳管理主要是为了更灵活的定向脱壳,根据样本的不同在脱壳的过程中会碰到各类问题,例如脱壳过程闪退,或不会正常进入脱壳流程时,或脱出的文件中依然没有显示正确的应用代码,需要根据自身碰到的情况,来调整选项或脱壳时机。下面是脱壳管理功能界面。

脱壳管理
脱壳管理

启动脱壳,开启脱壳功能的选项,目标应用在启动过程中,自行脱壳。

更深的调用链,启动后会生成对应的bin文件和对应dex文件的完整类列表,脱壳完成后,会自动将所有dex文件修复合并。也可以在功能中手动修复。该功能开启后,可以配合模块管理功能,让函数执行到更深层,拿到解释执行前的真实代码。

阻塞的主动调用,当碰到启动过程执行过脱壳流程,但很快因为非主动调用的其他原因,应用出现了闪退,这种情况可以通过阻塞的主动调用,让其在主线程脱壳。避免因为其他线程原因导致崩溃

DefineClass脱壳,这是一个脱壳时机,该时机脱壳出来的文件中包含define字符串。

脱壳白名单,脱壳过程中会模糊匹配白名单中的每行内容,匹配不上则跳过。一般用于想要脱指定类所在的dex文件。

脱壳黑名单,脱壳过程中会模糊匹配黑名单中的每行内容,匹配上则跳过,一般用于函数运行会直接关闭应用,或导致崩溃的函数。例如脱壳过程一直是执行到某个函数就闪退。或者某个系统类或第三方库,能确定非保护函数。可以尝试将该函数拉黑

白名单路径选择,上面的白名单功能是基于遍历所有dex的类列表,然后模糊匹配其中属于白名单中的类进行主动调用。而路径选择的白名单文件中必须是完整类名,会直接遍历该文件对其中的所有类进行处理。上方更深调用链产出的dex文件的完整类列表文件,也可以作为白名单文件。