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
Ios App破解之路二 JJ斗地主的更多相关文章
- IOS App破解之路一 拿到appstore上的ipa
1, 在Mac电脑上的app store里搜索Apple Configurator2 并安装 2, iPhone手机连接Mac电脑 3, 登录Apple Configurator2 菜单栏, 账号 ...
- mac App 破解之路六 studio 3t
不想无限使用,直接破解到正版: 输入邮箱 名字之后 还有licence信息之后,处理函数是: this.text.getText() 很明显是你输入的licence. 然后交给父类okPress处 ...
- ios app 解决微信扫二维码不能跳转问题
<script> (function(){ // Setup GA (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i ...
- Mac app 破解之路
6年之前一直做过一些内存挂,脚本挂.都是比较低级的技术. 这几年期间,断断续续利用业余时间学了一些汇编的知识,当时只是想着破解游戏. 所有的黑技术都是业余自学的,没有老师可以问,只能百度和自己领悟,比 ...
- MAC App破解之路十 Particle Design
这个软件破解非常简单: 修改: [PaddleStatic Yz6nrtNwF4].直接返回1 效果:
- Mac App破解之路九 vscode插件破解
破解对象: luaide 破解目的:学习如何破解vscode插件 破解背景: vsscode用了这么多年,安装了很多插件,其中luaide插件是收费的. 说实话,100块并不贵, 我本来准备买的. ...
- Mac App 破解之路八 病毒程序分析
本人使用MacBooster 7 扫出了几个未知程序. JMJ56 这个程序. 在finder中打开发现是一个shell脚本 调用了python 9NKb0 就是python脚本使用. 只不过是 ...
- iOS app集成支付宝支付流程及后台php订单签名处理
iOS app集成支付宝支付流程 1: 开通支付宝商户 由公司去支付宝 https://b.alipay.com/order/serviceIndex.htm 签约支付宝开通支付宝商家: 2:商户支付 ...
- Xcode7.1环境下上架iOS App到AppStore 流程② (Part 二)
前言部分 part二部分主要讲解 iOS App IDs 的创建.概要文件的配置.以及概要文件安装的过程. 一.iOS App IDs 的创建 1)进入如图1所示界面点击右上角箭头所指的加号 进入iO ...
随机推荐
- 【Java8新特性】Stream API有哪些中间操作?看完你也可以吊打面试官!!
写在前面 在上一篇<[Java8新特性]面试官问我:Java8中创建Stream流有哪几种方式?>中,一名读者去面试被面试官暴虐!归根结底,那哥儿们还是对Java8的新特性不是很了解呀!那 ...
- vue-cli3的eslint配置问题
vue-cli3按照官网教程配置搭建后,发现每次编译,eslint都抛出错误 error: Expected indentation of 4 spaces but found 0 (indent) ...
- 浅谈spring依赖注入
了解依赖注入 前言 先了解下控制反转--转自知乎的国哥 如果一个类A 的功能实现需要借助于类B,那么就称类B是类A的依赖,如果在类A的内部去实例化类B,那么两者之间会出现较高的耦合,一旦类B出现了问题 ...
- sql注入讲解
1.输入1' 发现数据库报错,原因是我们的输入直接被代入到数据库查询语句里面. 2.有没有办法可以不让他报错呢?可以尝试一下构造正确的数据库语法,使之不报错.比如输入 1 and 1=1 试试 sel ...
- [256个管理学理论]006.刺猬效应(Hedgehog Effect)
刺猬效应(Hedgehog Effect) 来自于大洋彼岸的让你看不懂的解释: 刺猬效应(刺猬法则)就是人际交往中的“心理距离效应”.人与人之间都应该保持这条底线,过犹不及. 刺猬效应强调的就是人际交 ...
- java方式实现选择排序
一.基本思想 每一趟找到未排序序列的最小(大)值,把它存放在已排序序列末尾,直到把所有的数据排序完,即是第k趟找到剩余未排序数据的最小(大)值,然后把这个最小(大)值存放在数组的第k(k=1,2... ...
- 运用惰性删除和定时删除实现可过期的localStorage缓存
localStorage简介 使用localStorage可以在浏览器中存储键值对的数据.经常被和localStorage一并提及的是sessionStorage,它们都可以在当浏览器中存储键值对的数 ...
- Orcle 查询语句
首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott ac ...
- Spring boot Sample 005之spring-boot-profile
一.环境 1.1.Idea 2020.1 1.2.JDK 1.8 二.目的 通过yaml文件配置spring boot 属性文件 三.步骤 3.1.点击File -> New Project - ...
- appnium(一)简介
一.appium简介 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios,android应用(当然了,还有 ...