1.通过输入一个地点名称,定位到该位置附近,发一条朋友圈,显示该地理位置.
2.输入一个经纬度坐标,内部转换为城市名称,朋友圈显示该位置信息.
本文所需工具:hopper ,class-dump后的微信头文件,MonkeyDev,Xcode,解密后的微信iPA包,话不多说直接开干.
1>xcode运行微信工程到手机,点击微信到发朋友圈的界面,查看对应控制器的名称 "WCNewCommitViewController"
发朋友圈对应的控制器2>在对应的头文件里查看属性和方法,找到一个眼前一亮"- (void)onLocationCellClicked" ----点击获取位置的方法,hopper解析出来的MACH-O文件中查看一番,
-(void)onLocationCellClicked方法实现3>点击获取位置,会将一个控制器入栈,而这个控制器(WCTimelinePOIPickerViewController)就是选择地理位置的控制器,去里面看看有什么方法是用来定位的,我的思路就是直接搜索"location" ,定位到几个信息
//WCTimelinePOIPickerViewController的方法
"- (void)getAddressByLocation:(struct CLLocationCoordinate2D)arg1;
- (void)addCityItem:(id)arg1;
- (void)onRetrieveLocationError:(int)arg1;
- (void)onRetrieveLocationTimeOut:(id)arg1;
- (void)onRetrieveLocationOK:(id)arg1;
"
//LocationRetriever里面的一些方法
"- (void)onGPSLocationChanged:(id)arg1 withTag:(unsigned long long)arg2;
- (void)onGPSLocationError:(int)arg1 withTag:(unsigned long long)arg2;
- (void)onGPSLBSLocationChanged:(id)arg1 withTag:(unsigned long long)arg2;
- (void)onGPSLBSLocationError:(int)arg1 withTag:(unsigned long long)arg2;
"
剩下的就是在工程里实现该方法,打上对应断点,查看位置信息,
点击显示位置时调用的方法过掉这个断点,
看函数调用栈,方法调用5>尝试修改一下这两个方法的CLLocation的经纬度坐标,可以随意定位国内的任意位置测试
测试结果这个方法适用于修改国内的定位坐标,只支持中文城市输入.
转换坐标,输入经纬度,转换成对应位置,结果如下
ojbk
网友评论