small-q 发表于 2019-11-29 14:19:33

《PV 私密相册》优雅破解 初学教程

0x1 条件:
   这是最基本 : "一部 iPhone 6s 手机" 和 "一台 MBP"。
请出 checkra1n 越狱,永久越,真香

越不了机器,还是日比去算了。。。。

0x2基础:
   请移步学习完:
零基础一行代码快速破解iOS某App https://www.chinapyg.com/thread-135910-1-1.html

学习完后,相信你对 Frida,对 Theos-tweak 越狱开发有一定了解了,不懂一定要问,不能纸上谈兵

0x3目标介绍:
      这是一款用来隐藏手机相册里私密照片和视频的软件,双层密码加密安全保护隐私。
目标在我手机安装了比较久,我也是正版用户,非常喜爱它。就以它为目标,有感觉,你才会日,对不对??

0x4准备工作:
吊大们没提到的,我在这都作个小小讲解:
先打开App 显示手机进程序:frida-ps -U>>>得到: PV


利用 Frida 脚本,一键脱壳:
中转端口:iproxy 2222 22


执行脱壳:python2 dump.py PV


打开 Info.plist >>>查看>>得到: com.camerasideas.photovault


0x5 神器再出场:
      刚开始 Frida ,我也是比较生疏,反正就是各种查。。。。
像飘总说的:选择用关键字在作死的边缘反复进行试探:
frida-trace -U -f com.camerasideas.photovault -m "*[* *FreeTrial*]"
理解*号作用:"*[* *FreeTrial*]" >>>看作: "aa[bb cc]">>> 一个模糊:"*[* *]",就是三部分,“*FreeTrial*”其实就是一个:* (注意:字符区分大小写)
我试探的关键字有:pro ,member,ad 等。。。。
最后试出:
frida-trace -U -f com.camerasideas.photovault -m "-"
frida-trace -U -f com.camerasideas.photovault -m "-"
frida-trace -U -f com.camerasideas.photovault -m "-"
返回0,可以去掉广告,我要的是全功能,无奈打开IDA

frida-trace -U -f com.camerasideas.photovault -m "*[* *viewDidLoad*]"

还是无法通过修改,在百般无奈,何无办法时,我求助了C版。
根据C吊多年的实践经验:IAP内购会有个凭据receipt


下面高朝:
经过一波操作后,最终过滤:
frida-trace -U -f com.camerasideas.photovault -m "*[*IapReceiptManager* *]"


发现一处调用了 - 方法。
IDA 打开,飞向光明之巅。。。

C版根据经验,快速得出结果:
creantan17:58:22
这个初始化值可以改改,主动调用set方法,永久会员:setIsPermanentMember

经过一番操作,C版改好了最终脚本:{:lol:}
var hook = ObjC.classes['PV.IapReceiptManager']["- init"];
      Interceptor.attach(hook.implementation, {
                onEnter: function(args) {
                        console.log('\n【++++++++++++++++】:\n')
                        },
                onLeave: function(retval) {
                        var IapReceiptManager = ObjC.chooseSync(ObjC.classes['PV.IapReceiptManager']);
                        console.log('log:'+IapReceiptManager+"\n")
                        IapReceiptManager["- setIsPermanentMember:"](0x1)
                }
});

附送日地址的脚本:{:lol:}
Interceptor.attach(Module.findBaseAddress('PV').add(0x2B645C), {
      onEnter: function(args) {
            console.log(Thread.backtrace(this.context, Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join("\n"))
      },
      onLeave: function(retval) {
            retval.replace(0);
      }
    });

现在 Frida 跑,全功能通过,成了永久会员
现在,要写个永久hook,搬出theos,吊大的C版代码又为我写好了{:lol:}
@interface IapReceiptManager : NSObject
- (void)setIsPermanentMember:(bool)arg1;
@end

%hook IapReceiptManager
- (id)init {
      id iapReceiptManager = %orig;
      ;
      return iapReceiptManager;

}
%end

%ctor {
      NSLog(@"[+] PV Hooked");
      %init(IapReceiptManager = objc_getClass("PV.IapReceiptManager"));
}
新建工程


编绎打包


最后丢到 iPhone 执行





0x6 总结:
      这波修改像不像一字节标记破解,哈哈,虽然过程复杂点,但乐在其中!
这全程看似都是我在操作,其背后那股强大的支持力量,就是C版在帮助我,让我学习到了很多东西,在此也分享给大家我学习到的东西!
我希望能举一反三,能继续努力,写出吊B的代码。真心感谢吊大的C版,谢谢!


small-q 发表于 2019-11-29 17:19:05

app页面:https://apps.apple.com/cn/app/%E ... 7%AE%B1/id867586326

f88u8 发表于 2019-11-29 19:31:26

真是高手,学习一下,谢谢、

zxxiaopi 发表于 2019-11-29 22:26:23

膜拜下!

不破不立 发表于 2019-11-30 08:52:14

MBP 阻断了学习之路

tiantian89 发表于 2019-12-9 10:08:22

感谢分享 学习了 得收藏多看几遍

qw363057732 发表于 2019-12-16 17:52:16

瞅你乍地,学习中谢谢分享

dryzh 发表于 2019-12-17 11:01:53

膜拜!中国区商店的啊?切换下先

dryzh 发表于 2019-12-18 18:24:34

Secret Photo Album Hide Photos by Photo Album Vault, Inc. https://apps.apple.com/us/app/secret-photo-album-hide-photos/id867586326

tiantian89 发表于 2020-3-20 13:40:21

感谢分享 厉害了
页: [1] 2
查看完整版本: 《PV 私密相册》优雅破解 初学教程