安卓逆向半次元app逆向分析源碼
僅供學(xué)習(xí)交流,禁止商業(yè)用途。如侵害利益,聯(lián)系必刪!
前言
最近一位小伙伴鐘愛(ài)二次元文化,于是找到半次元這個(gè)app,但是很快他就遇到了問(wèn)題。
一、案例
樣本: 半次元 v5.0.6
工具: jadx-gui、ida、frida 問(wèn)題描述:

POST請(qǐng)求body中的data加密,那要想動(dòng)態(tài)模擬請(qǐng)求數(shù)據(jù),就需要逆向分析data如何加密的了。
二、分析
1. jadx反編譯
分析過(guò)程比較枯燥就不過(guò)多闡述了,直接上分析的結(jié)果圖。

2.ida分析so層

很清楚的可以看到"com_banciyuan_AI"就是key啦
3. Frida
代碼如下:
# -*- coding: utf-8 -*-
import frida, sys
def on_message(message, data):
if message['type'] == 'send':
print("[*] {0}".format(message['payload']))
else:
print(message)
jscode_hook = """
Java.perform(
function(){
var en = Java.use("com.banciyuan.bcywebview.utils.encrypt.Encrypt");
en.a.overload("java.lang.String").implementation = function (str){
console.log("參數(shù): "+str);
var res = this.a(str);
console.log("返回: "+res);
return res;
}
}
)
"""
process = frida.get_usb_device().attach('com.banciyuan.bcywebview')
script = process.create_script(jscode_hook)
script.on('message', on_message)
print('[*] Hook Start Running')
script.load()
sys.stdin.read()
3.1 hook結(jié)果

4. 算法還原

能看出來(lái)沒(méi)有魔改的地方,AES.ECB模式Pkcs7padding.
代碼如下:
# -*- coding:utf-8 -*-
import base64
from Crypto.Cipher import AES
class EncryptDate:
def __init__(self, key):
self.key = key # 初始化密鑰
self.length = 16 # 初始化數(shù)據(jù)塊大小
self.aes = AES.new(self.key, AES.MODE_ECB) # 初始化AES,ECB模式的實(shí)例
# 截?cái)嗪瘮?shù),去除填充的字符
self.unpad = lambda date: date[0:-ord(date[-1])]
print(self.unpad)
def pad(self, text):
"""
#填充函數(shù),使被加密數(shù)據(jù)的字節(jié)碼長(zhǎng)度是block_size的整數(shù)倍
"""
count = len(text.encode('utf-8'))
add = self.length - (count % self.length)
entext = text + (chr(add) * add)
return entext
def encrypt(self, encrData): # 加密函數(shù)
a = self.pad(encrData)
res = self.aes.encrypt(a.encode("utf-8"))
msg = str(base64.b64encode(res), encoding="utf8")
return msg
def decrypt(self, decrData): # 解密函數(shù)
res = base64.decodebytes(decrData.encode("utf-8"))
msg = self.aes.decrypt(res).decode("utf-8")
return self.unpad(msg)
eg = EncryptDate("com_banciyuan_AI".encode("utf-8"))
res = eg.encrypt('{"uid":3526863969856576,"face":"f"}')
print(res)
print(eg.decrypt(res))
安心使用
總結(jié)
難度適中,工具運(yùn)用(jadx、ida、frida)AES的加密模式分析切勿著急。
以上就是安卓逆向半次元app逆向分析源碼的詳細(xì)內(nèi)容,更多關(guān)于半次元app逆向分析的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android自動(dòng)化獲取卡頓信息的實(shí)現(xiàn)方法
自動(dòng)化獲取卡頓信息就像給App裝 “行車記錄儀” —— 實(shí)時(shí)記錄主線程的“駕駛狀態(tài)”,一旦發(fā)現(xiàn)“急剎車”(卡頓),立刻保存現(xiàn)場(chǎng)(堆棧),事后回看錄像(日志)精準(zhǔn)定位問(wèn)題,本文給大家介紹了Android自動(dòng)化獲取卡頓信息的實(shí)現(xiàn)方法,需要的朋友可以參考下2025-02-02
詳解Android 進(jìn)程間通信的幾種實(shí)現(xiàn)方式
在Android SDK中提供了4種用于跨進(jìn)程通訊的方式。這篇文章主要介紹了詳解Android 進(jìn)程間通信的幾種實(shí)現(xiàn)方式,有興趣的可以了解一下。2017-01-01
使用RecyclerView添加Header和Footer的方法
RecyclerView雖然作為L(zhǎng)istView的替代者有著較好的性能提升,但是ListView的一些常用功能卻沒(méi)有提供,比如我們平時(shí)會(huì)經(jīng)常用到的addHeaderView,addFooterView,既然RecyclerView沒(méi)有提供這個(gè)方法,我們應(yīng)該如何為列表添加頭部和底部呢,接下來(lái)通過(guò)本文給大家介紹2016-03-03
Android開(kāi)發(fā)筆記XML數(shù)據(jù)解析方法及優(yōu)缺點(diǎn)
XML數(shù)據(jù)是一種常見(jiàn)的數(shù)據(jù)格式,Android開(kāi)發(fā)中需要對(duì)其進(jìn)行解析。常用的XML解析方式有DOM、SAX、Pull和Json等,每種方式都有其優(yōu)缺點(diǎn)。開(kāi)發(fā)者可以根據(jù)具體需求選擇合適的解析方式,提高數(shù)據(jù)解析效率和性能2023-05-05
Android Compose實(shí)現(xiàn)聯(lián)系人列表流程
聲明式UI,更簡(jiǎn)單的自定義,實(shí)時(shí)帶交互的預(yù)覽功能Compose并不是類似于Recyclerview的高級(jí)控件,而是直接拋棄了View,ViewGroup那套東西,從上到下魯了一套全新的框架,直白點(diǎn)說(shuō)就是它的渲染機(jī)制,布局機(jī)制,觸摸算法,以及UI具體寫法全都是新的2023-03-03
Android自定義View實(shí)現(xiàn)可展開(kāi)、會(huì)呼吸的按鈕
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)可展開(kāi)、會(huì)呼吸的按鈕,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
Android開(kāi)發(fā)筆記之Intent初級(jí)學(xué)習(xí)教程
這篇文章主要介紹了Android開(kāi)發(fā)筆記之Intent初級(jí)學(xué)習(xí),較為詳細(xì)的分析了Android Intent項(xiàng)目的建立,功能實(shí)現(xiàn)及Intent使用技巧,需要的朋友可以參考下2016-02-02
Android高仿微信對(duì)話列表滑動(dòng)刪除效果
這篇文章主要為大家詳細(xì)介紹了Android高仿微信對(duì)話列表滑動(dòng)刪除效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
在Android平臺(tái)上實(shí)現(xiàn)消息推送功能
隨著移動(dòng)互聯(lián)網(wǎng)應(yīng)用的飛速發(fā)展,消息推送已成為移動(dòng)應(yīng)用中不可或缺的功能,在Android平臺(tái)上,實(shí)現(xiàn)消息推送涉及到服務(wù)端的消息發(fā)送、客戶端的消息接收、通知渠道(Notification?Channels)的管理以及應(yīng)用在前臺(tái)和后臺(tái)不同狀態(tài)下的處理等多個(gè)方面,下面小編給大家詳細(xì)介紹一下2025-04-04
Android實(shí)現(xiàn)RecyclerView嵌套流式布局的詳細(xì)過(guò)程
最近在做需求的時(shí)候,碰到有各種篩選項(xiàng)的界面,下面這篇文章主要給大家介紹了關(guān)于Android實(shí)現(xiàn)RecyclerView嵌套流式布局的詳細(xì)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12

