admin管理员组

文章数量:1533913

文章目录

  • 破解前的运行效果
  • 破解后的运行效果
  • 从越狱手机上取出app包
    • usb ssh登录到手机root账户
    • 获取app包的安装位置
  • 使用hopper破解
  • 计算偏移量
  • 如果要修改成其他指令怎么办?
  • 重新生成.ipa包
  • 如果想要在非越狱手机上安装破解后的app,需要重签名
    • 通过xcode获取证书(推荐,简单)
    • 获取证书id
  • 导出.plist文件
    • 以后每次修改可执行文件的汇编代码只要重复下面操作

破解前的运行效果

先看下破解之前的程序,密码输入错误点击按钮不能进入,只有输入9527才能登录成功

破解后的运行效果

不管输入什么,都显示密码正确,并且弹出新窗口

从越狱手机上取出app包

usb ssh登录到手机root账户

可以通过我写的下面这篇文章查看详细的usb 登录手机教程
越狱iPhone手机使用openSSH wifi和usb连接mac电脑再免密码登录再用shell脚本执行教程
如果你已经看懂了并且已经设置好了2个脚本,直接执行下面2个脚本

sh usb.sh
sh login.sh

获取app包的安装位置

登录root账号以后调用 MJAppTools -l 工具获取app包的位置

MJAppTools -l

如下图,得到路径结果:

如果没有安装MJAppTools工具,可以执行下面指令:
先打开要破解的app,然后输入

ps -A | grep 进程名字
ps -A | grep testCrackPwd

结果如下:

tandeyueyu6s:~ root# ps -A | grep testCrackPwd
 1921 ??         0:00.53 /var/containers/Bundle/Application/27FE8224-7076-4BD2-8E6A-EAB727EBB0B1/testCrackPwd.app/testCrackPwd
 1993 ttys000    0:00.00 grep testCrackPwd

用ifunBox打开这个目录 /var/containers/Bundle/Application/27FE8224-7076-4BD2-8E6A-EAB727EBB0B1
然后把testCrackPwd.app 复制到mac电脑上.

在mac上把testCrackPwd.app,右键"显示包内容",如下图
把里面跟app同名的可执行文件,拖拽到hopper中

使用hopper破解

如下图,hopper中找到这个tbz跳转的代码
使用debugserver给app在这3个地址下断点:

计算偏移量

(lldb) image list -o -f |grep testCrackPwd
[  0] 0x0000000004374000 /private/var/containers/Bundle/Application/277D073A-C808-4D4B-9A91-5FB238E744FA/testCrackPwd.app/testCrackPwd(0x0000000104374000)

得到偏移量是:0x0000000004374000
把hopper中这3行汇编都在debugserver里添加断点:

(lldb) br set -a 0x0000000004374000+0x0000000100006430
(lldb) br set -a 0x0000000004374000+0x0000000100006434
(lldb) br set -a 0x0000000004374000+0x00000001000064dc

发现输入错误的密码会跳入到0x00000001000064dc 这个断点,那么说明输入正确就会执行tbz下面的指令0x0000000100006434这条指令
所以为了每次不管输入正确密码或者错误密码都的显示密码正确,直接把tbz删掉,这样指令直接向下执行,就得出正确结果
方法1:用NOP填充,点击上面Modify->nop region,如下图

然后点击右上角的图标Hexadecimal mode 16进制显示模式.被修改的指令会变成红色.赋值这些数字1F 20 03 D5,这个就是 用空nop填充的16进制显示


如果你是付费版本,可以直接选择保存成可执行文件,如下图

但是免费版不能保存,提示demo版本不能保存

这时候用到machoview软件,打开文件找到macho中的代码段,代码段就是text段,找到咱们要修改指令的地址0000000100006430,在macho中的地址没有前面的1加8个0而是0x6430

双击第二行,然后把上面的16进制指令倒着输入进去,因为hopper和macho的16进制显示是相反的.hopper中显示的1F 20 03 D5,在machoview里要输入成 d5 03 20 1f

然后用machoview保存
然后用hopper打开之前的app,会发现,我们要改的6430地址的指令已经变成了nop,说明修改成功

如果要修改成其他指令怎么办?

假设还是上面这个地址,我改成b 0x100006434,效果是一样的,但是不应该这么做,因为这局指令不写也会自动向下执行,因为下一句就是0x100006434,这里是为了告诉大家如何用hopper使用修改汇编指令.
在要修改的指令上面点击modify->Assemble Instruction… 快捷键option A

然后在弹出框输入汇编指令,如下,然后按Assemble and Go Next

然后就会看到这句变成了跳转指令

之后按照上面方法,找到16进制的指令显示01 00 00 14,在到macho中找到对应地址倒着修改成 14 00 00 01就好了

重新生成.ipa包

首先建立一个文件件,起名Payload,注意P要大写,一个字母也不能错.然后把上面的testCrackPwd这个包,拖拽到Payload文件夹中
因为testCrackPwd包中的testCrackPwd文件已经被我们用machoview修改了内容.所以这个包也是修改后的.
然后把Payload文件夹,右键压缩成zip文件,变成Payload.zip. 然后把.zip重命名为.ipa.操作如下图所示:

下面如果要安装到越狱手机,就不需要重签名,可以直接使用爱思助手安装到越狱手机上,我的设备->应用游戏->导入安装,然后选择刚才的Payload.ipa,如下图所示

之后我们看下在越狱手机上的运行结果.已经是我们破解以后的样子了,不管输入什么密码,都会显示密码正确,然后弹出新的窗口,如最上面显示的破解后的gif图片

如果想要在非越狱手机上安装破解后的app,需要重签名

详细的原理可以查看我写的这篇文章
ios重签名在非越狱手机上安装自己破解的app
已经看完以后,下面直接写出简单方法:

通过xcode获取证书(推荐,简单)

先把要安装app的iphone连接上mac,如果之前连接过,那就不用连接,打开xcode,点击项目 -> target->Signing Capabilities->选择team如下图

然后编译有点Products->show in finder,在打开的文件夹地方,右键显示包内容,如下图

包里面也有一个embedded.mobileprovision 文件可以看到这个证书是适配所有app ID的,手机适配你账号上所有的手机,如下图

然后用你自己的证书文件embedded.mobileprovision覆盖上面从越狱手机复制到mac里的app包里的

获取证书id

查看可用证书id,终端输入指令

security find-identity -v -p codesigning

显示下面8个证书

1) 9E8E4B96828A64874256E93A9D5941357C921E15 "Apple Development: diwen tan (3H2A7XYSN6)" (CSSMERR_TP_CERT_REVOKED)
  2) 3202F166ABE7013D59292FE228882350AD07FA2E "Apple Development: diwen tan (Q7WR85FJ79)"
  3) 34540641D0312D2AEE0CAF6B091EE70B9D6181FB "iPhone Distribution: Unicom System Integration  Corporation Heilongjiang Branch (BSQ7TUAJAK)"
  4) 34540641D0312D2AEE0CAF6B091EE70B9D6181FB "iPhone Distribution: Unicom System Integration  Corporation Heilongjiang Branch (BSQ7TUAJAK)"
  5) 07CA4B77ED192A9294DB84EBD74BC5159793DF69 "Apple Development: guangyu shi (6NRAA7665L)"
  6) 39AFD07C57ECD1F1BE4C347AACD3B587822D4E86 "iPhone Developer: D Zhao (RYR87CRR93)"
  7) 34540641D0312D2AEE0CAF6B091EE70B9D6181FB "iPhone Distribution: Unicom System Integration  Corporation Heilongjiang Branch (BSQ7TUAJAK)"
  8) 34540641D0312D2AEE0CAF6B091EE70B9D6181FB "iPhone Distribution: Unicom System Integration  Corporation Heilongjiang Branch (BSQ7TUAJAK)"
     8 valid identities found

第5个 Apple Development ,这个是我的app store个人证书
复制前面的证书idid
07CA4B77ED192A9294DB84EBD74BC5159793DF69

导出.plist文件

进入embedded.mobileprovision文件所在目录,执行命令

security cms -D -i embedded.mobileprovision > temp.plist

得到temp.plist文件
在执行命令

/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' temp.plist > entitlements.plist

得到entitlements.plist文件,然后删掉临时文件 temp.plist
entitlements.plist文件打开如下:

然后把 entitlements.plist文件拖拽进要破解的app包所在目录下,如下图:

然后执行命令替换签名

codesign -fs 证书id --entitlements entitlements.plist 包名.app

例如上面的例子:

codesign -fs 07CA4B77ED192A9294DB84EBD74BC5159793DF69 --entitlements entitlements.plist testCrackPwd.app

执行成功显示正在替换签名如下:

testCrackPwd.app: replacing existing signature

然后新建文件夹起名叫Payload,再把app包放进去,然后压缩成zip文件.然后再把Payload.zip改名成 Payload.ipa
然后就可以使用爱思助手安装到非越狱手机上了.

以后每次修改可执行文件的汇编代码只要重复下面操作

  1. 先用hopper修改汇编代码并且保存.
  2. 把entitlements.plist 文件复制进Payload文件夹,给app包重新签名,如下例子
codesign -fs 07CA4B77ED192A9294DB84EBD74BC5159793DF69 --entitlements entitlements.plist testCrackPwd.app
  1. 删除掉Payload文件夹下的entitlements.plist文件删除,然后把Payload压缩成Payload.zip,然后重命名成Payload.ipa
  2. 用爱思助手安装Payload.ipa文件

本文标签: 版本hopperMacDemoapp