Repository: DrizzleRisk/BUnpacker
Branch: master
Commit: 8e92b42b0e02
Files: 5
Total size: 3.4 KB
Directory structure:
gitextract_dki6nbo1/
├── README.md
├── bunpacker.py
└── ext-tools/
├── AXMLPrinter2.jar
├── armeabi/
│ └── bulib
└── x86/
└── bulib
================================================
FILE CONTENTS
================================================
================================================
FILE: README.md
================================================
BUnpacker
===
简介
===
*BUnpacker*是一款Android脱壳工具
*TUnpacker* is an Android unpack tool.
使用方法
===
python bunpacker.py jiagu.apk
工具截图
===

必读事项
===
1.本代码仅适用于特定的加固方式 (BB)
2.本代码仅供安全研究及授权测试使用,如用于非法用途,后果自负
3.运行本代码前需要确保连接Android测试设备或虚拟机,并确保Android系统已root
4.如Dump等待时间过长或Dump失败,请多试几次!
工具集(分别适用于不同加固)
===
drizzleDumper <https://github.com/DrizzleRisk/drizzleDumper>
TUnpacker <https://github.com/DrizzleRisk/TUnpacker>
BUnpacker <https://github.com/DrizzleRisk/BUnpacker>
================================================
FILE: bunpacker.py
================================================
#coding=utf-8
import sys,shutil
reload(sys)
sys.setdefaultencoding('utf-8')
import os,time,zipfile
from xml.dom import minidom
PACKAGE_NAME = ''
START_ACTIVITY = ''
APK_PATH = ''
def Title():
print '[>>>] BUnpacker [<<<]'
print '[>>>] code by Drizzle [<<<]'
print '[>>>] 2016.10 [<<<]'
def CheckEnv():
Title()
print '[*] Init env'
global APK_PATH
global PACKAGE_NAME
global START_ACTIVITY
#初始化环境
if not os.path.exists('result'):
os.mkdir('result')
if not os.path.exists('tmp'):
os.mkdir('tmp')
CPU = 'x86'
os.popen('adb root')
result = os.popen('adb shell cat /proc/cpuinfo').read()
if result.find('ARM') != -1:
CPU = 'armeabi'
print '[*] Target: '+CPU
print '[---------------------------------------]'
os.popen('adb push ext-tools/' + CPU + '/bulib /data/local/tmp')
os.popen('adb install ' + APK_PATH)
print '[---------------------------------------]'
#获取包信息备用
print '[*] Get package info'
nxml = open('tmp/nxml.xml','w')
zf = zipfile.ZipFile(APK_PATH, 'r')
content = zf.read('AndroidManifest.xml')
nxml.write(content)
nxml.close()
content = os.popen('java -jar ext-tools/AXMLPrinter2.jar tmp/nxml.xml').read()
mfest = minidom.parseString(content)
manifest = mfest.getElementsByTagName('manifest')
activities = mfest.getElementsByTagName("activity")
for node in manifest:
PACKAGE_NAME = node.getAttribute("package")
for activity in activities:
for sitem in activity.getElementsByTagName("action"):
val = sitem.getAttribute("android:name")
if val == "android.intent.action.MAIN" :
START_ACTIVITY = activity.getAttribute("android:name")
def Dump():
print '[*] Dump dex'
global PACKAGE_NAME
global START_ACTIVITY
os.popen('adb shell am force-stop ' + PACKAGE_NAME)
time.sleep(1)
os.popen('adb shell am start -n ' + PACKAGE_NAME + '/' + START_ACTIVITY)
content = os.popen('adb shell ./data/local/tmp/bulib ' + PACKAGE_NAME).read()
print '[---------------------------------------]'
os.popen('adb pull ' + content + ' result/' + PACKAGE_NAME + '.dex')
print '[---------------------------------------]'
if os.path.exists('result/' + PACKAGE_NAME + '.dex'):
print '[*] Success >> ' + 'result/' + PACKAGE_NAME + '.dex'
#清理环境
if os.path.exists('tmp'):
shutil.rmtree('tmp')
def Useage():
Title()
print '[*] Useage: bunpacker.py jiagu.apk'
print '[*] 1.Before Running ,make sure a rooted Android system has been connected to your PC'
print '[*] 2.Only for testing,Do not be evil !'
if __name__ == '__main__':
if len(sys.argv) < 2:
Useage()
else:
APK_PATH = sys.argv[1]
CheckEnv()
Dump()
gitextract_dki6nbo1/
├── README.md
├── bunpacker.py
└── ext-tools/
├── AXMLPrinter2.jar
├── armeabi/
│ └── bulib
└── x86/
└── bulib
SYMBOL INDEX (4 symbols across 1 files) FILE: bunpacker.py function Title (line 11) | def Title(): function CheckEnv (line 15) | def CheckEnv(): function Dump (line 55) | def Dump(): function Useage (line 72) | def Useage():
Condensed preview — 5 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4K chars).
[
{
"path": "README.md",
"chars": 565,
"preview": "BUnpacker\n=== \n \n简介\n===\n\n*BUnpacker*是一款Android脱壳工具\n*TUnpacker* is an Android unpack tool.\n\n使用方法\n===\n\tpython bu"
},
{
"path": "bunpacker.py",
"chars": 2871,
"preview": "#coding=utf-8\nimport sys,shutil\nreload(sys)\nsys.setdefaultencoding('utf-8')\nimport os,time,zipfile\nfrom xml.dom import m"
}
]
// ... and 3 more files (download for full content)
About this extraction
This page contains the full source code of the DrizzleRisk/BUnpacker GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 5 files (3.4 KB), approximately 1.1k tokens, and a symbol index with 4 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.