互联网上 *** 黑客的骗术-较淡ios系统iOS反向技术性共享
一、序言
这篇关键完成在微信上全自动加好友,进而了解 iOS 逆向分析的全过程。
二、 工具
2.1 MacBook 手机软件
theos
制做 Tweak 的工具
hopper disassembler
用以静态数据剖析
u *** muxd
端口转发,能够使我们根据u *** 连接手机开展ssh、lldb调节等。关键应用python-client文件目录下的文档
class-dump
dump 总体目标目标的 class 技术专业 *** 黑 *** 务项目后付款 信息的工具.
lldb
> 调节武器,使用过的都讲好。默认设置内置,在/Applications/Xcode.app/Contents/Developer/usr/bin/lldb 中。
2.2 苹果越狱iPhone 手机软件
下列手机软件在 Cydia 中就可以免费下载
OpenSSH
完成在越狱手机上远程控制开展 ssh 服务项目
iOS 工具绝大多数都必须在 ssh 自然环境中应用
Cycript
>开发语言,用以 hook 已经运作的过程,并即时引入编码。
ondeviceconsole
用以在 技术专业 *** 黑 *** 务项目后付款 Terminal 中查询手机的 log
debugserver
用以连接手机开展 lldb 调节的工具。用 Xcode 在手机上开展 app 调节就可以形成,在手机文件目录的 /Developer/usr/bin/ 中。
应用 debugserver 必须先开展解决。由于缺乏task_for_pid管理权限,因此 调节不上别的的 app。
先根据 ssh 复制 debugserver
scp root@iOSIP:/Developer/usr/bin/debugserver ~/debugserver
减肥瘦身
lipo 技术专业 *** 黑 *** 务项目后付款 -thin armv7s ~/debugserver -output ~/debugserver// 看自身手机上是armv7s 還是arm64
免费下载 ldid 与 ent,开展
ldid - Sent.xml debugserver
在应用 ssh 复制至手机上,进行。
三、 剖析
构思:要想完成全自动加好友,则要取得获得微信好友验证的方式,及其加好友的方式。hook 获得微信好友验证的方式,在接受到微信好友验证的情况下,实行加好友的方式。
而这种关键逻辑性在“新的盆友”页面。
3.1 精准定位微信好友验证的方式
3技术专业 *** 黑 *** 务项目后付款.1.1 UI 剖析
要想取得微信好友验证的方式,要先取得方式完成的 ViewController。而此刻能够根据 UI 剖析得到 。
先开启新的盆友页面。
应用 u *** muxd 开展端口号的分享(若手机上流畅,能够绕过这步立即应用ssh开展wifi远程桌面连接)
python tcprelay.py -t 22:2222
再应用ssh连接至手机上
ssh roothome.php?mod=space&uid=485241 -p 2222// ssh root@192.168.31.94
查看微信的过程信息
ps -e 技术专业 *** 黑 *** 务项目后付款 |grep WeChat
cycript 引入
cycript -p WeChat
查询当今 UI 合理布局
UIApp.keyWindow.recursiveDescription().toString()
由于了解当今的主视图有tableview,因此 寻找tableview的目标。从图中能够见到该目标的详细地址为0x18c4be00。
在应用 nextResponder()依据响应者往上找当今的控制板。
寻找当今的控制板,为SayHelloViewController
3.1.2 Log 剖析
应用class-dump dump 出技术专业 *** 黑 *** 务项目后付款手机微信的 class 信息。
class-dump -S -s -H demo.app -o ~/Document/headers/// 储存在 ~/Document/headers/ 文件目录中
再应用 theos 的 logify 工具,该工具用于引入NSLog来复印方式的入参和出参。(便是在全部的方式里边加 log)
logify.pl ~/Document/headers/SayHelloViewController.h > ~/Desktop/Tweak.xm
留意:一般该Tweak.xm依然没法实行,必须开展改动:
除掉.cxx_destruct 方式
将HBLogDebug 改成NSLog
除掉全部的delegate
将全部的主要参数目标种类改为id
除掉全部的weak
再应用theos配备有关文档实际查询前一篇文章, 随后开展make package install 安裝至手机上。
重启手机微信进到新的盆友页面。
在ssh中应用ondeviceconsole复印手机上的 log。
这时候用另一个微信号码加上自身朋友。考虑微信好友验证的方式。能够见到下列的 log
表明有朋友加上要求的情况下,会启用
-[SayHelloViewController OnSayHelloDataChange]
3.1.3 动态变化
即然早已知道当今控制板会启用OnSayHelloDataChange,那麼我们可以想怎么查看是什么方式开启了OnSayHelloDataChange,此刻就需要采用 lldb hopper 武器了。
先用 hopper 进入微信的二进制文件。检索-[SayHelloViewController 技术专业 *** 黑 *** 务项目后付款 OnSayHelloDataChange]方式。
能够见到当今方式在微信中的偏位详细地址0x14a4824。
再应用 u *** muxd 变换端口号
python tcprelay.py -t 1234:1234
在 ssh 到手机,打开 debugserver 。
debugserver *:1234 -a "WeChat"
应用新的 terminal 对话框,开启 技术专业 *** 黑 *** 务项目后付款 lldb,联接1234端口号,并查询当今全部过程。
这时会卡死一段时间。
// 开启lldb/Applications/Xcode.app/Contents/Developer/usr/bin/lldb// 联接端口号调节(lldb) process connect connect://localhost:1234// 复印全部过程(lldb) image list -o -f
寻找手机微信在当今手机的过程运行内存基详细地址为0x000b2000(这一值并不是不会改变的)
根据之上能够寻找[SayHelloViewController OnSayHelloDataChange]方式在手机上的内存地址。即
内存地址 = 过程运行内存基详细地址 方式偏位详细地址
应用 br 切断点查询
br s -a "0x000b2000 0x14a4824"
然后键入 c 再次运作,技术专业 *** 黑 *** 务项目后付款再次应用另一微信帐号加好友,会开启该中断点。
应用 bt 查询启用栈信息,即什么方式启用了当今的方式,寻找方式的上下游。(异步调用得话没法查询)
之一个表明当今的方式,能够见到在启用此方式前,该过程技术专业 *** 黑 *** 务项目后付款一共启用了3个方式。
各自测算出这三个方式在微信中的偏移。
将这三个详细地址在 hopper 中查询,找到相匹配的方式为
// 启用的次序为从下向上[SayHelloViewController OnSayHelloDataChange][SayHelloDataLogic onFriendAssistAddMsg:][FriendAsistSessionMgr 技术专业 *** 黑 *** 务项目后付款 OnAddMsgForSpecialSession:MsgList:][CMessageMgr MainThreadNotifyToExt:]
从之上方式名能够猜想
[FriendAsistSessionMgr OnAddMsgForSpecialSession:MsgList:]
是用于接受加好友信息的涵数解决,在其中MsgList:后边的主要参数很有可能为信息的数组,为了更好地证实我们可以打个中断点查询下。
看得出r3的确是个数组,另外技术专业 *** 黑 *** 务项目后付款也获得了信息的目标为CMessageWrap 证实我们都是对的。
表述下为何需看r3,由于在 armv7 中,一个方式的启用,一般存储器全是那么储存的。前四个主要参数放到r0~r3,剩余的储放在局部变量中。查询局部变量得话应用x/10 $sp 查询前10个局部变量里的目标详细地址。
殊不知FriendAsistSessionMgr这一类很有可能必须一些复位,且放到SayHelloViewController中,而大家要想的是无论在哪个控制板里都能够 hook 住上边的信息数组目标。因而大家往上找,[CMessageMgr MainThreadNotifyToExt:],殊不知里边并沒有大家必须的信息。而依据类名大家推断CMessageMgr是用于技术专业 *** 黑 *** 务项目后付款管理 *** 信息的。有可能是在多线程实行了信息数组的获得。
因而,反复之上流程,应用 logify 对CMessageMgr开展 Log 剖析。最后锁住了
CMessageMgr MessageReturn: MessageInfo:Event:
3.2 精准定位 根据微信好友验证的方式
3.2.1 动态变化
我们知道,根据微信好友验证的方式,是在新的盆友页面,点一下接纳的情况下触 发的。(可专业黑 *** 务后付款以通过 Log 分析,然而这里还有另一个比较快速的 *** )
同样,我们可以使用 cycript 进行定位。
先按照 3.1 的 *** ,打印出所有的UI层级。
找到“接受”按钮的对象,(有个技巧,我们知道当前按钮是在某个cell下面的,所以定位这个)。
在把该对象的 hidden = 1,看是否隐藏。
#0x186922f0.hidden = 1
发现按钮不见了,证明我们是对的。
而我们知道 UIButton 是继承 UIControl 的,而 UIControl 的话可以通过allTargets 与 allControlEvents查看所有的对象与事件,再使用actionsForTarget:forControlEvent:从而找到触发的 *** 。
看出所触发的 *** 为[ContactsItemView onRightBtnAction]
3.2.2 静态分析
既然拿到了 *** 名,那我们怎么看他具体的实现呢?
接下来就是大名鼎鼎的hopper 登场了。
用 hopper 打开微信的二进制文件,并进行汇编与伪代码的转换。
由于汇编读起来比较晦涩,所以还是进行伪代码的转换,这样效率比较快。点击该按钮进行转换
可以得到伪代码
上图我们看到了
r10 = self;r5 = r10 + *0x33befe8;r4 = objc_loadWeakRetained(r5);r8 = @selector(onContactsItemViewRightButtonClick:);r11 = [专业黑 *** 务后付款r4 respondsToSelector:r8];
可以得出,r11 = [r5 onContactsItemViewRightButtonClick:btn],而 r5 我们判断为 self 的代{过}{滤}理,这个我们也可以通过在之前用 class-dump 的头文件里面搜索onContactsItemViewRightButtonClick,会发现在ContactsItemViewDelegate中。
也就是[ContactsItemView onRightBtnAction]内部调用了[self.delegate onContactsItemViewRightButtonClick:].
而 专业黑 *** 务后付款 ContactsItemView 的delegate为 SayHelloViewController。
再用 hopper 定位onContactsItemViewRightButtonClick。
看到这里估计会很专业黑 *** 务后付款蒙不知道从何下手。这时候只要加以推测就可以了。
上图中进行了两个if判断,之一个为
r10 = @selector(class);r2 = loc_1c099bc(@class(CPushContact), r10);r1 = @selector(isKindOfClass:);r5 = loc_1c099bc(r4, r1, r2);loc_1c099d4(r4);if ((r5 & 0xff) != 0x0) {
可以得出其实是执行了 if([r4 isKindOfClass:[CPushContact class]]);
而r4是什么呢?可以肯定是 CPushContact 专业黑 *** 务后付款 对象,不然下面的代码都不执行了。我们可以根据3.1的动态分析,通过lldb打断点,并查看r3寄存器的对象类型,可以看到该对象为 CPushContact 对象。因此r4就是 CPushContact 对象,根据字面意思可以得到就是联系人对象。
继续看下面的代码,可以看到也进行了一次判断if (((loc_1c099bc(r6, @selector(m_bSuspiciousUser)) & 0xff) != 0x0) && ((loc_1c099bc(r6, @selector(isMMContact)) & 0xff) == 0x0)),看到了MMUIAlertView。推测是弹窗的 view ,推测专业黑 *** 务后付款如果是可疑的用户或者当前申请的好友已经是自己的好友,那就进行弹窗。而另一部分为verifyContactWithOpCode:opcode:,推测该部分为添加好友的 *** 。
可以通过Log 分析或者通过 lldb 打断点,会看到都会进入该 *** 。且参数分别为 CPushContact 对象与 3。
接着继续分析verifyContactWithOpCode:opcode: *** 。主要的部分如下所示。
通过分专业黑 *** 务后付款析,我们可以得到,确认好友申请,显示构造了CContactVerifyLogic对象。再构造了一个CVerifyContactWrap对象,并设置了相关属性,比如m_nsUsrNamem_uiScene m_nsTicket.然后通过添加到数组中,通过CContactVerifyLogic对象的startWithVerifyContactWrap:opCode:parentView:fromChatRoom: *** 发送。
代码如下:
CContactVerifyLogic *verifyLogic = [[CContactVerifyLogic alloc] init];CVerifyContactWrap *wrap =专业黑 *** 务后付款 [[CVerifyContactWrap alloc] init];[wrap setM_nsUsrName:contact.m_nsEncodeUserName];[wrap setM_uiScene:contact.m_uiFriendScene];[wrap setM_nsTicket:contact.m_nsTicket];[wrap setM_nsChatRoomUserName:contact.m_nsChatRoomUserName];wrap.m_oVerifyContact = contact;AutoSetRemarkMgr *mgr = [[MMServiceCenter defaultCenter] getService:[AutoSetRemarkMgr 专业黑 *** 务后付款 class]];id attr = [mgr GetStrangerAttribute:contact AttributeName:1001];if([attr boolValue]) { [wrap setM_uiWCFlag:(wrap.m_uiWCFlag | 1)];}[verifyLogic startWithVerifyContactWrap:[NSArray arrayWithObject:wrap] opCode:3 parentView:[UIView new] fromChatRoom:NO];
这样我们就得到了 获取好友请求的 *** 与添加好友的 *** 。
而这里还有一个问题,就专业黑 *** 务后付款是添加好友的对象是CPushContact,而获得好友请求的对象的CMessageWrap。这里需要进行转换,而转换的 *** 也在SayHelloViewController中,可以重复上面的分析 *** 获得。
四、编写Tweak
通过以上的分析,将代码合并起来
%hook CMessageMgr- (void)MessageReturn:(unsigned int)arg1 MessageInfo:(NSDictionary *)info Event:(unsigned int)arg3 { %orig; if (arg1 == 332) { // 收到添加好友消息 NSString *keyStr = 专业黑 *** 务后付款 [info objectForKey:@"5"]; if ([keyStr isEqualToString:@"fmessage"]) { NSArray *wrapArray = [info objectForKey:@"27"]; [self addAutoVerifyWithArray:wrapArray]; } }}%new- (void)addAutoVerifyWithArray:(NSArray *)ary { [ary enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) 专业黑 *** 务后付款 { CPushContact *contact = [%c(SayHelloDataLogic) getContactFrom:obj]; if (![contact isMyContact] && [contact.m_nsDes isEqualToString:autoVerifyKeyword]) { CContactVerifyLogic *verifyLogic = [[%c(CContactVerifyLogic) alloc] init]; CVerifyContactWrap *wrap = [[%c(CVerifyContactWrap) alloc] init]; [wrap setM_nsUsrName:contact.m_nsEncodeUserName]; 专业黑 *** 务后付款 [wrap setM_uiScene:contact.m_uiFriendScene]; [wrap setM_nsTicket:contact.m_nsTicket]; [wrap setM_nsChatRoomUserName:contact.m_nsChatRoomUserName]; wrap.m_oVerifyContact = contact; AutoSetRemarkMgr *mgr = [[%c(MMServiceCenter) defaultCenter] getService:%c(AutoSetRemarkMgr)]; id attr = [mgr GetStrangerAttribute:contact 专业黑 *** 务后付款 AttributeName:1001]; if([attr boolValue]) { [wrap setM_uiWCFlag:(wrap.m_uiWCFlag | 1)]; } [verifyLogic startWithVerifyContactWrap:[NSArray arrayWithObject:wrap] opCode:3 parentView:[UIView new] fromChatRoom:NO]; } }];}
五、总结
由于整个逆向流程有点繁琐,有时候也不是只要分析一次就可以成功的,需要反反复复的进行UI分析、LOG分析、lldb分析。因此可能在过程中,有些知识没有漏掉,希望大家专业黑 *** 务后付款可以指出。
1、500M的话么。还是取决于双方更低的一方的网速了。一般在2M左右(200K/s),按照这速度算下来需要四十多分钟才能盗走。(一般会超一小时)2、。 *** 上黑客的骗局
抓小三定位神器。黑客是违法的,黑帽严重只会被K而已。
*** 上黑客的骗局免费的肯定是没有的,没人那么闲的,再说人家又不认识你凭什么教你?我说的不好听但是是事实,别傻了孩子。到一些黑客技术网站看些教程,没事自己多练练,然后跑到你那里专门给你破解下周围的wifi你是不了解情况还是脑子不好。
黑客入侵你手机?不会吧,会一点技术的都直接越过手机杀毒软件的,不会被检测到的,真不放心你就关机或者断网尽量下载个流量实时监控软件有异常数据交互做专业黑 *** 务后付款好准备入侵手机一般人察觉不到都是后台工作的除非手机本来玩软件就很吃力那可能有反应可能就是迟钝了。
1、难怪你成绩不好。智商太低。2、这东西就算能改,也不是你用点百度金币能改的,最起码是个软妹币也行。而且少了还没人理你。3、建议你更好先。 *** 上黑客的骗局
二维火零售收款软件有的,有几十万种标准商品数据库。 市面上形形 *** 的还是很多这样的收款,向你介绍一款安卓收款软件-二维火智能云收银系统,分为餐饮版。
*** 上黑客的骗局“黑客”,是一个比较综合的概念,不同于“病毒”或“反病毒”,在判断上那么黑白分明。这主要源于判断“黑客”的性质,是以“黑客”行为造成的后果作为。
标签:
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。