APP逆向 day27unidbg打包

一.前言

上三次我们把unidbg的基础到进阶都讲完了,现在我们来讲unidbg的大打包,打包分为两种打包,一种是传参一种是不传参,我根据往期案例挑几个和大家讲

二.不传递参数

这个我们拿车智赢举例子

2.1 配置和编译

点击这里

 再点击这几个选项

点击应用,这样就是配置好了

再这么选择点击

 点击

然后生成了一个out文件夹,其中圈出来的这个就是主要运行的jar包,然后我们把apk导入

这样我们就能够调用了,我们把他放入pycham,然后就可以使用终端调用和python代码调用了,这里我都教给大家

2.2 终端调用

我们进入到这个路径的根路径,执行

java -jar unidbg-0.9.7.jar

这样就能出值了

2.3 python调用

这里给出代码

import subprocess

cmd = f"java -jar  unidbg-0.9.7.jar"
signature = subprocess.check_output(cmd, shell=True, cwd="unidbg_0_9_7_jar")
data_string = signature.strip().decode('utf-8')
print(data_string)

三.传递正常参数 

tips:以后再打包别的 需要删除编译后的jar和配置文件 

3.1 传参的注意事项

1 因为使用python调用jar,需要动态传入参数给jar
2 借助于 java的main函数String[] args,把参数传入
java -jar xx.jar a=10
  public static void main(String[] args) {
          String a=args[0]
        BiliBili bili=new BiliBili();
        bili.sign();
    }

3 注意事项
3.1 参数中,如果包含 &  或者 空格,都会有问题
java -jar unidbg.jar  name=justin&age=19  # 会把& ,解析成空格--》
    String name=args[0]
    String age=args[1]
java -jar unidbg.jar  name=justin age=19 
    String name=args[0]
    String age=args[1]
    
3.2 我们的目标是,直接给它一个字符串  'name=justin&age=19&hobby=篮球'-->java拿到第0个位置字符串,自己通过 & 和 = 分割,放到 map中

3.3 要完成上述目标,传的时候,需要使用 "name=justin&age=19&hobby=篮球"  传入
    String str=args[0]  # name=justin&age=19&hobby=篮球
    

3.4 如果字符串特别长,终端也不支持
    -传一个文件名,把字符串放到文件中--》在java中打开文件读出来用
    
 4 python调用java,只支持传字符串形式

 3.2 编译和配置

我们先把这个配置的文件夹删掉,我们当时选的是在这个目录,直接删掉就好了,再把那个out的输出文件删除,我这里已经删除了

这样就配置好了,这次改了位置,方便好找,就在主文件夹下生成了个META文件夹,然后我们再来改代码

 我们当时这么写的,现在不能写死,根据前面的介绍肯定知道,我们得把传入的字符串改成字典

 先把main里面写上传递参数

再定义这么一个静态变量,将传入的字符串转换成字典

 这里改成这样就好了

3.3 终端调用

 然后,我们把apk复制进去,然后复制到pycham里面,然后终端调用,执行命令

 java -jar unidbg-0.9.7.jar  "actual_played_time=0&aid=466565149&appkey=1d8b6e7d45233436&auto_play=0&ts=1647952932"

3.4 python调用 

 这里给出python调用的方法

import subprocess
body = "actual_played_time=0&aid=466565149&appkey=1d8b6e7d45233436&auto_play=0&ts=1647952932"
cmd = f'java -jar  unidbg-0.9.7.jar "{body}"'
signature = subprocess.check_output(cmd, shell=True, cwd="unidbg_0_9_7_jar")
data_string = signature.strip().decode('utf-8').split("\n")[-1]
print(data_string)

 四.传递长字符串参数

这个我拿识货给大家举例子

大家记不记得这里,我们传递了很长的字符串,但是终端不支持长字符串,上面我们说了,可以放入文件读取

4.1 修改代码

main里这么修改

sign这么修改 

这样我们传入一个txt文档,把参数都放进去就好了

最后构建出来是这样的,把他放到python的文件夹里面

4.2 终端调用

执行java -jar unidbg-0.9.7.jar data.txt

数据是出来了,但是发现乱码,这是window终端,中文都会显示乱码,这是因为编码形式不同导致的,那我们用python调用就能解决这个问题

4.3 python调用

import subprocess
import locale
body = "data.txt"
cmd = f'java -jar  unidbg-0.9.7.jar "{body}"'

subprocess.run(cmd, shell=True, cwd="unidbg_0_9_7_jar",encoding=locale.getdefaultlocale()[1])

这样就ok了

五.总结 

今天说的很简单,就是打包,相信大家看一下就会了,怎么说呢,本来打算今天结束app逆向基础的,但是我后面会给大家讲一个完整的比较难的,那就是XHS,让我们拭目以待把

六.补充 

有什么问题私我,记得点赞关注加收藏哦,有求必应

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

往日情怀酿做酒 V1763929638

往日情怀酿作酒 感谢你的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值