python 逆向爬蟲正確調用 JAR 加密邏輯
在 App 端爬蟲過程中,遇到未知的參數,往往需要我們去逆向破解 App,針對參數的生成邏輯,使用 Python 去實現
部分 App 參數的生成邏輯可能已經寫入到多個 JAR 文件中,這時候,我們只需要用 Python 執行 JAR 即可
本篇文章將聊聊 Python 如何調用 JAR 中的方法
2. 合并 JAR以 Android App 為例,假設加密參數生成邏輯在多個 JAR 中,我們首先需要將所有的 JAR 文件合并為一個 JAR 文件
PS:對于 AAR 文件,可以先通過解壓軟件解壓,然后再合并 JAR
合并 JAR 分為 2 步:
解壓 JAR 合并所有源碼2-1 解壓 JAR安裝 JDK 之后,通過 jar -xvf 命令去解壓單個 JAR,這樣會按包名在同級目錄下生成 JAVA 編譯后的 class 文件
# 一個個地去解壓JAR# 在本地生成class文件jar -xvf a.jarjar -xvf b.jarjar -xvf c.jar2-2 合并所有源碼
使用 jar -cvfM 命令,將本地所有的 class 文件生成一個新的 JAR
# 合并當前目錄下所有源碼為一個JAR# 其中:output.jar代表新的JARjar -cvfM output.jar .3. Python 調用 JAR
首先,我們安裝依賴包:jpype
# 安裝依賴包pip3 install JPype1
假設 JAR 中加密邏輯實現代碼如下:
package com.xingag.common;public class EncryHelper { public String encrypt(String content) { //加密邏輯 }}
使用 Python 調用 JAR 中的方法分為 3 步:
啟動 JVM 實例化 JAVA 對象,調用對應方法 關閉 JVM3-1 啟動 JVMimport jpype# JAR本地路徑jar_path = os.path.join(os.path.abspath(’.’), ’./output.jar’)# 啟動jvmjpype.startJVM(jpype.getDefaultJVMPath(), '-ea', '-Djava.class.path=%s' % (jar_path))3-2 實例化 JAVA 對象,調用方法
根據被調方法所在的包名,使用 jpyte 中的 JClass() 方法實例化類 JAVA 對象,最后調用 JAVA 對象的方法即可
需要注意的是,由于 JAVA 中是實例方法,需要先進行對象實例化,然后調用方法;如果是靜態方法,可以直接調用方法
# 通過包名,實例化JAVA對象EncryClass = jpype.JClass('com.xingag.common.EncryHelper')encryClass = EncryClass()# 調用JAVA中的加密方法content_encry = encryClass.encrypt('xag')print(content_encry)4. 最后
Python 直接調用 JAR 中方法,可以幫我我們復用輪子,減輕爬蟲的工作量!
以上就是python 逆向爬蟲正確調用 JAR 加密邏輯的詳細內容,更多關于python 爬蟲正確調用 JAR 加密邏輯的資料請關注好吧啦網其它相關文章!
相關文章: