8种壳的教学
本帖最后由 一块砖头 于 2021-12-22 20:28 编辑写在前面:
如题,有好几种壳的脱修教程,后续也会继续更新(不更爱加密)
但是苦于没有样本,如果知道什么软件的壳是我还没出的,烦请告知软件名(不会帮你脱,但是会给教程)
脱壳修复部分均为我根据我找到的教程进行整合整理之后的,因为太多了所以无法一一列出原贴链接(基本来自吾爱和MT论坛以及其他渠道)
注:本文主要是写给小白看,此处讲的小白,是指有一点基础的那种,不是给那些完全什么都不会的小白看。如果连一些很基本的东西都不懂,学脱壳也没用啊
对于修复后闪退的情况:
[*]操作失误
[*]软件自己有签名验证
[*]不是免费壳
[*]实际壳与显示的不符,一些开发者为了安全会多加几种加固的特征来迷惑软件和破解者
工具:
MT管理器
arm pro
BlackDex(强烈安利,脱壳神器)
这是我自己做的加固样本以及按教程脱壳修复后的
样本
备用链接:
https://pan.baidu.com/s/19KgwV48HlRmywlZDKq4p0A 提取码:52pj
讲解:1.如果脱壳修复后还是闪退,那就看看是不是操作原因,如果不是那就是软件自己的签名验证2.AndroidManifest.xml中的入口都在android:icon下面的android:name那一行
```
android:theme="@7f090000"
android:label="@7f080000"
android:icon="@7f030000"
android:name="要被替换的入口"#如果dex中入口为null就把这一行删除
android:hardwareAccelerated="true"
android:largeHeap="true"
```
3.dex文件中的入口就是引号中的文本
```
.field public static APPNAME:Ljava/lang/String; = "入口"
#如果是null就不用复制入口,把AndroidManifest.xml中的android:name那一行删除即可
```
4.脱出来的dex怎么删?
[*]无法打开的
[*]和原安装包中大小完全一致的
[*]壳dex(找有没有stub)
[*]最后再凭借自己的经验判断一下
5.脱出来的dex怎么处理?
先按4的步骤进行删除→用MT修复→批量重命名为classes{1}.dex→把那个“1”删除
6.教程中说的修复,就是用MT的dex修复功能进行修复
目录:
[*]梆梆
[*]腾讯
[*]百度
[*]蛮犀
[*]数字
[*]顶象
[*]arm伪加固
[*]随风
[*]随缘更
https://static.52pojie.cn/static/image/hrline/1.gif
梆梆加固:
打开原dex文件中的com/SecShell/SecShell/H,进入复制入口
```
.field public static ACFNAME:Ljava/lang/String; = "###ACFNAME###"
.field public static APPNAME:Ljava/lang/String; = "i.app.applicationMain"#这就是我们要的入口
.field public static ISMPAAS:Ljava/lang/String; = "###MPAAS###"
.field public static PKGNAME:Ljava/lang/String; = "com.yanben"
.field public static cl:Ljava/lang/ClassLoader;
```
然后替换到AndroidManifest.xml中替换入口,下面是替换后的
```
android:theme="@7f090000"
android:label="@7f080000"
android:icon="@7f030000"
android:name="i.app.applicationMain"#这里就是要替换的地方
android:hardwareAccelerated="true"
android:largeHeap="true"
android:supportsRtl="true"
android:resizeableActivity="true">
```
搜索
```
com.secneo.apkwrapper.CP
```
如果有就把那一段删除,下面显示的就是要删的
```
<provider
android:name="com.secneo.apkwrapper.CP"
android:exported="false"
android:authorities="com.yanben.CP"
android:initOrder="2147483647" />
```
用小黑盒(BlackDex)脱壳,把壳dex和无法打开的dex删除(详见讲解)
然后修复→重命名→添加到apk中覆盖掉原dex即可
残留:
[*]meta-data文件夹
[*]classes0.jar
[*]文件名带libSecShell的
https://static.52pojie.cn/static/image/hrline/1.gif
腾讯御安全:
打开原文件的dex,找到com/wrapper/proxyapplication/WrapperProxyApplication
进去复制入口后到AndroidManifest.xml中替换入口
这是dex中的入口
```
.field static baseContext:Landroid/content/Context; = null
.field static className:Ljava/lang/String; = "i.app.applicationMain"#这是入口
.field static mLoader:Ljava/lang/ClassLoader; = null
.field static shellApp:Landroid/app/Application; = null
.field static tinkerApp:Ljava/lang/String; = "tinker not support"
```
把脱出来的dex中的壳dex和无法打开的dex删除(详见讲解)
修复→重命名→直接加到apk中覆盖掉原dex即可
残留:
[*]tencent_stub
[*]tosversion
[*]0OO00l111l1l
[*]o0oooOO0ooOo
[*]文件名带有shell的
https://static.52pojie.cn/static/image/hrline/1.gif
百度加固:
打开壳dex,找到appinfo类,进去复制入口到AndroidManifest.xml中替换入口
小黑盒脱壳,把需要删除的dex删除
最后就是修复→重命名→添加到apk中覆盖原dex
残留:
[*]文件名带baidu
https://static.52pojie.cn/static/image/hrline/1.gif
蛮犀加固:蛮犀教程来源(正己)
进入原dex,找到com/mx/dA/dpa中的入口
复制到AndroidManifest.xml中替换入口(详见讲解)
再搜索
```
android:appComponentFactory="com.mx.dAC.dac"#把这行删除
```
如果这一行的末尾有个>,记得在这一行的上一行末尾加上一个>
然后把脱出来的dex,该删的都删了(详见讲解)
再修复→重命名→加到apk里覆盖掉原dex即可
残留:
[*]带mxsafe全删
https://static.52pojie.cn/static/image/hrline/1.gif
数字加固:
先用cn过签
小黑盒把dex脱壳,然后把该删的dex删了(详见讲解)
修复→重命名→添加到assets中的Epic或者arm_dex文件夹中即可
残留:
(因为用的是过签,所以这里残留文件不能删)
文件名带jiagu的
.appkey
https://static.52pojie.cn/static/image/hrline/1.gif
顶象加固:打开壳dex,按路径com/security/shell/AppStub1打开
```
.class public Lcom/security/shell/AppStub1;
.super Landroid/app/Application;
.annotation runtime Lcom/security/mobile/annotation/Config;
app = "com.one.tinker.MyApplication"#这个就是入口
appFactory = "android.support.v4.app.CoreComponentFactory"
versionStr = "dd2d09b486e704b2f124c173fbe65d37"
.end annotation
```
复制入口,打开AndroidManifest.xml进去替换
```
android:icon="@7f0d0005"
android:name="com.security.shell.AppStub1"#复制的入口替换到这里
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:resizeableActivity="false"
android:networkSecurityConfig="@7f120007"
android:appComponentFactory="com.security.shell.AppComponentFactory0">
#删除这行↑,然后在这行的上一行加个">"
```
最后就是用小黑盒脱壳→删掉该删的→修复→重命名→直接添加到包里覆盖原dex即可
残留:
[*]待会写
https://static.52pojie.cn/static/image/hrline/1.gif
arm:
先看看官方介绍,官方都说是伪加固了,所以我不打算写出来,我把一般的脱壳方法写在了文末,大家就当是一次练习吧(arm的样本上面也有)
残留:
[*]assets里的那几个dex
[*]文件名关键词arm
https://static.52pojie.cn/static/image/hrline/1.gif
随风加固:
教程来源—柒末雪
还是惯例,用小黑盒脱壳,然后删除该删的→修复→重命名
接下来的步骤和其他壳不太一样,所以讲细一点
在原dex中正则搜索invoke-static(.*), .*;->exit\(I\)V替换为空(去除虚拟机检测什么的)
然后导入虚拟机,用反射大师打开,搜索getapp,就可以得到入口(具体的我晚上回去会帖图)
最后,到xml里替换一下入口,再把弄好的dex加进去即可
https://static.52pojie.cn/static/image/hrline/1.gif
随缘更...
https://static.52pojie.cn/static/image/hrline/1.gif
后记:
其实你多脱几种壳就会发现,好像步骤都一样,在某个路径里找到真实入口,然后到axml里替换一下,再回填dex就可以了。
所以在最后讲一下一个基本的脱壳方法,跟着axml中android:name里字符串的内容,到壳dex里找真实入口,如果没有找到,那就按随风教程里说的用反射大师去查看入口,至于像梆梆那种还需要去多删一些内容的,在axml里多找找就好了
怎么看要不要替换入口?
找到android:icon下面的android:name这一行,看看里头的文本就知道了
怎么找真实的入口路径?
还记得上面说的文本吗?那段文本其实就是真实入口在壳dex中的路径
如:文本是"com.security.shell.AppStub1",那就打开dex然后一层一层打开进去慢慢看看哪个是入口
顶象的我没去找教程,就是跟着这一套标准方案来的,亲测有效,只是因为样本不够,又懒得看所以残留文件还没写罢了
如果对你有所帮助的话,可以给个免费的评分支持一下
虽然是随缘更,但是目前主流的壳都有了,建议收藏一下免得找不到(收藏这么多,顺便给个评分也是可以的) 本帖最后由 一块砖头 于 2021-6-4 11:30 编辑
写的不好不对的地方欢迎指正
目前还有:顶象娜迦准备更,但是没有样本,知道什么软件是这两种加固的还请告知(只会给教程,不会给成品) 非常喜欢你的小黑盒脱壳{:301_997:} @一块砖头 别加分页了,看起来特别恶心,好好的技术贴别弄这些乱七八糟的限制了。 偶尔.c 发表于 2021-6-8 01:33
样本是非fa软件,你要的话我可以私给你
这种的就没必要了,回头我遇上了再看看 一块砖头 发表于 2021-6-5 18:42
有样本吗?我目前还没有遇到这种情况,想试试
样本是非fa软件,你要的话我可以私给你 一块砖头 发表于 2021-6-4 11:20
写的不好不对的地方欢迎指正
目前还有:顶象娜迦准备更,但是没有样本,知道什么软件是这两种加固的还请告 ...
记得视频美颜助手就是顶象加固,挺简单的。另外排版标题级次要再分一下。 顶象娜迦去官方的平台加固一下一下,样本不就有了。
既然要写,那就把一些小众的也加上。比如:阿里、随风、dexprotector、arm 楼主能看下太平通这款app的壳吗?邦邦企业版的 GenW 发表于 2021-6-4 12:17
记得视频美颜助手就是顶象加固,挺简单的。另外排版标题级次要再分一下。
排版会在晚上回去之后更的,手机排版不是很方便
视频美颜助手我在很多个平台下过了,基本都没有加固 感谢楼主,写了这么多。
Hmily 发表于 2021-6-4 11:58
@一块砖头 别加分页了,看起来特别恶心,好好的技术贴别弄这些乱七八糟的限制了。
好的👌🏻 感谢分享,很不错