Clutch: “Decrypt Application”
การ “Decrypt iOS application” เพื่อให้สามารถ “Reverse-engineering” ได้ ตามบทความ “How to decrypt iOS applications”
- ตัวอย่างโปรแกรมภายหลัง “Decrypt” เรียบร้อยแล้ว
iPad:~ root# cd /var/root/Documents/Cracked iPad:~/Documents/Cracked root# ls -l total 41276 -rw-r--r-- 1 root wheel 2971283 Nov 22 21:29 BBC\ News-v2.1.4.ipa -rw-r--r-- 1 root wheel 22683485 Jan 19 21:39 LINE\ for\ iPad-v1.0.0.ipa
- โปรแกรม “.ipa” ที่ “Crack” แล้วนั้นสามารถติดตั้งบน “iOS” โดยใช้คำสั่งผ่าน “SSH” (ติดตั้ง IPA Installer Console) ดังนี้
iPad:~/Documents/Cracked root# installipa -c LINE\ for\ iPad-v1.0.0.ipa Clean installation enabled. Will not restore any saved documents and other resources. Analyzing LINE for iPad-v1.0.0.ipa... Installing LINE for iPad (v1.0.0)... Installed LINE for iPad (v1.0.0) successfully.
class-dump-z: “Reverse-engineering”
- เมื่อ “Jailbreak” เครื่อง “iOS” เรียบร้อยแล้ว ติดตั้ง “wget” จาก “Cydia”
- เชื่อมต่อ “iOS” ผ่าน “SSH” เพื่อใช้คำสั่งดังนี้
wget -U Mozilla/5.0 <a href="http://www.securitylearn.net/wp-content/uploads/tools/iOS/class-dump-z.zip">http://www.securitylearn.net/wp-content/uploads/tools/iOS/class-dump-z.zip</a> unzip class-dump-z.zip mv class-dump-z /usr/bin
- ค้นหา “Application” ที่ต้อง “Reverse engineering” โดยใช้คำสั่งค้นหา
iPad:/var/mobile/Applications root# find | grep "LINE"
- จากนั้นเมื่อทราบ “Directory” ของ “Application” ก็ค้นหาไฟล์ (.app)
iPad:/var/mobile/Applications root# cd 5ADB398E-3B49-446C-B0D6-818DF298E148/ iPad:/var/mobile/Applications/5ADB398E-3B49-446C-B0D6-818DF298E148 root# ls -l total 64 drwxr-xr-x 2 mobile mobile 68 Jan 19 22:06 Documents/ drwxr-xr-x 29 mobile mobile 4080 Jan 19 22:06 LINE\ for\ iPad.app/ drwxr-xr-x 4 mobile mobile 136 Jan 19 22:06 Library/ -rw-r--r-- 1 mobile mobile 58809 Jan 19 22:06 iTunesArtwork -rw-r--r-- 1 mobile mobile 2428 Jan 19 22:06 iTunesMetadata.plist drwxr-xr-x 2 mobile mobile 68 Jan 19 22:06 tmp/ iPad:/var/mobile/Applications/5ADB398E-3B49-446C-B0D6-818DF298E148 root#
- เมื่อเห็นไดเรกทรอรี “.app” เข้าไปแล้วหาไฟล์ “mach binary files” ซึ่งจะมี “*” ต่อท้าย
iPad:/var/mobile/Applications/5ADB398E-3B49-446C-B0D6-818DF298E148 root# cd LINE\ for\ iPad.app/ iPad:/var/mobile/Applications/5ADB398E-3B49-446C-B0D6-818DF298E148/LINE for iPad.app root# ls -l total 26552 -rw-r--r-- 1 mobile mobile 10590 Jan 19 22:06 A -rw-r--r-- 1 mobile mobile 2838 Jan 19 22:06 AppIcon29x29\@2x~ipad.png -rw-r--r-- 1 mobile mobile 1777 Jan 19 22:06 AppIcon29x29~ipad.png -rw-r--r-- 1 mobile mobile 3705 Jan 19 22:06 AppIcon40x40\@2x~ipad.png -rw-r--r-- 1 mobile mobile 5496 Jan 19 22:06 AppIcon76x76\@2x~ipad.png -rw-r--r-- 1 mobile mobile 3613 Jan 19 22:06 AppIcon76x76~ipad.png -rw-r--r-- 1 mobile mobile 8804904 Jan 19 22:06 Assets.car -rw-r--r-- 1 mobile mobile 26026 Jan 19 22:06 B -rw-r--r-- 1 mobile mobile 6947 Jan 19 22:06 ConnInfo.json -rw-r--r-- 1 mobile mobile 1636 Jan 19 22:06 FriendListView.nib -rw-r--r-- 1 mobile mobile 2574 Jan 19 22:06 ImageDetailView.nib -rw-r--r-- 1 mobile mobile 1976 Jan 19 22:06 Info.plist drwxr-xr-x 10 mobile mobile 1564 Jan 19 21:32 LCNotice.bundle/ -rwxr-xr-x 1 mobile mobile 14191184 Jan 19 22:06 LINE\ for\ iPad* -rw-r--r-- 1 mobile mobile 30361 Jan 19 22:06 LaunchImage-700-Landscape\@2x~ipad.png -rw-r--r-- 1 mobile mobile 37654 Jan 19 22:06 LaunchImage-700-Landscape~ipad.png -rw-r--r-- 1 mobile mobile 29775 Jan 19 22:06 LaunchImage-700-Portrait\@2x~ipad.png -rw-r--r-- 1 mobile mobile 37344 Jan 19 22:06 LaunchImage-700-Portrait~ipad.png
- ใช้คำสั่ง “class-dump-z ชื่อโปรแกรม > ชื่อไฟล์ที่ต้องการบันทึก”
iPad:/var/mobile/Applications/5ADB398E-3B49-446C-B0D6-818DF298E148/LINE for iPad.app root# class-dump-z LINE\ for\ iPad > reverseLine.txt iPad:/var/mobile/Applications/5ADB398E-3B49-446C-B0D6-818DF298E148/LINE for iPad.app root# ls -l drwxr-xr-x 2 mobile mobile 136 Jan 19 21:32 pt-PT.lproj/ drwxr-xr-x 2 mobile mobile 136 Jan 19 21:32 pt.lproj/ -rw-r--r-- 1 mobile mobile 794 Jan 19 22:06 publicLegy.der -rw-r--r-- 1 root mobile 2075841 Jan 22 21:40 reverseLine.txt -rw-r--r-- 1 mobile mobile 24737 Jan 19 22:06 rsa.js drwxr-xr-x 2 mobile mobile 136 Jan 19 21:32 ru.lproj/ -rw-r--r-- 1 mobile mobile 757349 Jan 19 22:06 skin_a_01_01__A_1.jpg
- ข้างล่างคือตัวอย่างของ “Header file” นามสกุล “.h” ของการเขียน “Objective-C”
__attribute__((visibility("hidden"))) @interface LoginDialog : UIView { UIWebView* mWebview; UIButton* mCloseButton; UIActivityIndicatorView* mIndicator; NSURL* mLoadingUrl; NSMutableURLRequest* mRequest; id mDelegate; } -(void)didFinishLoad; -(void)didStartLoad; -(void)show; -(void)bounce1AnimationStopped; -(void)bounce2AnimationStopped; -(CGAffineTransform)transformForOrientation; -(void)loadWithRequest:(id)request; -(void)load; -(void)dealloc; -(id)initWithURLRequest:(id)urlrequest withDelegate:(id)delegate; -(id)initWithURLRequest:(id)urlrequest withDelegate:(id)delegate frame:(CGRect)frame; -(id)initWithUrl:(id)url withDelegate:(id)delegate; -(id)initWithUrl:(id)url withDelegate:(id)delegate frame:(CGRect)frame; -(void)initViews; -(void)cancel; -(void)dismiss; -(void)postDismissCleanup; @end
Update
- สำหรับท่านใดมีปัญหาการใช้งาน class-dump-z ใน iOS 8 ลองทดสอบใช้ Class Dump (version 3.1.2-x-1.0.1-2p) แทน