creantan 发表于 2014-10-9 15:38:28

修改最新iphone QQ地理位置信息

本帖最后由 creantan 于 2014-10-9 15:56 编辑

作者:creantan (PYG解密小组)
邮箱:creantan@gmail.com


QQ版本V5.1.1.97
先看下效果:


本教程面向新手,目的在于越狱开发工具入门介绍。

1.工具介绍:

Clutch( High-Speed iOS Decryption System )
https://github.com/KJCracks/Clutch
自己下载编译上传到越狱后的iphone上。

cycript
http://www.cycript.org/
Cycript allows developers to explore and modify running applications on either iOS or Mac OS X using a hybrid of Objective-C++ and JavaScript syntax through an interactive console that features syntax highlighting and tab completion.
使用cydia安装或者自己下载源码编译上传到手机。


class-dump
https://github.com/nygard/class-dump
class-dump is a command-line utility for examining the Objective-C segment of Mach-O files. It generates declarations for the classes, categories and protocols. This is the same information provided by using 'otool -ov', but presented as normal Objective-C declarations.
自行下载编译。

Reveal
http://revealapp.com/
Reveal是一个很强大的UI分析工具

开发工具 theos

cydia插件选装:
Core Utilities
Core Utilities(/bin)
diskdev-cmds
file-cmds
system-cmds
Mobileterminal
openSSH
sshpass
toggle ssh
preferencdloader
substrate safe mode
syslogd to /var/log/syslog


工具就先介绍到这。

在开搞之前我们先思考下我们的目的,然后找到切入点,从切入点一步一步找到我们要的信息,最后编码。
我们的目的是修改地理位置信息,所以我们只要修改了系统上报上来的经纬度信息就可以了,这个是最直接的方法,为了让新手们了解更多,我就从UI层切入,看完此教程估计一般的APP都不在话下了。

废话不多说了,撸起:

先使用Clutch将QQ解密




搞定将文件copy到电脑上来,文件在iPhone位置: /User/Documents/Cracked/QQ-v5.1.1-no-name-cracker-(Clutch-1.4.6).ipa
将文件重命名为QQ.zip解压。

接下来我们用class-dump将QQ的头文件都导出来:
cd到payload中 class-dump -H -o ~/Desktop/jbdev/QQ/header/ QQ                  (~/Desktop/jbdev/QQ/header/为头文件导出保存路径)
导出来一看差不多有6000多个头文件,数量巨大,怎么从这么多的头文件找到我们需要的呢,人肉?脑子瓦特了。。。

这里我们就需要用到Reveal,cycript了,当然一般情况下cycript单独就能解决了,为了介绍下Reveal+cycript协作来完成定位我就啰嗦点了:
在手机设置中找到Reveal选项点进去打开QQ的开关,这样Mac上的Reveal就能找到你的手机了。手机打开QQ,到达这个界面:

(注:这个我已经完成修改了,所以地址不是真实的)
然后在电脑上打开Reveal,稍等片刻Reveal就会显示出你手机上的UI,分层结构一目了然。
我们接下来就来找对应的ViewController
我们可以看到这个界面主要有一个mapView和一个UITableView组成,要找到这个view的controller我们可以想想有什么好的办法,
对了UITableView的delegate一般就是该view的controller了,所以我们从UITableView入手。
在reveal中点中一行UITableviewCell,然后找到它的UITableView如下图:

我们得到这个UITableView在内存中的地址,这个时候我们ssh 到iphone上使用cycript:


铛铛~找到了,就是它了PositionShareViewController
我们找到之前dump出来的头文件,搜索有用的信息- (id)getPOIItemInTable:(id)arg1 indexPath:(id)arg2;- (void)fetchDotAddress:(CDStruct_2c43369c)arg1 address:(id)arg2 refreshAddress:(BOOL)arg3;

测试了下hook refreshPOIAt这个方法成功修改了位置信息:
typedef struct {    double latitude;    double longitude;} CDStruct_2c43369c;
%hook PositionShareViewController

- (void)refreshPOIAt:(CDStruct_2c43369c)arg1{
    CDStruct_2c43369c address = {38.8977332000,-77.0365305000};    %orig(address);}
%end


其他几个有GPS分享的地方用相同办法都可以搞定。

最后上最直接方法:
#import <CoreLocation/CoreLocation.h>%hook MQZLBSEngine
- (void)locationManager:(id)arg1 didUpdateLocations:(id)arg2{    %log;
    CLLocation *loc = [ initWithLatitude:38.8977332000                                                 longitude:-77.0365305000];    NSArray *array = [ initWithObjects:loc, nil];    ;
    %orig(arg1,array);    ;
}

%end

x80x88 发表于 2014-10-9 16:46:46

牛X,180度地膜拜啊!

creantan 发表于 2014-10-9 17:11:13

x80x88 发表于 2014-10-9 16:46
牛X,180度地膜拜啊!

满满的都是回忆{:soso__10169062262133571330_1:}

wgz001 发表于 2014-10-9 17:15:38

复活节啊

飘云 发表于 2014-10-9 18:06:32

欢迎更多人加入iOS行列!

Nisy 发表于 2014-10-9 19:17:40

看不懂,膜拜来自白宫的小伙伴 {:soso_e154:}

阳光宅男 发表于 2014-10-9 23:27:54

牛啊!大牛威武!支持啦

creantan 发表于 2014-10-10 07:40:19

Nisy 发表于 2014-10-9 19:17
看不懂,膜拜来自白宫的小伙伴

Nisy大哥好啊{:soso_e152:},这5年一直在搞ios开发,论坛开了移动安全的我就来凑凑热闹了,为PYG贡献自己一点微薄力量吧,大家一起学习进步~~

creantan 发表于 2014-10-10 07:40:53

飘云 发表于 2014-10-9 18:06
欢迎更多人加入iOS行列!

支持{:soso__10169062262133571330_1:}

friends 发表于 2014-10-10 10:24:43

太强大了,白宫哥V5
页: [1] 2 3
查看完整版本: 修改最新iphone QQ地理位置信息