逆向某视频app(二)

本文为纯技术分享,适合对xposed有兴趣的读者
逆向某视频app(一)
逆向某视频app(二)

前言

距离上一篇文章逆向某视频app(一) 已经过去快两年了φ(* ̄0 ̄),我来填坑了,上一篇文章讲了如何使用xposed破解apk,但是xposed有诸多限制,所以这篇文章来讲一下怎样通过修改smali代码破解apk并重新打包。
由于年代有些久远,这次我选择了其他的app,但是技术和原理都是一样的。 注意本文章只是技术研究,侵权立删

步骤

其实如果app没有加固,我们只需要掌握一点smali的语法就可以直接修改并打包了,但是加固之后就会麻烦很多,首先需要脱壳拿到真正的dex文件,然后再反编译dex找到并修改smali文件,接着还要修改AndroidManifest.xml文件,因为加固的时候也会修改这里,最后再重新打包。

工具

1.反编译apk

使用jadx打开apk文件,发现源码如下:
在这里插入图片描述
可以看到这里使用了邦邦加固看不到真正的代码,这里就需要脱壳了,下面是脱壳后的文件
在这里插入图片描述
把其中的dex拖到jadx中,可以看到已经能够看到原来的代码了
在这里插入图片描述

2.获取smali源码

baksmali可以让dex转成smali源码,smali可以让smali源码转成dex。
找到你要修改的smali所在的dex,使用baksmali反编译dex拿到smali源码,这里我们修改一下UserInfo的nickname字段,通过jadx我们发现这个类在0x742539b000.dex中
在这里插入图片描述
执行下面的命令编译

java -jar baksmali-2.3.jar d classse.dex

在这里插入图片描述

smali代码会输出到out文件夹中,下面就是修改。

3.修改smali文件

通过类的路径找到smali文件通过文本编辑器打开,由于我们要修改nickname,那就让getNickname返回一个固定字符串就可以了,先看一下getNickname在smali中是什么样的,(smali的语法这里就不展开了,可以自行去百度)

.method public getNickname()Ljava/lang/String;
    .registers 2

    .line 74
    //获取当前对象的nickname字段
    iget-object v0, p0, Lcom/xiaoxigua/media/net/bean/UserInfo;->nickname:Ljava/lang/String;
    //返回nickname字段
    return-object v0
.end method

修改后:

.method public getNickname()Ljava/lang/String;
    .registers 2

    .line 74
    const-string v1, "hello world"

    return-object v1
.end method

我们这里直接返回一个字符串,smali文件到这里就已经改好了。

我们将改好的smali转换成dex文件,执行下面的命令:

java -jar smali-2.5.2.jar a out
在这里插入图片描述

4.修复AndroidManifest.xml

首先使用apktools将下载下来的原始apk进行反编译:

java -jar apktool_2.6.0…jar d apkName

在这里插入图片描述
使用文本编辑软件打开AndroidManifest.xml。

由于加固后AndroidManifest.xml文件中的android:appComponentFactory=“com.SecShell.SecShell.AP”android:name=“com.SecShell.SecShell.AW” 被修改了,这里我们要改成原来的application,找一下application的位置并不难,至于appComponentFactory改成androidx.core.app.CoreComponentFactory 就可以了。

全局搜索SecShell 关键字,将有关的模块全部删除。

5.重新打包

还是使用上面反编译后的目录,将smali文件夹删除,然后将之前的dex文件拷贝过来,并修改成如下的命名:
在这里插入图片描述

执行命令打包apk

java -jar apktool_2.6.0…jar b apkName

成功之后会在文件夹下生成一个disk目录,里面就是重打包之后的apk,但是这个apk没有签名,需要重新签名之后,才能安装。

执行下面的命令生成一个签名文件

keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore

使用下面的命令对重打包之后的apk进行签名

jarsigner -verbose -keystore abc.keystore -signedjar apprelease_signed.apk apprelease.apk abc.keystore

最后安装这个apk文件。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
某flutter-app逆向分析是指对于一个使用flutter框架开发的应用进行逆向工程分析。逆向工程是通过分析应用的代码、进制文件等来了解其内部实现细节。 首先,我们需要获取该应用的安装包文件(APK或IPA文件),然后进行解包操作,将其转换为可读取的文件目录结构。 接下来,我们可以使用一些工具来提取应用的资源文件、代码文件等。对于flutter-app来说,可以提取出dart文件,这是flutter的主要代码文件,其中包含了应用的逻辑实现。 通过阅读dart文件,我们可以了解应用的代码结构、数据模型、界面设计等。可以分析应用的逻辑实现方法,包括各种函数、类、方法的调用关系。 同时,还可以通过分析相关配置文件、资源文件等来了解应用的各种设置、资源加载方式等。 在逆向过程中,还可以使用一些调试工具来进一步了解应用的运行机制。例如,hook工具可以拦截应用的函数调用,并捕获输入输出数据,用于进一步分析。 逆向分析的目的可以有很多,比如了解应用的工作原理、发现潜在的漏洞或安全问题、提供参考用于自己的开发等。 需要注意的是,逆向分析需要遵守法律规定。未经授权的逆向分析可能侵犯他人的知识产权,涉及到隐私等方面的问题。因此,在进行逆向分析之前,应该了解并遵守当地相关法律法规,避免产生法律纠纷。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值