记载命令检测即检测Mach-O文件的中的或是否存在异常,代码如下:
6.6.2.代码段检测
代码段检测技术主要用来检测“_TEXT, _text”是否被修改(当然也可以检查其他的),示例如下:
其中,&指向Mach-O在内存中的起始位置,函数返回指定的内存地址及大小 。
实际应用中可以将正确的Hash值存到服务器或者加密后存到本地,在进程启动时进行比对,如果不匹配则可以做一些逻辑处理 。
6.6.3.签名信息检测
被修改的应用若要在非越狱机器上使用,必要的一个环节就是对其重签名 。
签名信息检测就是检测中的特征信息(比如)是否和用户自己的相匹配 。
7.实战案例:某即时通信软件-猜拳和扔骰子代码实现分析
7.1.目标App介绍
本文的实战目标是一款著名的即时通讯App,可以通过手机网络发送表情包,比如猜拳和扔骰子,这两个是官网自带的表情包,发出去之后先是有一个不停跳动的动画,最后会停留在一个随机的剪刀/石头/布或者点数,这一切看起来都是随机的,但是通过逆向我们是能够实现自动操控并且投出想要的结果的 。
7.2.寻找切入点
逆向一个App首先需要寻找切入点,在本案例中,要想分析猜拳和扔骰子的实现,我们首先得从UI层面入手,找出当前控制器,然后监听点击表情包之后的方法调用,找到关键方法,分析该方法的代码实现,并且寻找代码漏洞,一旦找到可以hook的代码逻辑,那么就可以实现我们想要的代码逻辑了 。
7.3.分析过程
使用我们可以知道当前控制器是,然后进一步分析界面:
可以看到,这是一个,自然而然就会想到点击它会触发
以下代理方法:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;我们可以通过断点BaseMsgContentViewController类的didSelectItem...方法来分析代码逻辑,但还有另一种更加便捷的方法是直接监听BaseMsgContentViewController的所有方法调用,这里我使用的是Frida + js脚本去跟踪发送骰子时该类所有的方法调用-[BaseMsgContentViewController useTransparentNavibar]-[BaseMsgContentViewController useTransparentNavibar]-[BaseMsgContentViewController shouldInteractivePop]-[BaseMsgContentViewController toolView]-[BaseMsgContentViewController SendEmoticonMesssageToolView:]-[BaseMsgContentViewController findNodeDataByLocalId:]-[BaseMsgContentViewController addMessageNode:layout:addMoreMsg:]-[BaseMsgContentViewController findNodeDataByLocalId:]-[BaseMsgContentViewController getCurContentSizeHeight]
仔细观察我们可以发现[ :]这个方法有很大的几率就是我们要找的关键方法,从字面上看是发送表情信息的意思 。然后继续编写脚本
使用frida加载该脚本,就可以打印出该方法的堆栈信息(去除了不必要的地址信息):
【iOS逆向攻防实战】-[BaseMsgContentViewController SendEmoticonMesssageToolView:]Backtrace:-[MMInputToolView didSelectorSelfDefinedEmotcion:]-[EmoticonBoardView onTapEmoticonWrap:atIndex:maxCountPerLine:fromSection:]-[EmoticonBoardCrossCollectionController onEmoticonPageCellTapEmoticonWrap:atIndex:pid:maxCountPerLine:]-[EmoticonBoardCrossCollectionEmoticonPageCell collectionView:didSelectItemAtIndexPath:]-[UICollectionView _selectItemAtIndexPath:animated:scrollPosition:notifyDelegate:deselectPrevious:]-[UICollectionView touchesEnded:withEvent:]UIKitCore!forwardTouchMethodUIKitCore!-[UIResponder touchesEnded:withEvent:]UIKitCore!forwardTouchMethodUIKitCore!-[UIResponder touchesEnded:withEvent:]UIKitCore!forwardTouchMethodUIKitCore!-[UIResponder touchesEnded:withEvent:]UIKitCore!_UIGestureEnvironmentUpdateUIKitCore!-[UIGestureEnvironment _deliverEvent:toGestureRecognizers:usingBlock:]UIKitCore!-[UIGestureEnvironment _updateForEvent:window:]UIKitCore!-[UIWindow sendEvent:]
- ios13 是什么意思
- express搭建接口,使用axios发起post请求不到数据
- axios发送Post请求后端接收为null
- XS建议升级16系统吗
- iphone14出厂ios16点几
- IOS NSXML解析,数据不完整问题
- 40课 WEB攻防必备视频教程
- ipad4能不能升级ios13
- ipad5处理器
- ios能更新到指定版本吗