chomper
v0.3.3
Chomper는 유니콘을 기반으로 한 가벼운 에뮬레이션 프레임 워크입니다. 주로 iOS 실행 파일 및 라이브러리의 보안 알고리즘을 모방하는 데 사용됩니다. 또한 Android 기본 라이브러리에 대한 제한된 지원을 제공합니다.
$ pip install chomper
iOS 실행 파일을 모방합니다.
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 ))Objective-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 )안드로이드 네이티브 라이브러리를 모방합니다.
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에서 모든 예제 바이너리 파일을 다운로드 할 수 있습니다.