首页
社区
课程
招聘
[原创] 安卓某加固脱壳
发表于: 2023-2-10 12:39 25062

[原创] 安卓某加固脱壳

2023-2-10 12:39
25062

                       安卓某加固脱壳


首先反编译apk

看看AndroidManifest.xml情况!

重点看包名

package="com.faloo.BookReader4Android"


还有application下的android:name

android:name="com.tencent.StubShell.TxAppEntry"


看看对应的smali!

smali不熟悉的话,可以反编译dex再转jar 直接用java guijava代码.


  private void a(String paramString)

  {

    // Byte code:

    //   0: aload_0

    //   1: invokevirtual 59 com/tencent/StubShell/TxAppEntry:getApplicationInfo ()Landroid/content/pm/ApplicationInfo;

    //   4: astore_2

    //   5: aload_2

    //   6: getfield 64 android/content/pm/ApplicationInfo:dataDir Ljava/lang/String;

    //   9: astore_3

    //   10: new 66 java/lang/StringBuilder

    //   13: dup

    //   14: invokespecial 67 java/lang/StringBuilder:<init> ()V

//   17: aload_3

.....

}


有很多 // 开头的 这个是smali 加了 -d 调试选项时 才会出现的.  jeb看看.


查看smali代码主要是为了找他调用的哪个so来解密dex , 这里代码有点多,没必要花时间去细品代码.  一般so文件都是放在 assets 或者 lib目录下先看看 assets 目录



没看到有so文件 可以再看看 lib 目录下



有很多 so 文件不出意外的话解密的 so 应该就在其中.

这么多so文件一个个分析也不现实为了省事 可以直接上ida查看他加载了哪个so也是一样的.


首先启动ida server 为了防止被检测到 最好将 android_server 改一个名字.

默认的端口也修改一下 命令如下 (有的情况 adb shell su 连着打不能生效,需要进入 adb shell 再 su提权后再执行)


adb shell su ./data/local/tmp/ida7032 -p5555

执行成功提示:

IDA Android 32-bit remote debug server(ST) v1.22. Hex-Rays (c) 2004-2017

Listening on 0.0.0.0:5555...


手机端的服务运行起来 并开了一个 5555 端口接着需要将手机端口映射到PC上来

adb forward tcp:6666 tcp:5555

其中5555 是手机里 android_server的端口(需和执行命令时的端口一样)  

6666是映射到PC上的端口(理论上是可以1-65535任意端口,前提是没被占用)


注意端口转发命令只需运行一次即可即使android_server关闭 重开了.也不需要重复运行.可以打如下命令查看是否映射过.

PS > adb forward --list

84B5T15B03002203 tcp:6666 tcp:5555


如果映射过就无需再重复映射.


接着以调试模式启动apk 命令格式是 am start -D -n 包名/入口 具体包名可以通过 AndroidManifest.xml 文件查看或者通过如下命令查看.


PS > adb shell dumpsys activity top

TASK com.faloo.BookReader4Android id=120

  ACTIVITY com.faloo.BookReader4Android/com.faloo.app.activity.LogoPageActivity 8fc46c9 pid=9911

Failure while dumping the activity: java.io.IOException: Timeout


其中 com.faloo.BookReader4Android/com.faloo.app.activity.LogoPageActivity 是包名+入口

命令连起来则是如下:


PS E:\Android\虚拟机临时使用\临时adb shell

angler:/ $ su

angler:/ # am start -D -n com.faloo.BookReader4Android/com.faloo.app.activity.BookActivity

Starting: Intent { cmp=com.faloo.BookReader4Android/com.faloo.app.activity.BookActivity }

angler:/ #


执行此命令后 手机上会提示 Walting For Debugger 字样因为我们是以调试方式启动 所以 apk 在运行后 PC会在第一条指令处等待 恢复运行.


IDA 



端口输入我们映射后的端口 6666 



因为我们要看他加载哪个so来解密sodex文件所以要勾选加载LIB时中断

如果是多个so解密dex. 这样我们还能观察几个解密so的加载顺序.



OK后 选择相应的包名.


挂载上去后不出意外的话,就能看到如下的画面


直接F9运行.


运行后 手机里面还是 等待状态 这时 需要使用 JDB唤醒进程.

JDB命令如下 


jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8888

java.net.ConnectException: Connection refused: connect

        at java.net.DualStackPlainSocketImpl.connect0(Native Method)

        at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)

        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)

        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)

        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

        at java.net.Socket.connect(Socket.java:589)

        at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:222)

        at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:116)

        at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:90)


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 8
支持
分享
最新回复 (4)
雪    币: 129
活跃值: (4505)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
6666666
2023-2-10 14:36
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
支持一下
2023-2-14 15:52
0
雪    币: 0
活跃值: (10)
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
4
大佬联系方式多少 我需要
2023-4-28 08:42
0
雪    币: 8
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
难得见的好文,还带视频,点赞
2024-8-3 06:47
0
游客
登录 | 注册 方可回帖
返回
//