How to reverse engineering (Class-dump-z)

Clutch: “Decrypt Application”

การ “Decrypt iOS application” เพื่อให้สามารถ “Reverse-engineering” ได้ ตามบทความ “How to decrypt iOS applications”

  1. ตัวอย่างโปรแกรมภายหลัง “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
    
  2. โปรแกรม “.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”

  1.  เมื่อ “Jailbreak” เครื่อง “iOS” เรียบร้อยแล้ว ติดตั้ง “wget” จาก “Cydia”
  2. เชื่อมต่อ “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
    
  3. ค้นหา “Application” ที่ต้อง “Reverse engineering” โดยใช้คำสั่งค้นหา
    iPad:/var/mobile/Applications root# find | grep "LINE"
    
  4. จากนั้นเมื่อทราบ “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#
    
  5. เมื่อเห็นไดเรกทรอรี “.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
    
  6. ใช้คำสั่ง “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
    
  7. ข้างล่างคือตัวอย่างของ “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) แทน

ใส่ความเห็น