怎样破解并修改手机app数据(app数据修改器)
叶孤城原创,转载须授权。
小白:叶城主,你要攻击的目标叫西门吹雪啊,你忘了?
叶孤城:闭嘴,我要攻击的目标是各种app里面的类!
小白:你为什么要知道类名?难道你要诅咒它不成?
叶孤城:知道类名可以发起攻击,比如让程序自动切换界面……
小白:你这懒人!
小白:叶城主,你要攻击的目标叫西门吹雪啊,你忘了?
叶孤城:闭嘴,我要攻击的目标是各种app里面的类!
小白:你为什么要知道类名?难道你要诅咒它不成?
叶孤城:知道类名可以发起攻击,比如让程序自动切换界面……
小白:你这懒人!
本文解决一个问题:定位目标类的类名。
定位类名,有两个办法,一个是classdump出头文件后再通过静态或动态的分析办法定位出类名,另一个办法是通过分析界面布局来定位类名。
小白:classdump个头?你能不能不要讲这么长的句子,都是什么来的?
叶孤城:classdump是倚天剑,我后续再介绍。
小白:又是剑……
小白:classdump个头?你能不能不要讲这么长的句子,都是什么来的?
叶孤城:classdump是倚天剑,我后续再介绍。
小白:又是剑……
这里介绍分析界面布局并获取类名的办法。
使用的工具为Reveal。
小白:在哪里下载Reveal?
叶孤城:不要问我这种问题啦。
小白:在哪里下载Reveal?
叶孤城:不要问我这种问题啦。
展开全文
(一)使用Reveal
先下载一个破解版本呗,比如1.6版本或1.5版本。
(1)拷贝libReveal.dylib到手机
在mac上运行Reveal后,菜单Help -> Show Reveal Library in Finder,再点击iOS Library,就可以找到libReveal.dylib。
拷贝到DynamicLibrary目录下:
scp libReveal.dylib root@192.168.2.57:/Library/MobileSubstrate/DynamicLibraries
scp libReveal.dylib root@192.168.2.57:/Library/MobileSubstrate/DynamicLibraries
小白:为什么要拷贝到DynamicLibraries目录?这个目录存在吗?
叶孤城:这个目录的动态库(也就是dylib后缀的文件),有机会让某些甚至是所有手机上的程序启动时都加载到,至于让哪些程序加载,则由plist文件决定。然后,只要你的手机成功越狱了,这个目录就是存在的。
小白:还好,我的手机是越狱了的,而且scp也可以使用......看来,你上次讲的“进入攻击范围”还是有点用的。
叶孤城:我向来注重实用,不像某些人只会讲一些无用的算法或所谓软件基础的东西。
小白:......你这算是指责陆小凤跟西门吹雪吗?
小白:为什么要拷贝到DynamicLibraries目录?这个目录存在吗?
叶孤城:这个目录的动态库(也就是dylib后缀的文件),有机会让某些甚至是所有手机上的程序启动时都加载到,至于让哪些程序加载,则由plist文件决定。然后,只要你的手机成功越狱了,这个目录就是存在的。
小白:还好,我的手机是越狱了的,而且scp也可以使用......看来,你上次讲的“进入攻击范围”还是有点用的。
叶孤城:我向来注重实用,不像某些人只会讲一些无用的算法或所谓软件基础的东西。
小白:......你这算是指责陆小凤跟西门吹雪吗?
(2)拷贝libReveal.plist到手机
找一个plist文件来修改,或者直接写一个plist文件。
plist文件要指定让哪个应用启动时加载Reveal.dylib,比如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Filter</key>
<dict>
<key>Bundles</key>
<array>
<string>com.xxx.xxx</string>
</array>
</dict>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Filter</key>
<dict>
<key>Bundles</key>
<array>
<string>com.xxx.xxx</string>
</array>
</dict>
</dict>
</plist>
上面的plist内容,让“全民xx”启动时,加载Reveal.dylib。
小白:如果不指定这个Filter呢,是不是所有的程序启动时都加载?
叶孤城:ios8之前的版本是这样的,但之后的版本都需要指定应用,这个应用就是你的攻击目标。所以,不管3724,你先加上这个Filter再说。
小白:3721,叶城主!还有,你为什么选择“全民xx”这个app?难道你在里面有个马甲?
叶孤城:难道除了会如来神掌,我还是歌神传人,也要告诉你?
小白:等等,歌神,我怎么知道“全民xx”的filter值是什么?
叶孤城:这里面的filter值就是boundleid,而于目标app的boundleid是多少,有很多办法可以查到,比如找到他的plist文件来查看,比如ps看进程信息,比如动态调试等等。你如果还是不明白,那就算了吧。
小白:你不是吧,能不能上点心?我可以加你的开发群再来细问吗?
叶孤城:可以,但我一般不回答。
小白:.......
小白:如果不指定这个Filter呢,是不是所有的程序启动时都加载?
叶孤城:ios8之前的版本是这样的,但之后的版本都需要指定应用,这个应用就是你的攻击目标。所以,不管3724,你先加上这个Filter再说。
小白:3721,叶城主!还有,你为什么选择“全民xx”这个app?难道你在里面有个马甲?
叶孤城:难道除了会如来神掌,我还是歌神传人,也要告诉你?
小白:等等,歌神,我怎么知道“全民xx”的filter值是什么?
叶孤城:这里面的filter值就是boundleid,而于目标app的boundleid是多少,有很多办法可以查到,比如找到他的plist文件来查看,比如ps看进程信息,比如动态调试等等。你如果还是不明白,那就算了吧。
小白:你不是吧,能不能上点心?我可以加你的开发群再来细问吗?
叶孤城:可以,但我一般不回答。
小白:.......
拷贝libReveal.plist到手机:
scp libReveal.plist root@192.168.2.57:/Library/MobileSubstrate/DynamicLibraries
scp libReveal.plist root@192.168.2.57:/Library/MobileSubstrate/DynamicLibraries
之后,在mac上再次启动Reveal就可以连接目标app,来分析ui类了。
比如,在手机上重启目标app,在mac上重启Reveal,然后连接到目标app:
可以看到,目标app的一个页面是这样(注意看类名!):
(二)让目标app自动切换至歌手页面
现在做一个演示,通过Reveal定位到目标类,并让目标启动后自动切换至歌手页面。
小白:哇,你是发起攻击了吗?
叶孤城:冷静,只是让你看到希望而已。
小白:哇,你是发起攻击了吗?
叶孤城:冷静,只是让你看到希望而已。
首先通过Reveal,定位到底部导航条的所在的viewcontroller类:
也就是KSRootTabBarController。
小白:什么叫viewcontroller类?
叶孤城:不要打岔,这种问题去问西门吹雪!
小白:......
小白:什么叫viewcontroller类?
叶孤城:不要打岔,这种问题去问西门吹雪!
小白:......
然后,通过查看classdump翻译到的代码结构,可以看到点击“我要唱”按钮,就是触发KSRootTabBarController::onClickTabBarItem函数。
小白:喂,怎么就dump到代码结构了?叶城主,你断片了哦!
叶孤城:怎么砸掉目标app的外壳,怎么翻译到代码结构,我后面再介绍,你不要叽叽喳喳的。
小白:喂,怎么就dump到代码结构了?叶城主,你断片了哦!
叶孤城:怎么砸掉目标app的外壳,怎么翻译到代码结构,我后面再介绍,你不要叽叽喳喳的。
然后,就可以让目标app自动跳转。
小白:你怎么知道就是这个函数切换至“我要唱”的?难道你有卧底?
叶孤城:我猜的!
小白:这么不专业的话你也说得出来!
叶孤城:专业?写程序就是玩积木,有什么专业好严肃的!
小白:......
叶孤城:其实,有两个办法,一是看名字来猜并反复尝试,两是通过动态调试来快速定位。
小白:何为动态调试?
叶孤城:就是动着调戏,我后面再介绍,你先不要流口水。
小白:我去。
小白:你怎么知道就是这个函数切换至“我要唱”的?难道你有卧底?
叶孤城:我猜的!
小白:这么不专业的话你也说得出来!
叶孤城:专业?写程序就是玩积木,有什么专业好严肃的!
小白:......
叶孤城:其实,有两个办法,一是看名字来猜并反复尝试,两是通过动态调试来快速定位。
小白:何为动态调试?
叶孤城:就是动着调戏,我后面再介绍,你先不要流口水。
小白:我去。
最终,自动跳转的效果是这样的:
小白:叶城主,我觉得你很敷衍啊,怎么拿到代码结构不说,代码结构也不说,怎么做到也不说,就只告诉我一个结果!
叶孤城:本次的目的是介绍通过Reveal定位目标类的类名,这个讲了就行,至于其它的,慢慢来,贱,不,剑要一招一招来练。
小白:叶城主,我觉得你很敷衍啊,怎么拿到代码结构不说,代码结构也不说,怎么做到也不说,就只告诉我一个结果!
叶孤城:本次的目的是介绍通过Reveal定位目标类的类名,这个讲了就行,至于其它的,慢慢来,贱,不,剑要一招一招来练。
以上知识点只用于研究优秀的作品,请勿用于任何商业用途。
鸡汤时间
1.不经历风雨,怎么迎接暴风雨。
2.人生就是一个起落落落落落落落落的过程。
3.生活会让你苦上一阵子,等你适应之后,再让你苦上一辈子。
4.生活不止是眼前的苟且,还有明天的苟且和后天的苟且。
5.一觉醒来,是不是感觉离梦想又远了呢。
6.没有梦想,至少还可以做梦啊。
7.好好活下去,每天都有新打击。
8.加油,你是最差的。
9.世上无难事,只要肯放弃。
10.书山有路勤为径,怪你没有富贵命。
1.不经历风雨,怎么迎接暴风雨。
2.人生就是一个起落落落落落落落落的过程。
3.生活会让你苦上一阵子,等你适应之后,再让你苦上一辈子。
4.生活不止是眼前的苟且,还有明天的苟且和后天的苟且。
5.一觉醒来,是不是感觉离梦想又远了呢。
6.没有梦想,至少还可以做梦啊。
7.好好活下去,每天都有新打击。
8.加油,你是最差的。
9.世上无难事,只要肯放弃。
10.书山有路勤为径,怪你没有富贵命。
请关注微信公众号《编程牛人》,获取以下资源:
在公众号对话框输入数字1,小编拉你进程序员讨论群
300本编程经典书籍下载
83份A轮、天使轮融资计划书等你下载
1000G编程教学视频免费下载,部部经典
100套微信小程序源码下载
猜猜你喜欢
进入攻击范围
新码农从入门到猝死之路(笑哭)
产品经理改需求被程序小哥打死祭天
程序员逆天改命之胜天半子
程序员是如何逆天改命
人人都能成为ERP高手