chomper
v0.3.3
Chomper เป็นกรอบการจำลองที่มีน้ำหนักเบาบนพื้นฐานของยูนิคอร์น ส่วนใหญ่จะใช้เพื่อเลียนแบบอัลกอริทึมความปลอดภัยของ iOS Executables และห้องสมุด นอกจากนี้ยังให้การสนับสนุนที่ จำกัด สำหรับห้องสมุด Native Android
$ pip install chomper
เลียนแบบ iOS executables
import uuid
from chomper import Chomper
from chomper . const import ARCH_ARM64 , OS_IOS
# For iOS, system libraries will be automatically loaded from `rootfs_path`
emu = Chomper (
arch = ARCH_ARM64 ,
os_type = OS_IOS ,
rootfs_path = "examples/rootfs/ios" ,
)
# Load main program
duapp = emu . load_module ( "examples/binaries/ios/com.siwuai.duapp/DUApp" )
s = "chomper"
# Construct arguments
a1 = emu . create_string ( "objc" )
a2 = emu . create_string ( s )
a3 = len ( s )
a4 = emu . create_string ( str ( uuid . uuid4 ()))
a5 = emu . create_buffer ( 8 )
a6 = emu . create_buffer ( 8 )
a7 = emu . create_string ( "com.siwuai.duapp" )
# Call function
emu . call_address ( duapp . base + 0x109322118 , a1 , a2 , a3 , a4 , a5 , a6 , a7 )
result = emu . read_string ( emu . read_pointer ( a5 ))ทำงานกับวัตถุประสงค์ -C
from chomper import Chomper
from chomper . const import ARCH_ARM64 , OS_IOS
from chomper . objc import ObjC
emu = Chomper (
arch = ARCH_ARM64 ,
os_type = OS_IOS ,
rootfs_path = "examples/rootfs/ios" ,
)
objc = ObjC ( emu )
emu . load_module ( "examples/binaries/ios/cn.com.scal.sichuanair/zsch" )
# Use this context manager to ensure that Objective-C objects can be automatically released
with objc . autorelease_pool ():
# Construct NSString object
a1 = objc . msg_send ( "NSString" , "stringWithUTF8String:" , "test" )
# Call Objective-C method
req_sign = objc . msg_send ( "ZSCHRSA" , "getReqSign:" , a1 )
# Convert NSString object to C string
result_ptr = objc . msg_send ( req_sign , "cStringUsingEncoding:" , 4 )
result = emu . read_string ( result_ptr )เลียนแบบห้องสมุดพื้นเมือง Android
from chomper import Chomper
from chomper . const import ARCH_ARM64 , OS_ANDROID
emu = Chomper ( arch = ARCH_ARM64 , os_type = OS_ANDROID )
# Load C standard and other libraries
emu . load_module ( "examples/rootfs/android/system/lib64/libc.so" )
emu . load_module ( "examples/rootfs/android/system/lib64/libz.so" )
libszstone = emu . load_module (
"examples/binaries/android/com.shizhuang.duapp/libszstone.so" ,
exec_init_array = True ,
)
s = "chomper"
a1 = emu . create_string ( s )
a2 = len ( s )
a3 = emu . create_buffer ( 1024 )
result_size = emu . call_address ( libszstone . base + 0x2F1C8 , a1 , a2 , a3 )
result = emu . read_bytes ( a3 , result_size )มีรหัสการจำลองอัลกอริทึมความปลอดภัยบางอย่างในตัวอย่างและคุณสามารถดาวน์โหลดไฟล์ไบนารีตัวอย่างทั้งหมดจาก SourceForge