美文网首页iOS
修改最新IOS QQ地理位置发送

修改最新IOS QQ地理位置发送

作者: crean | 来源:发表于2015-04-21 16:54 被阅读1375次

    作者:creantan 小葡萄爸爸

    先看下效果:

    ![403F8BED-DA18-48DE-9BDB-136284918D28.jpg](http:https://img.haomeiwen.com/i416783/28fe7feaa42c9378.jpg)
    17918806-65D0-41C9-8511-27C3300F09F9.jpg

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

    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解密

    6CA1305B-AF65-4FEF-82B2-72B126DC3088.png

    搞定将文件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,到达这个界面:

    403F8BED-DA18-48DE-9BDB-136284918D28.jpg

    (注:这个我已经完成修改了,所以地址不是真实的)
    然后在电脑上打开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 = [[CLLocation alloc] initWithLatitude:38.8977332000
                                                     longitude:-77.0365305000];
        NSArray *array = [[NSArray alloc] initWithObjects:loc, nil];
        [loc release];
        %orig(arg1,array);
        [array release];
    }
    %end
    

    相关文章

      网友评论

      • feng_dev:大神,我只是想用一个位置列表,如果导入一个 第三方 感觉太重,不用地图
      • 恋之空的blog: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 :joy: 为何我自tweak.xm里面写CDStruct_2c43369c这报错,error: unknown type name 'CDStruct_2c43369c'
      • Rand01ph:博主你好,我想请问一下是否可以直接hook住 CoreLocation/CoreLocation.h里面的CLLocationManager方法,可以让我检测到使用地理位置的APP。
        crean:@Rand01ph 可以的

      本文标题:修改最新IOS QQ地理位置发送

      本文链接:https://www.haomeiwen.com/subject/eljufttx.html