《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版,谢谢!
app页面:https://apps.apple.com/cn/app/%E ... 7%AE%B1/id867586326 真是高手,学习一下,谢谢、 膜拜下! MBP 阻断了学习之路 感谢分享 学习了 得收藏多看几遍 瞅你乍地,学习中谢谢分享
膜拜!中国区商店的啊?切换下先 Secret Photo Album Hide Photos by Photo Album Vault, Inc. https://apps.apple.com/us/app/secret-photo-album-hide-photos/id867586326 感谢分享 厉害了
页:
[1]
2