【工具名稱】智能脫殼指令碼生成器
【使用方法】利用智能程式設計技術,自動分析目標程序的結構和代碼,生成適合脫殼的指令碼。使用者只需要提供目標程序的二進制檔案即可。
【優點】具有以下特點:
智能化:利用機器學習和人工智能技術,自動識別和分析目標程序的結構和代碼,提高脫殼的效率和準確度。
節省時間:自動化生成指令碼,省去了手動編寫的繁瑣過程,提高了工作效率。
易於使用:只需要提供目標程序的二進制檔案,點擊生成指令碼按鈕即可。
【注意事項】使用本工具時需要注意以下幾點:
需要有一定的編程基礎和知識。
需要注意使用的合法性,不得用於非法用途。
該工具並非萬能,對於某些程序可能無法有效脫殼,需要手動修改指令碼。
【結語】智能脫殼指令碼生成器是一個非常實用的工具,可以幫助編程人員提高工作效率和準確度。使用者可以根據自己的需求選擇不同的工具來進行脫殼操作,實現更高效的編程。
https://wwa.lanzouw.com/b01qnchuf
https://wwa.lanzouY.com/b01qnchuf
https://wwa.lanzouX.com/b01qnchuf
密碼:
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
- lua指令碼程式碼:
- ```lua
- -- 首先,需要使用frida工具載入目標App,並獲取到相關的應用處理程序
- -- 然後,引入需要使用的Frida模組
- local frida = require("frida")
- local io = require("io")
- local base64 = require("base64")
- -- 定義要附加處理程序的應用包名
- local app_package_name = "com.example.app"
- -- 定義脫殼後保存DEX檔案的路徑
- local dex_output_path = "/data/data/" .. app_package_name .. "/files/classes.dex"
- -- 附加處理程序並獲取JavaScript對象
- local session = frida.attach(app_package_name)
- local script = session:create_script([[
- Java.perform(function () {
- // 獲取Application實例
- var app = Java.use("Android.app.ActivityThread").currentApplication();
- // 獲取應用Context實例
- var context = app.getApplicationContext();
- // 獲取當前應用apk路徑
- var package_info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
- var current_apk_path = package_info.applicationInfo.sourceDir;
- console.log("當前應用APK路徑:", current_apk_path);
- // 載入DexClassLoader類
- var DexClassLoader = Java.use("dalvik.system.DexClassLoader");
- // 建立DexClassLoader實例
- var dex_file_path = "/data/local/tmp/decrypt.dex"; // 載入解密DEX檔案
- var optimized_dir = "/data/data/" + context.getPackageName() + "/files"; // 最佳化後的DEX檔案保存路徑
- var parent = context.getClassLoader();
- var class_loader = DexClassLoader.$new(dex_file_path, optimized_dir, null, parent);
- console.log("DexClassLoader建立成功!");
- // 獲取需要脫殼的DEX檔案的路徑
- var dex_file_path = "/data/data/" + context.getPackageName() + "/app_dex/classes.dex";
- // 讀取DEX檔案資料
- var dex_file_data = null;
- var file = Java.use("java.io.File");
- var dex_file =file.$new(dex_file_path);
- if (dex_file.exists()) {
- var file_input_stream = Java.use("java.io.FileInputStream").$new(dex_file);
- var byte_array_output_stream = Java.use("java.io.ByteArrayOutputStream").$new();
- var buffer_size = 1024;
- var buffer = Java.array('byte', buffer_size);
- while (true) {
- var len = file_input_stream.read(buffer);
- if (len == -1) {
- break;
- }
- byte_array_output_stream.write(buffer, 0, len);
- }
- dex_file_data = byte_array_output_stream.toByteArray();
- console.log("DEX檔案讀取成功!");
- file_input_stream.close();
- byte_array_output_stream.close();
- } else {
- console.log("DEX檔案不存在!");
- return;
- }
- // 解密DEX檔案
- var decrypt_method = class_loader.loadClass("com.example.decrypt.Decrypt").getDeclaredMethod("decrypt", [Java.array("byte")]);
- decrypt_method.setAccessible(true);
- var decrypted_dex_data = decrypt_method.invoke(null, dex_file_data);
- console.log("DEX檔案解密完成!");
- // 保存解密後的DEX資料到檔案中
- var dex_output_path = "/data/data/" + context.getPackageName() + "/files/classes.dex";
- var file_output_stream = Java.use("java.io.FileOutputStream").$new(dex_output_path);
- file_output_stream.write(decrypted_dex_data);
- file_output_stream.close();
- console.log("DEX檔案保存成功:", dex_output_path);
- // 輸出DEX檔案的Base64編碼格式
- var base64_data = base64.encodeToString(decrypted_dex_data, 0);
- console.log("DEX檔案Base64編碼:
- ", base64_data);
- // 匯出DEX檔案到sdcard目錄中
- var sdcard_path = "/sdcard/classes.dex";
- var cmd_export = "cp " + dex_output_path + " " + sdcard_path;
- console.log("匯出DEX命令:", cmd_export);
- var System = Java.use("java.lang.System");
- System.$new().exec(cmd_export);
- console.log("DEX檔案匯出成功:", sdcard_path);
- });
- ]])
- -- 載入解密DEX檔案
- local decrypt_dex_data = io.open("decrypt.dex", "rb"):read("*all")
- -- 將解密DEX檔案寫入臨時檔案中
- local temp_dex_file = io.open("/data/local/tmp/decrypt.dex", "wb")
- temp_dex_file:write(decrypt_dex_data)
- temp_dex_file:close()
- -- 將臨時檔案的讀寫權限改為777
- os.execute("chmod 777 /data/local/tmp/decrypt.dex")
- -- 在目標處理程序中載入解密DEX檔案
- local load_dex_cmd = string.format("CLASSPATH=/data/local/tmp/decrypt.dex %s %d", executable, pid)
- os.execute(load_dex_cmd)
- print("DEX檔案已成功注入到目標處理程序中!")
複製代碼
|