如何逆向苹果苹果4s定位服务务协议

我将寻找我人生之伴侣,得之,我幸,不得,我命,如此而已
iOS应用逆向工程(五):利用Cycript 定位目标函数
我们看待每一样事物,首先看到是其现象,再通过现象切入其本质。一般情况下,一个软件之所以能引起我们的兴趣,无非是两个元素:功能和数据。如果发现了自己感兴趣的功能,但class-dump的头文件找不到可疑的关键词,怎么办。如果发现了我们感兴趣的数据,如何获取呢。我们知道,从appstore 下载下来的app都是经过加密的。class-dump 是没有办法破解的。因此,我们就要需找更加高级的工具。Cycript!
,这个在上一篇已经介绍过,但那只是他的一部分功能。
首先从现象切入app,找出UI函数
先以mail为例
# ps -e |grep Application
0:00.55 /private/var/db/stash/_.gcvMBl/Applications/MobileCal.app/PlugIns/CalendarWidget.appex/CalendarWidget
0:19.62 /private/var/db/stash/_.gcvMBl/Applications/Stocks.app/PlugIns/StocksWidget.appex/StocksWidget
0:39.44 /Applications/MobileMail.app/MobileMail
看到了这个 MobileMail 了吧,若果不确定,验证一下。
# kill -9 762
看看mobilemail是不是闪退了
然后查看当前界面的UI层次架构,定位“编写邮件”按钮
我们知道苹果有很多私有函数在正向开发中是不让用的,这些私有函数就有一个recurisveDecription ,这个函数可疑返回这个View 的UI层次结构,下面我们就来用用。
# cycript -p MobileMail
cy# ?expand
expand == true
cy# [[UIApp keyWindow]recursiveDescription]
@"&UIWindow: 0x16546a20; frame = (0 0; 320 480); gestureRecognizers = &NSArray: 0x1654ab40&; layer = &UIWindowLayer: 0x166b7230&&
是[UIApplication sharedApplication]
cy# [[[UIApplication sharedApplication]keyWindow]recursiveDescription]
@"&UIWindow: 0x16546a20; frame = (0 0; 320 480); gestureRecognizers = &NSArray: 0x1654ab40&; layer = &UIWindowLayer: 0x166b7230&&
..........
| &MFTiltedTabView: 0x16643d30; frame = (0 0; 320 480); userInteractionEnabled = NO; gestureRecognizers = &NSArray: 0x&; layer = &CALayer: 0x16643ba0&&
| &UIScrollView: 0x; frame = (0 0; 320 480); gestureRecognizers = &NSArray: 0x&; layer = &CALayer: 0x&; contentOffset: {0, 0}; contentSize: {320, 77.5}&
| &_TabGradientView: 0x; frame = (-320 -420; 960 480); alpha = 0; userInteractionEnabled = NO; layer = &CAGradientLayer: 0x&&
| &UIView: 0x; frame = (-; ); layer = &CALayer: 0x&&"
两者是等价的
输出了一大串东西,看着头晕。但仔细一看,可疑看出来keyWindow
的每个subview 及二级subview 的description
会被完整的展示在&......&中,包括每个view 对象在内存中的地址,以及它的坐标。尺寸等基本信息,其中缩进的多少体现了视图之间的父子关系。同一缩进量的视图是平级的。
这样,通过cycript
可以拿到所有的window
cy# tableView =
#0x16643d30
#"&MFTiltedTabView: 0x16643d30; frame = (0 0; 320 480); userInteractionEnabled = NO; gestureRecognizers = &NSArray: 0x&; layer = &CALayer: 0x16643ba0&&"
cy# [#0x16643d30 subviews]
@[#"&UIScrollView: 0x; frame = (0 0; 320 480); gestureRecognizers = &NSArray: 0x&; layer = &CALayer: 0x&;
contentOffset: {0, 0}; contentSize: {320, 77.5}&",#"&_TabGradientView: 0x; frame = (-320 -420; 960 480); alpha = 0; userInteractionEnabled = NO; layer = &CAGradientLayer: 0x&&",#"&UIView:
0x; frame = (-; ); layer = &CALayer: 0x&&"]
我们可以看到这行
&MailStatusBarView: 0x; frame = (69 0; 182 44); opaque = NO; autoresize = BM; layer = &CALayer: 0x&&
cy# [#0x setHidden:YES]
cy# [#0x setHidden:NO]
分别执行这两行代码,执行第一行后可以发现,下边那行“Update 3 minutes ago” 不见了
然后在执行下面这行,可以发现,“Update 3 minutes ago”又出现了
&UIToolbar: 0x; frame = (0 436; 320 44); opaque = NO; autoresize = W+TM; layer = &CALayer: 0x165e6320&&
这个大家都熟悉,我们试着隐藏它
cy# [#0x setHidden:YES]
cy# [#0x setHidden:NO]
&UILabel: 0x166b9350; frame = (55 12; 43 20.5); text = 'Inbox'; userInteractionEnabled = NO; layer = &_UILabelLayer: 0x&&
cy# #0x166b9350.text
再看看你的mail 里有什么变化
同样可以隐藏掉,这样我们可以对这个app
基本上完全掌握了
当然,我们这么大费周章,仅仅只是为了了解这个app
的UI层次结构吗?当然不是。
按照MVC 设计标准,M代表model,即数据源,是未知的,这也是我们感兴趣的。V代表view,C代表controller 也是未知的。M和V 之间没有直接联系,而C既可以访问M 也可以访问V ,是M和V
的交流中枢。如果利用已知的V 获得C ,不就可以访问M了吗。nextResponder 就出场了。
cy# [#0x166b9350 nextResponder]
#"&UITableViewCellContentView: 0x; frame = (0 0; 286 44); gestureRecognizers = &NSArray: 0x16636b80&; layer = &CALayer: 0x&&"
cy# [#0x nextResponder]
#"&MailboxTableCell: 0x; baseClass = UITableViewC frame = (0 28; 320 44.5); autoresize = W; layer = &CALayer: 0x166a88b0&&"
cy# [#0x nextResponder]
#"&UITableViewWrapperView: 0x16528ac0; frame = (0 0; 320 480); gestureRecognizers = &NSArray: 0x&; layer = &CALayer: 0x&; contentOffset: {0, 0}; contentSize: {320, 480}&"
cy# [#0x16528ac0 nextResponder]
#"&UITableView: 0x168f2200; frame = (0 0; 320 480); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = &NSArray: 0x&; layer = &CALayer: 0x&; contentOffset: {0, -64}; contentSize: {320, 504.5}&"
cy# [#0x168f2200 nextResponder]
#"&MailboxPickerController: 0x&"
这样我们通过刚才的UILabel获取到controller
今天先到这吧,拿到C ,获取M 还会远吗
没有更多推荐了,---------------心空道亦空
逆向分析之定位算法的一些经验
当开始逆向分析一个300M的图像处理软件的一个功能时,才发现之前玩逆向都是小打小闹,一个多月的奋斗,终于搞定了。很希望遇到问题,因为这样才能学到新的东西,事实上确实遇到了不少问题,也学到了很多经验。
之前的逆向都是直接扔到OD就开始调试,而现在知道在虚拟机里运行,因为这么大的软件不是一两个小时就可以搞完的,在虚拟机里直接快照拍摄,就像游戏存档一样,这样可以避免每次运行软件的注册激活,避免重复之前的分析,避免内存地址动态变化等等,好处多多。
分析算法的难点之一是定位核心算法。对于有软件保护的软件就更困难了,我分析的这个软件反调试只有一个IsDebugPresent,OD插件轻松绕过。幸好没有虚拟化保护,要不然结果可能就不一样了。
既然是图片处理功能,有两个思路,一是通过跟踪图片数据找到核心算法,二是通过几个影响算法的参数找到核心算法。我一开始选择跟踪图片数据定位核心算法,在CreateFile、ReadFile上下断点,但是没找到,之后改变方法,通过定位参数来找核心算法,一路跟踪从资源文件中读到的参数,但是经过几次传递,最后却跟丢了,设了各种断点,可是都断不下来。最后又用跟踪图片数据的方法,用软件processmonitor辅助,还是下ReadFile的断点,找到了图片数据,一路跟踪图片数据,发现又跟丢了,只得到一处存储着处理结果的图片数据,找不到原图的数据,在主线程里设各种断点,都断不下来。几乎都要放弃的时候,抱着试试看的态度,在每个子线程中都下了断点,终于是断了下来。
这涉及到多线程的资源共享问题,多线程中每个子线程的栈是私有的,堆是公有的,不过可以有私有堆,寄存器也是私有的!之前对这个问题有误解,就一组寄存器怎么会是私有的呢?原来每个子线程都有自己的一组寄存器副本,每当切换线程时,寄存器都是会发生改变的,而设硬件断点就是在drx寄存器中存入目标的地址,这个drx寄存器应该只是当前线程的寄存器副本,因此这个硬件断点只在当前线程有效,当其它线程访问目标时,该硬件断点是不会触发的,这就是我之前在主线程中设断点怎么都断不下来的原因了。
断下来的这个线程是所有线程中(除主线程)运行时间最长的。但是想找到原始图片数据还是没做到。处理的算法是在子线程中执行的,通过在结果图片数据上设断点,一步一步逆向地向前推,直到分析完所有参与运算的代码。核心算法找到了,分析算法就相对简单的多了。
没有更多推荐了,您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于逆向无源定位的辐射源目标地图导航
Radiation Object Map Navigation Based on Inverse Passive Location.pdf 6页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
基于逆向无源定位的辐射源目标地图导航
Radiation Object Map Navigation Based on Inverse Passive Location
你可能关注的文档:
··········
··········
2014 年8 月第4 期
基于逆向无源定位的辐射源目标地图导航
石荣,邓科,阎剑
(电子信息控制重点实验室,成都 610036 )
要:针对导航的多样化发展趋势,提出了一种基于逆向无源定位的辐射源目标地图导航
新方法,以已知坐标位置的辐射源目标为参考点,通过无源定位方程的逆向求解实现了运载体的
单站独立导航和多站协同导航,并对该方法的基本原理、实现形式、重要特点以及所涉及的主要
关键技术进行了详细的阐述,对其应用前景进行了分析,从而为抗干扰、反欺骗、多样化导航应
用提供了新的参考。
关键词:多样化导航;逆向无源定位;辐射源目标地图;单站独立导航;多站协同导航
中图分类号:TN966
文献标识码:A
文章编号:-(-06
Radiation Object Map Navigation Based on Inverse Passive Location
SHI Rong,DENG Ke,YAN Jian
Abstract :The new navigation method is put forward for the diversification of the navigation program. This is the radiation
navigation
navigation
corporative navigation are completed though the resolving inverse passive location equation after selecting the radiation objects with
known position as the reference points. The basic principle, processing route, main characteristics and relative key technologies are
discussed in detail. The application foreground is analyzed. It is the important reference for anti-jamming and anti-deceived diversity
navigation.
Key words:Diversity N Inverse Passive L Radiation Object M Single Observer Depended N
Multi Observers Corporative Navigation
才能引导运载体航行。比较古老的导航设备是指南
车、计里鼓和磁罗盘等;近代的导航系统有奥米伽,
伏尔,测距器,塔康、罗兰C,雷达高度表等;现
代的导航系统主要是以GPS、GLONASS、Galileo、
导航随着人类政治、经济和军事活动的产生而
BD 为代表的卫星导航系统[3,4] 。
产生,发展而发展,其基本功能是回答“我在哪
虽然至今为止,已经开发出了大量的导航系统,
里?”的问题,其基本作用是引导飞机、舰艇、车
正在加载中,请稍后...逆向定位_百度百科
清除历史记录关闭
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
这种定位是利用有较高知名度的竞争对手和声誉来引起消费者对自己的关注、同情和支持,以达到在市场竞争中占有一席之地的广告定位效果。
逆向定位简介
当大多数企业广告的定位都是以突出产品的优异之处的正向定位,采取逆向定位反其道而行之,利用社会上人们普遍存在的同情弱者和信任诚实的人的心理,反而能够使广告获得意外的收获。
作为差异化营销策略的一种,它的成功关键是既找到与众不同的切入点,但又能迎合消费者的观念,即所谓“意料之外,情理之中”。只有把握了这个平衡点,才能取得革命性的成功。
逆向定位操作
逆向定位产品逆向定位
产品逆向定位即在研制产品时开发与众不同的卖点。“泰宁诺”止痛药当时面临的困境是阿斯匹林的一统天下,如果正面竞争肯定是死无葬身之地,于是“泰宁诺”使出妙招,定
位于“非阿斯匹林的止痛药”,显示药物成分与以往的止痛药有本质的差异,结果四两拨千金,异军突起。
当年、跟着老大玩,都狂上新闻,一起在互联网的冬天烧钱。现在网易变幻招式以游戏为主,搜狐以娱乐为主,已开始迎来春天。
逆向定位目标人群逆向定位
目标人群逆向定位是对市场重新细分,将目标群体定位于竞争对手的不同的市场。“坐奔驰,开宝马”,实际上是目标人群逆向定位的典型。奔驰定位于追求体面、讲求排场的大富豪,而宝马则定位于有经济实力但却自由奔放的“BOB0族”。
2002年下半年,科康技术(中国)有限公司没有陷入将低频治疗仪定位中老人为目标群体的陷阱,而将其定位于“中青年”,向市场推出“蓝色情人”,在整个低频治疗仪市场低迷的情况下成为了“亮点”。
逆向定位概念逆向定位
在广告炒作时,推出与主流不同的概念。当七喜汽水上市时,被可口可乐和百事可乐打压得喘不气来。七喜临危不乱,来了个“非可乐”的定位,成功地成为美国继两乐之后的第三大饮料商。
农夫山泉在旌旗猎猎的水市场也靠这招取胜。在纯净水占绝对优势的情况下,农夫山泉打出“由于纯净水对人体有害,不再生产纯净水”的大旗,祭起“”的概念,与娃哈哈、乐百氏上演了一场三国演义。
逆向定位形象逆向定位
在营销活动中,以叛逆的形象出现于大众。1984年苹果公司为找到以小博大的突破口,推出Macintosh电脑“1984”篇。广告以乔治·欧威尔的经典小说《1984》为主题,将IBM定位为残酷的“”,而将Macintosh定位为自由的化身。它暗示蓝色巨人IBM是人类的恶梦,正以前所未有的、专制式的资讯奴役人类,剥夺人类梦想的空间。而苹果公司的Macintosh亲切而人性化,是自由呼吸的工具,是独立思考的武器。苹果电脑因此役而绝地逢生。
但要注意的是,逆向定位策略是在消费者的头脑中找到已经存在的但尚未被竞争对手抢占的制高点,而不要试图去改变人的观念,去徒劳地创造位置。记住:“江山易改,本性难易”是颠扑不破的真理。
清除历史记录关闭如何在某个程序里面判定当前应用程序的定位服务是否可用,其实没有什么简单的方法。
这个[CLLocationManager locationServicesEnabled]检测的是整个iOS系统的位置服务开关,无法检测当前应用是否被关闭,只能通过CLLocationManagerDelegate的locationManager:didFailWithError:方法去检测:
- (void)locationManager: (CLLocationManager *)manager
didFailWithError: (NSError *)error {
NSString *errorS
[manager stopUpdatingLocation];
NSLog(@"Error: %@",[error localizedDescription]);
switch([error code]) {
case kCLErrorDenied:
//Access denied by user
errorString = @"Access to Location Services denied by user";
//Do something...
case kCLErrorLocationUnknown:
//Probably temporary...
errorString = @"Location data unavailable";
//Do something else...
errorString = @"An unknown error has occurred";
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:errorString delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alert show];
[alert release];
另外还有一种变通的方法:不需要通过上述方式来判断用户是否为应用程序开启了定位服务,而是通过判断获取的坐标值是否为空或者为零来判断用户是否为应用程序开启了定位功能。
阅读(...) 评论()

我要回帖

更多关于 苹果商店软件服务协议 的文章

 

随机推荐