本帖最后由 正己 于 2021-4-12 22:02 编辑
前言:
今天偶然遇到一款加固,一开始mt没识别出来,我以为没加固,结果发现是mt没把加固特征写进去所以没显示。加固后的dex文件长这个样子。
过程:
1.于是,我索性去官网申请了个账号研究一下这个蛮犀加固。有标准版、高级版、旗舰版。因为没钱搞不起高级版研究哈哈哈,所以接下来的样本就是标准版(居然只能加固三次?好抠哦!小声bb,看看隔壁的数字)
2.看一下标准版的功能只有dex加固、防篡改、防动态调试。我自己用aide随便写了个helloworld去加固。
3.二话不说,先脱个壳再说,脱壳工具请随意(反射,fdex2,frida啥的都可以),我太懒了,直接arm云脱壳搞定了,对比了一下原包代码,并没有区别。脱下来的dex文件有两个,一个是壳文件,另一个是原包的dex。
4.接着mt修复一下dex文件,回填进安装包。这里说一下,因为样本helloworld没有入口,不然的话还需要修复入口。打开dex文件,入口所在路径:com/mx/dA/dpa,具体的入口如下代码:
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 26
const/4 v0, 0x0
sput-object v0, Lcom/mx/dA/dpa;->app:Landroid/app/Application;
.line 27
const-string v0, "" #文件入口,因为我这个样本没有,如果你们遇到了就复制这个
sput-object v0, Lcom/mx/dA/dpa;->sCachePath:Ljava/lang/String;
.line 28
sput-object v0, Lcom/mx/dA/dpa;->sApkPath:Ljava/lang/String;
.line 30
const/4 v0, 0x0
sput-boolean v0, Lcom/mx/dA/dpa;->bAlreadyInit:Z
.line 32
const-string v0, "android.app.Application"
sput-object v0, Lcom/mx/dA/dpa;->sApplicationName:Ljava/lang/String;
.line 33
const-string v0, ""
sput-object v0, Lcom/mx/dA/dpa;->sAppComFactoryName:Ljava/lang/String;
.line 34
const-string v0, "COPYFALSE"
sput-object v0, Lcom/mx/dA/dpa;->CopyToLibs:Ljava/lang/String;
return-void
.end method
5.打开AndroidManifest.xml文件,把上一步的入口复制替换掉加固入口(如果有的话),再删除未知代码
<application
android:theme="@7f050000"
android:label="@7f040000"
android:icon="@7f020000"
android:name="com.mx.dA.dpa" #因为样本没有入口,所以这段删除,如果你们遇到的有,则复制替换“”里的代码
android:debuggable="true"
android:allowBackup="true"
android:resizeableActivity="true"
android:appComponentFactory="com.mx.dAC.dac" #这句代码删除
>
6.删除assets中的加固文件
最后:
最后签名安装apk完美运行,总结一下,这个标准版跟梆梆、御安全的脱修方法不能说完全一致,只能说一模一样(滑稽)又水了一贴,妙呀!(滑稽滑稽滑稽)
样本链接:https://wwi.lanzouj.com/iMsg6nzdzta
|