逆向破解安卓app

安卓app逆向破解获取信息

  • 准备环境

在开始之前首先需要下载相应的环境,以及学习一些必要的知识。

在环境下载中主要需要以下软件:

  1. Fiddler(用来抓包)
  2. 手机模拟器(用来模拟安卓软件的运行,当然可以用root手机代替)
  3. dex2jar-2.0(用来反编译apk程序)
  4. jd-gui(用来打开反编译后的java程序)

在下载这些软件后聊一下需要掌握的基础知识:

  • java(大部分安卓app是用java写的,你需要看懂java程序你才能更好的破解密码)
  • python(在得到破解的密码后需要通过爬虫获取所需要的信息。

在这里相应的软件安装就不介绍了。

  • 进行抓包尝试

首先打开Fiddler软件(首次打开需要设置)

设置Fiddler,打开allow remote computers to connect

手机模拟器也需要将wifi调成电脑ip地址以及相应8888端口(具体怎么调可百度,这里不做介绍)

这里以一个安卓app微漫画为例进行测试(在手机模拟器上打开微漫画,同时电脑上也留一个微漫画apk进行反编译)

进入搜索功能,进行搜索:

在Fiddle上可获取搜索到的信息:

从中可以得到一些关键信息:


api = 'http://api.manhua.weibo.com/client/home/search?word=全职&page_num=1&row_num=10'


headers = {'client-ver':'3.0.1',
'client-type':'android',
'client-time':'1599615706987',
'phone-mark':'ED6D7B8020FFE4E5A6F2D7BD38087507',
'app-devicetoken':'e571dd8bd67803995b9bdcfefb58662b',
'sina-uid':'0',
'sina-token':'',
'VREADREFER':'vmh_client',
'client-sign':'92d32ccedb7a692a17ceb7e64121d088',
'Cache-Control':'no-cache',
'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8',
'Content-Length':'223',
'Host':'api.manhua.weibo.com',
'Connection':'Keep-Alive',
'Accept-Encoding':'gzip',
'User-Agent':'okhttp/3.8.0'}

data = {
client_ver
client_type
client_time
phone_mark
app_devicetoken
sina_uid
sina_toke
client_sign
}

通过搜索其他内容不难发现data中只有client_time和client_sign是变化的,则可以推测这2个变量可能就是需要反编译进行破解的密码(其实通过猜测可以发现client_time很大可能是时间戳) 

 

  • 进行软件破解分析密码

首先将微漫画apk进行解压:

将classes.dex文件复制到dex2jar-2.0文件的主目录中,通过终端打开

输入下图命令可以得到一个.jar的java包。

通过jd-gui打开jar包,然后搜索我们需要破解的参数:

可以发现大量需要数据集中于此

然后一些变量以及常数可以分析出来其含义(需要耐心去观察)

图中便可以判断client-time = str5(果然是时间戳)

可以分析 client_sign为下图所示结果,耐心分析str4.str5,str6,str7,str1分别代表什么含义,以及at()函数的意义

可以发现at()函数是一个md5加密函数。

  • 进行爬虫获取数据

下面为爬虫的数据,hashlib模块是python用来md5加密 

'''
通过反编译抓包获取微漫画信息
'''

import requests
import time,random,hashlib

api = 'http://api.manhua.weibo.com/client/home/search?word=全职&page_num=1&row_num=10'


client_time = int(time.time()*1000)#时间戳

sign = "3.0.1" + "android" + str(client_time) + "e571dd8bd67803995b9bdcfefb58662b" + "ED6D7B8020FFE4E5A6F2D7BD38087507" + "0" + "" + "{54563A97-2BBA-7F31-D4C1-8EF72F4A98E6}"
#client-sign表达式

client_sign = hashlib.md5(sign.encode('utf-8')).hexdigest()#md5加密



data = f'client_ver=3.0.1&client_type=android&client_time={client_time}&phone_mark=ED6D7B8020FFE4E5A6F2D7BD38087507&app_devicetoken=e571dd8bd67803995b9bdcfefb58662b&sina_uid=0&sina_token=&client_sign={client_sign}'

headers = {'client-ver':'3.0.1',
'client-type':'android',
'client-time':'1599615706987',
'phone-mark':'ED6D7B8020FFE4E5A6F2D7BD38087507',
'app-devicetoken':'e571dd8bd67803995b9bdcfefb58662b',
'sina-uid':'0',
'sina-token':'',
'VREADREFER':'vmh_client',
'client-sign':'92d32ccedb7a692a17ceb7e64121d088',
'Cache-Control':'no-cache',
'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8',
'Content-Length':'223',
'Host':'api.manhua.weibo.com',
'Connection':'Keep-Alive',
'Accept-Encoding':'gzip',
'User-Agent':'okhttp/3.8.0'}


result = requests.post(api,data = data,headers = headers)
result.encoding = 'utf-8'

print(result.json())

结果如下: 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页