26.安卓逆向2-frida hook技術-解密響應

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動!

內容參考于:圖靈Python學院

工具下載:

鏈接:https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwd=zy89

提取碼:zy89

復制這段內容后打開百度網盤手機App,操作更方便哦

上一個內容:25.安卓逆向2-frida hook技術-攔截彈框事件(攔截強制更新彈框和解決jadx加載dex文件不全問題)

如下圖的數據包,它是一個被加密后的數據包

首先使用jadx反編譯apk(apk沒辦法反編譯的,看上一個內容砸殼,通過內存獲取源碼)反編譯之后搜索下圖紅框的encrypt_data

搜索完后有兩個結果,它倆都在一個類中,隨便雙擊一個就可以了

然后就來到下圖紅框位置

代碼說明

jSONObject.has("encrypt_data")表示jSONObject中是否存在encrypt_data這個內容

下方的代碼表示如果jSONObject中存在encrypt_data這個內容,就執行Des3.ees3DecodeECB(jSONObject.getString("encrypt_data"))這行代碼,jSONObject.getString("encrypt_data")這個代碼的意思是從jSONObject里面獲取encrypt_data它的值也就是加密數據,然后調用 Des3.ees3DecodeECB方法

if (jSONObject.has("encrypt_data")) {return Des3.ees3DecodeECB(jSONObject.getString("encrypt_data"));
}

通過上方的初步分析,可以使用frida調試查看它的入參,首先選擇復制為firda片段

然后注入frida(注意如果有強制更新彈框的時候,注入代碼直接寫到關閉強制更新彈框里面),然后就能看到入參了,入參是通過 Charles 抓到的數據

然后帶著執行了dealCallBackResult方法后就能得到明文數據,也就是執行了ees3DecodeECB方法后得到明文數據

然后分析它使用什么加密算法,然后雙擊下圖紅框的ees3DecodeECB方法

然后就進入了ees3DecodeECB方法,如下圖紅框

然后開始分析

首先使用 Base64.decode 進行解碼

然后使用 SecretKeyFactory.getInstance("desede") 獲取一個desede的算法

然后調用 generateSecret(new DESedeKeySpec(SECRET_KEY.getBytes())) 傳入一個key

然后Cipher.getInstance("desede/ECB/PKCS5Padding");獲取一個ECB加密模型

然后new IvParameterSpec(IV.getBytes());創建一個IV

然后 cipher.init(2, generateSecret); 初始化算法

然后 cipher.doFinal(decode) 解密,然后就返回了

算法需要的key和iv都在這個類中,如下圖紅框,可以直接破了

Python還原算法

desede算法可以使用DSE3算法代替,Python代碼

from Crypto.Cipher import DES3
from Crypto.Util.Padding import unpad
import base64
import jsondef decrypt_des3(params):"""使用DES3算法解密數據參數:params (dict): 包含解密所需參數的字典- ciphertext (str): 待解密的Base64編碼密文- key (str): 密鑰字符串(必須是24字節長度)- iv (str): 初始化向量(僅CBC模式需要,必須是8字節長度)- mode (str): 加密模式,支持'ECB'或'CBC'(默認'CBC')- encoding (str): 解密后明文的編碼格式(默認'utf-8')返回:dict: 解密并解析后的JSON數據"""# 1. 提取并驗證密鑰key = params['key'].encode(params.get('encoding', 'utf-8'))if len(key) != 24:raise ValueError("密鑰長度必須為24字節(192位)")# 2. 解碼Base64密文ct = base64.b64decode(params['ciphertext'])# 3. 根據模式創建解密器if params.get('mode') == 'ECB':# ECB模式不需要IV,但安全性較低cipher = DES3.new(key, DES3.MODE_ECB)else:  # CBC模式(默認)# CBC模式需要IV來增加加密隨機性iv = params['iv'].encode(params.get('encoding', 'utf-8'))if len(iv) != 8:raise ValueError("IV長度必須為8字節")cipher = DES3.new(key, DES3.MODE_CBC, iv)# 4. 執行解密并去除填充decrypted_bytes = cipher.decrypt(ct)plaintext_bytes = unpad(decrypted_bytes, DES3.block_size)# 5. 轉換為字符串并解析JSONplaintext = plaintext_bytes.decode(params.get('encoding', 'utf-8'))return json.loads(plaintext)# 使用示例
encrypted = {'ciphertext': '',  # 填入實際的Base64密文'key': 'sjdqmp20161205#_316@gfmt',  # 24字節密鑰'iv': '01234567',  # 修正為8字節長度(原示例中長度錯誤)'mode': 'ECB',  # 加密模式,ECB或CBC'encoding': 'utf-8'  # 明文編碼
}try:print(f"解密結果: {decrypt_des3(encrypted)}")
except ValueError as ve:print(f"參數錯誤: {ve}")
except json.JSONDecodeError:print("JSON解析失敗: 解密結果不是有效的JSON格式")
except Exception as e:print(f"解密失敗: {e}")

效果圖:


img

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88010.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88010.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88010.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

人工智能與人工智障———仙盟創夢IDE

<!-- 桌面導航 -->&#x3C;nav class&#x22;hidden md:flex items-center space-x-8&#x22;&#x3E;&#x3C;a href&#x22;#home&#x22; class&#x22;nav-link text-gray-700 hover:text-primary font-medium&#x22;&#x3E;&#x9996;&…

車載通信架構 --- 以太網相關網絡安全

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

行業實踐案例:金融行業數據治理體系全景解析

“金融行業是數據治理的試金石。” ——高密度數據、高合規要求、高業務依賴,決定了金融治理的復雜度和先進性。 ?? 本文目錄 為什么金融行業對數據治理要求高? 金融行業數據治理的獨特挑戰 金融行業治理框架搭建實踐 典型治理能力案例詳解 工具與平臺選型經驗 總結與啟示 …

C#讀取modbus值,C#讀寫modbus,支持讀寫uint32值,Modbus TCP工具類

C#讀取modbus值&#xff0c;C#讀寫modbus&#xff0c;支持讀寫uint32值&#xff1b;Modbus TCP工具類 需要首先安裝nuget包Modbus using Modbus.Device; using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; using System.Text; us…

Oracle注釋詳解

在Oracle SQL中&#xff0c;注釋是用于解釋代碼邏輯、提高可讀性的文本&#xff0c;不會被數據庫執行。Oracle支持兩種類型的注釋語法&#xff1a; 1. 單行注釋&#xff08;--&#xff09; 使用雙連字符--在一行中添加注釋&#xff0c;從--開始到行末的所有內容都會被視為注釋。…

關于 scrapy框架 詳解

scrapy 是一個純 Python 編寫的異步爬蟲框架&#xff0c;具備以下特點&#xff1a;優勢說明異步高效基于 Twisted&#xff0c;非阻塞 IO模塊化各部分可靈活配置/替換中間件機制支持代理、UA、cookie 控制等強大的解析內置 XPath、CSS 提取器自動去重Scheduler 內部維護請求 fin…

DHCP中繼實驗及其核心原理

DHCP 中繼&#xff08;DHCP Relay&#xff09;是一種允許跨網段分配 IP 地址的技術&#xff0c;無需在每個子網部署 DHCP 服務器。以下是其原理和配置方法的詳細說明&#xff1a;一、核心原理1. 為什么需要 DHCP 中繼&#xff1f;問題&#xff1a;DHCP 客戶端通過廣播&#xff…

ABP VNext + RediSearch:微服務級全文檢索

ABP VNext RediSearch&#xff1a;微服務級全文檢索 &#x1f680; &#x1f4da; 目錄ABP VNext RediSearch&#xff1a;微服務級全文檢索 &#x1f680;&#x1f4da; 一、背景與動機 &#x1f680;&#x1f6e0;? 二、環境與依賴 &#x1f433;2.1 Docker Compose 啟動 R…

TensorFlow深度學習實戰——基于自編碼器構建句子向量

TensorFlow深度學習實戰——基于自編碼器構建句子向量 0. 前言1. 句子向量2. 基于自編碼器構建句子向量2.1 數據處理2.2 模型構建與訓練 3. 模型測試相關鏈接 0. 前言 在本節中&#xff0c;我們將構建和訓練一個基于長短期記憶 (Long Short Term Memory, LSTM) 的自編碼器&…

C語言使用Protobuf進行網絡通信

筆者前面博文Go語言網絡游戲服務器模塊化編程介紹了Go語言在開發網絡游戲時如何進行模塊化編程&#xff0c;在其中使用了Protobuf進行網絡通信。在Protobuf官方實現中并沒有生成C語言的實現&#xff0c;不過有一個開源的protobuf-c可以使用。 先來看看protobuf-c生成的代碼&am…

vue3 隨手筆記12--組件通信方式9/5--useAttrs

一 什么是useAttrsuseAttrs 是 Vue 3 Composition API 中提供的一個函數&#xff0c;它屬于 Vue 的組合式 API 工具集的一部分。通過 useAttrs&#xff0c;你可以訪問傳遞給組件但未被聲明為 props 的所有屬性。這對于處理非 prop 特性&#xff08;attributes&#xff09;特別有…

HumanRisk-自動化安全意識與合規教育平臺方案

權威數據顯示&#xff0c;74%以上的數據泄露與網絡安全事件歸根結底與人為因素有關&#xff0c;60%以上的網絡安全事件是由內部人員失誤造成的。這一現狀揭示了一個核心命題&#xff1a;網絡安全威脅正從技術漏洞轉向“人為因素風險”。Gartner的調查發現&#xff0c;即便接受了…

2025年食品科學與健康大數據國際會議(SHBD 2025)

2025年食品科學與健康大數據國際會議 2025 International Conference on Food Science and Health Big Data&#xff08;一&#xff09;大會信息 會議簡稱&#xff1a;ICFSHBD 2025 大會地點&#xff1a;中國上…

CompareFace人臉識別算法環境部署

一、docker 安裝 步驟1&#xff1a;啟用系統功能 右鍵開始菜單 → 應用和功能 → 點擊 程序和功能 → 勾選 Hyper-V 和 Windows子系統Linux 步驟2&#xff1a;獲取安裝包 訪問Docker官網安裝包下載頁 &#xff0c;下載「Docker Desktop Installer.rar」壓縮包 步驟3&#…

STM32固件升級設計——內部FLASH模擬U盤升級固件

目錄 一、功能描述 1、BootLoader部分&#xff1a; 2、APP部分&#xff1a; 二、BootLoader程序制作 1、分區定義 2、 主函數 3、配置USB 4、配置fatfs文件系統 5、程序跳轉 三、APP程序制作 四、工程配置&#xff08;默認KEIL5&#xff09; 五、運行測試 結束語…

操作系統引導過程

操作系統引導是指計算機利用 CPU 運行特定程序&#xff0c;通過程序識別硬盤&#xff0c;識別硬盤分區&#xff0c;識別硬盤分區上的操作系統&#xff0c;最后通過程序啟動操作系統。 引導流程&#xff08;8步核心環節&#xff09; 1. 激活CPU 加電后CPU自動讀取 ROM中的Boot…

Safetensors與大模型文件格式全面解析

Safetensors是一種專為存儲大型張量數據設計的文件格式&#xff0c;由Hugging Face團隊開發&#xff0c;旨在提供安全高效的模型參數存儲解決方案。下面將詳細介紹Safetensors格式及其特點&#xff0c;并全面梳理當前主流的大模型文件格式。 一、Safetensors格式詳解 1. 基本概…

分布式理論:CAP、Base理論

目錄 1、CAP理論 1.1、介紹 1.2、CAP的三種選擇 1.3、CAP的注意事項 2、BASE理論 2.1、定義介紹 2.2、最終一致性的介紹 2.3、BASE的實現方式 2.4、與ACID的對比 3、CAP與BASE的聯系 4、如何選擇CAP 前言 在分布式系統中&#xff0c;CAP理論和BASE理論是指導系統設計…

【最新】飛算 JavaAl安裝、注冊,使用全流程,讓ai自己給你寫代碼,解放雙手

目錄 飛算 JavaAl 產品介紹 安裝飛算 JavaAl 第一步&#xff1a;點擊 File->Setting 第二步&#xff1a;點擊 Plugins 第三步&#xff1a;搜索 CalEx-JavaAI 第四步&#xff1a;點擊 Install 進行安裝 第五步&#xff1a;點擊 Install &#xff0c;查看安裝好的飛算…

無人設備遙控器之姿態控制算法篇

無人設備遙控器的姿態控制算法通過傳感器數據融合、控制算法優化和執行機構調節實現動態平衡&#xff0c;核心算法包括PID控制、自適應控制、模型預測控制&#xff08;MPC&#xff09;&#xff0c;以及數據融合中的互補濾波和卡爾曼濾波&#xff0c;同時涉及四元數算法和深度強…