Ios App破解之路二 JJ斗地主


前提條件:

越獄手機里, 安裝了 <JJ斗地主>

 

使用砸殼工具clutch

下載地址: https://github.com/KJCracks/Clutch/releases

dzq:~/data root# Clutch -i | grep JJ
57:  JJ斗地主-歡樂棋牌休閑合集 <cn.jj.TKLobby>

[1]+  Stopped                 Clutch -i | grep JJ
[1]+  Done                    Clutch -i | grep JJ
dzq:~/data root# Clutch -d 57
Zipping JJ斗地主.app
Error: posix_spawn: No such file or directory (Error 2)

Error: posix_spawn: No such file or directory (Error 2)

Error: posix_spawn: No such file or directory (Error 2)

Error: Failed to dump <RNCAsyncStorage> with arch arm64

2020-04-26 12:04:51.272 Clutch[4652:115450] failed operation :(
2020-04-26 12:04:51.272 Clutch[4652:115450] application <NSOperationQueue: 0x102077830>{name = 'NSOperationQueue 0x102077830'}
Error: Failed to dump <RNCAsyncStorage>

2020-04-26 12:04:51.273 Clutch[4652:115450] failed operation :(
2020-04-26 12:04:51.273 Clutch[4652:115450] application <NSOperationQueue: 0x102077830>{name = 'NSOperationQueue 0x102077830'}
Error: Failed to dump <react_native_image_picker> with arch arm64

2020-04-26 12:04:51.274 Clutch[4652:115443] failed operation :(
2020-04-26 12:04:51.274 Clutch[4652:115443] application <NSOperationQueue: 0x10212dcb0>{name = 'NSOperationQueue 0x10212dcb0'}
Error: Failed to dump <react_native_image_picker>

2020-04-26 12:04:51.274 Clutch[4652:115443] failed operation :(
2020-04-26 12:04:51.274 Clutch[4652:115443] application <NSOperationQueue: 0x10212dcb0>{name = 'NSOperationQueue 0x10212dcb0'}
Error: posix_spawn: No such file or directory (Error 2)

Error: Failed to dump <react_native_view_shot> with arch arm64

2020-04-26 12:04:51.275 Clutch[4652:115435] failed operation :(
2020-04-26 12:04:51.275 Clutch[4652:115435] application <NSOperationQueue: 0x1021240c0>{name = 'NSOperationQueue 0x1021240c0'}
Error: Failed to dump <react_native_view_shot>

2020-04-26 12:04:51.276 Clutch[4652:115435] failed operation :(
2020-04-26 12:04:51.276 Clutch[4652:115435] application <NSOperationQueue: 0x1021240c0>{name = 'NSOperationQueue 0x1021240c0'}
Error: Failed to dump <react_native_sqlite_storage> with arch arm64

Error: posix_spawn: No such file or directory (Error 2)

Error: posix_spawn: No such file or directory (Error 2)

 很遺憾, 使用Clutch工具砸殼失敗

 

使用砸殼工具dumpdecrypted

下載:git clone https://github.com/stefanesser/dumpdecrypted.git

網上其他的教程都是直接把源碼下載下來后,直接make,  然后生成了一個: dumpdecrypted.dylib 文件, 然后興致勃勃scp到剛越獄的手機上, 開始砸殼

我按照這個做了, 碰到了兩個問題:  

1,  簽名問題

2, libSystem.B.dylib 不匹配, 導致運行失敗   報什么 __check_ 的什么玩意

 

解決辦法:

1,  下載iPhoneOS12.4.sdk 

  下載源: https://github.com/xybp888/iOS-SDKs

  下載具體版本的SDK: svn checkout https://github.com/xybp888/iOS-SDKs/trunk/iPhoneOS12.4.sdk

  

  為什么下載這個版本? 

  因為本人的手機系統版本是12.4.5, 僅此而已

  

2, 修改makefile文件  

GCC_BIN=`xcrun --sdk iphoneos --find gcc`
GCC_UNIVERSAL=$(GCC_BASE) -arch armv7 -arch armv7s -arch arm64
SDK=iPhoneOS12.4.sdk

CFLAGS = 
GCC_BASE = $(GCC_BIN) -Os $(CFLAGS) -Wimplicit -isysroot $(SDK) -F$(SDK)/System/Library/Frameworks -F$(SDK)/System/Library/PrivateFrameworks

all: dumpdecrypted.dylib

dumpdecrypted.dylib: dumpdecrypted.o 
	$(GCC_UNIVERSAL) -dynamiclib -o $@ $^

%.o: %.c
	$(GCC_UNIVERSAL) -c -o $@ $< 

clean:
	rm -f *.o dumpdecrypted.dylib

 然后重新執行make, 會生成 dumpdecrypted.dylib 文件

3, 對其進行簽名

brew install ldid
ldid -S dumpdecrypted.dylib

 4, 簽名后, 將其拷貝到越獄手機上

scp dumpdecrypted.dylib root@myiphone:/var/root/data

 提示:

  本人設置了ssh免密登錄,

  本人修改了/etc/hosts文件.  新增myiphone域名解析.  對iPhone進行映射

  本人在蘋果手機的root用戶下新建了data目錄.   以后傳文件,或者拿破解文件 直接 ~/data/文件名

  本人設置了iphone ssh支持中文,   登錄ssh

echo "export LC_ALL='en_US.UTF-8'" > ~/.profile

 

正式開始砸殼

1, 拿到 JJ斗地主 可執行路徑.

 先在手機上運行JJ斗地主, 然后 

dzq:~/data root# ps -e | grep JJ
 4830 ??         0:05.17 /var/containers/Bundle/Application/742F31B2-EC2E-4FE3-842B-95DD145D1B15/JJ斗地主.app/JJ斗地主
 4832 ttys000    0:00.03 grep JJ

 2,  cd 到 data目錄

cd ~/data
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/742F31B2-EC2E-4FE3-842B-95DD145D1B15/JJ斗地主.app/JJ斗地主

3, 稍等片刻后,

dzq:~/data root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/742F31B2-EC2E-4FE3-842B-95DD145D1B15/JJ斗地主.app/JJ斗地主 
mach-o decryption dumper

DISCLAIMER: This tool is only meant for security research purposes, not for application crackers.

[+] detected 64bit ARM binary in memory.
[+] offset to cryptid found: @0x101084cf8(from 0x101084000) = cf8
[+] Found encrypted data at address 00004000 of length 13336576 bytes - type 1.
[+] Opening /private/var/containers/Bundle/Application/742F31B2-EC2E-4FE3-842B-95DD145D1B15/JJ斗地主.app/JJ斗地主 for reading.
[+] Reading header
[+] Detecting header type
[+] Executable is a plain MACH-O image
[+] Opening JJ斗地主.decrypted for writing.
[+] Copying the not encrypted start of the file
[+] Dumping the decrypted data into the file
[+] Copying the not encrypted remainder of the file
[+] Setting the LC_ENCRYPTION_INFO->cryptid to 0 at offset cf8
[+] Closing original file
[+] Closing dump file
dzq:~/data root# ll
-sh: ll: command not found
dzq:~/data root# ls
JJ斗地主.decrypted  dumpdecrypted.dylib*

 非常好, 拿到了砸殼后的文件《JJ斗地主.decrypted》 ,  之后就可以用反編譯工具,分析一波了. 

 

使用砸殼工具CrakerXI+

安裝CrakerXI+:

打開cydia軟件, 軟件源, 右上角的編輯按鈕,左上角的添加按鈕,  輸入: http://cydia.iphonecake.com,  然后完成

點擊搜索CrakerXI+安裝.   

打開軟件, 設置選項卡里, 全部選擇, 然后隨便砸殼了,  我個人選擇 選擇 Full ipa   

不全部選擇會有坑: 每次打開被砸殼的軟件都會重新砸殼. 把人搞吐血.

砸殼之后存放的目錄: /var/mobile/Documents/CrackerXI/

 

總結:

從appstore下載安裝后的目錄:

應用程序安裝目錄:/private/var/containers/Bundle/Application/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXX/

 

某個應用程序的可寫目錄:

/var/mobile/Containers/Data/Application/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXX/

/var/root/Containers/Data/Application/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXX/

用的哪個目錄取決於那個應用 是使用什么權限來運行的.

 

具體確定輸出目錄:

dzq:/var/containers/Bundle/Application/742F31B2-EC2E-4FE3-842B-95DD145D1B15 root# cycript -p JJ斗地主
cy# NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
@["/var/mobile/Containers/Data/Application/00B2D6E5-E2A1-48FF-8743-55E34AA7B700/Documents"]
cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]
@[#"file:///var/mobile/Containers/Data/Application/00B2D6E5-E2A1-48FF-8743-55E34AA7B700/Documents/"]

 有兩種方式: 隨便用哪種都可以,  然后ctrl + D. 結束 cy


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM