您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

让别人的app变成自己的app——粉碎、破解、反转、屏蔽、重定向的方式。 <电影网站源码>

  • 时间:2022-08-10 01:09 编辑: 来源: 阅读:288
  • 扫一扫,手机访问
摘要:让别人的app变成自己的app——粉碎、破解、反转、屏蔽、重定向的方式。 <电影网站源码>
让别人的app成为自己的APP系列——屏蔽网络请求后替换网址或ip注意:~本文仅用于学习研究,请勿用于非法用途。可以联系我1113704624 ~破解app的方法有很多,比如破解外壳倒回去,或者修改Macho文件,但是因为很多网站都是加密的,这些方法都不行。今天,我们在这里讨论阻止网络请求或用户替换IP的终极方法。1:应用场景,比如一些抢红包应用有设施锁或者用户时间锁,按设施或者用户按年付费。如果有的客户不愿意付费,我们可以通过屏蔽网络、伪造数据的方式破解这类应用;少部分人买了系统,app访问的接口都是写在打包的二进制文件里。如果要部署多个应用程序,则无法部署。此时可以在阻塞网络请求后替换服务器地址,完成多次部署。2:实现原理要屏蔽它,我们需要先了解IOS的网络请求原理。请看下图#网络<-& gt;NSURLProtocol & lt-& gt;网络库中的大部分网络请求都要经过一个名为NSURLProtocol的通用类。既然都要经过这个通用类,那我们是不是通过重载NSURLProtocol来屏蔽过滤网络请求呢?答案当然是肯定的。但是世界上没有银弹,NSURLProtocol也不能处理所有问题。为什么?因为NSURLProtocol可以阻止的网络请求包括NSURLSession和NSURLConnection。 现在主流的iOS网络库,比如AFNetworking,Alamofire等等,都是基于NSURLSession或者NSURLConnection的,所以这些网络库的网络请求都可以被NSURLProtocol阻塞。 PS:不能阻止基于CFNetwork的网络请求和来自WKWebView的请求。 比如ASIHTTPRequest、MKNetwokit等网络库都是基于CFNetwork的,所以这些网络库的网络请求是不能被NSURLProtocol阻塞的。 3.实施步骤1。创建NSURLProtocol的子类。因为NSURLProtocol是一个通用类,所以在使用它的时候需要创建它的一个子类。 的。m文件如下:# import " replaceurlprotocol . h "//为了避免canInitWithRequest和canonicalRequestForRequest的死循环,静态ns string * const URL protocol handled key = @ " URL protocol handled key ";//旧url地址静态ns string * constold _ URL = @ " Baidu . com ";//new URL URL static ns string * const new _ URL = @ " Google . com ";@ interface ReplaceURLProtocol()& lt;NSURLSessionDelegate & gt@property(nonatomic,strong)NSURLSession * session;@ end @ implementation ReplaceURLProtocol+(BOOL)canInitWithRequest:(NSURLRequest *)request { return YES;}//Change request request+(insul request *)规范请求请求:(insul request *)请求{//业务逻辑在这里写返回请求;}//启动请求-(void)startLoading{ //业务逻辑写在这里}//停止请求-(void)停止加载{ } # pragma mark-insulsessiondelegate/*收到数据后,通过URLProtocol */-(void) URL session传出:(nsurlsession *) session任务:(nsurlsession task *)task didcompletewiderror:(nserror *)error { if(error){[self . client URL protocol:self didFailWithError:error];} else {[self . client URLProtocolDidFinishLoading:self];} }-(void)URL session:(nsurlsession *)session data task:(nsurlsessiondatatask *)data task didreceiveresponse:(nsurlresponse *)response completion handler:(void(^)(nsurlsessionresponsedisposition))completionhandler {[self . client URL protocol:self didreceiveresponse:response cachestoragepolicy:nsurlcachestoragenotallowed];completion handler(NSURLSessionResponseAllow);}-(void)URL session:(NSURLSession *)session data task:(NSURLSessionDataTask *)data task didReceiveData:(ns data *)data {[self . client URL protocol:self didLoadData:data];}@end2。注册协议基于由NSURLConnection或[NSURLSSESSION共享会话]创建的网络请求。只需调用AppDelegate的didFinishLaunchingWithOptions方法中的registerClass方法即可。 //register protocol[nsurlprotocol register class:[replaceurlprotocol class]];returnYES}3.阻止客户的网络请求。首先,阻塞网络请求后,会先调用+(bool)caninitwithrequest:(insul request *)请求方法。 在这种方法中,我们可以执行是否能解决这个块的逻辑。 例如,只解析被阻止的http或https请求。 +(bool)caninitwithrequest:(insul request *)request {//不是网络请求,如果(!【请求。URL . scheme isEqualToString:@ " http "]& amp;& amp!【请求。URL . scheme isEqualToString:@ " https "]){ return NO;}//指定拦截网络请求,如:www.baidu.com if([request . URL . absolute testing包含string:old _ URL]){ return yes;} else { return NO}}然后会调用+(insul Request *)CanonicalrequestForRequest:(insul Request *)请求。用这种方法,我们可以解决这个要求。 例如修改报头信息等。 返回最后一个解析的请求实例。 也可以用这种方法将客户要求的域名替换成另一个域名:/* *设置我们自己的自设置请求。可以统一添加一个像这样的头@param request应用程序的request @ return our own set request */+(insulrrequest *)canonicalRequestForRequest:(NSURLRequest *)request { nsmutableulrequest * mutablerequest =[request mutable copy];//设置resolved flag[nsurlprotocol Set property:@(yes)Forgey:k protocol handler key in request:mutable request];ns(@ * * * * * * * * * * * * * *原请求的URL为1% @”,request . URL);如果(【请求。URL主机]。length == 0) {返回请求;} ns string * originUrlStr =[request。URL absolute string];ns string * originHostStr =[request。URL主机];ns range host range =[originUrlStr rangeOfString:originHostStr];if(host range . location = = NSNotFound){ return request;}//指定拦截网络请求,如:www.baidu.com if([request . URL . absolute testing包含string:old _ URL]){//定向百度搜索NSString * ip = new _ urlns string * urlStr =[originUrlStr stringbyreplacingcharacters inrange:host range with string:IP];NSURL * URL =[NSURL URL withstring:urlStr];mutableReqeust。URL = urlNs日志(@ * * * * * * * * * * URL 1% @ "替换后,mutable request . URL);return[mutableReqeust copy];} else{返回请求;}4.Forwarding -(void)startLoading重新发送已解决的请求。 传输形式可以基于NSURLConnection、NSURLSession甚至CFNetwork。 我们也可以在这个方法中设置一个网络代理,如下:我们设置好代理后,重新创建一个NSURLSession,发出网络请求://重新启动父类的启动加载方法-(void)start loading { nsmutableurlrequest * mutablerequest =[[self request]mutable copy];Ns日志(@ * * * * * * * * * * * * * *开始请求%@”,mutableRequest。网址);NSURLSessionConfiguration * configuration =[NSURLSessionConfiguration ephemeralSessionConfiguration];//创建临时会话配置//网络请求self . session =[nsurlsessionwithconfiguration:configuration delegate:self delegate队列:[[nsoperationqueue alloc]init]];//这里注意,也可以增加代理对客户请求数据的捕获insulsessiontask * task =[self。会话数据任务请求:自身。请求];[任务简历];//开始任务}5。回调使用NSURLSession请求,因此我们接收网络请求的数据(成功或失败等。)通过nsurlsecondelegate:# pragma mark-nsurlsecondelegate/*收到数据后,通过URLProtocol发出*///failed-(void)URL session:(nsurlsession *)session task:(nsurlsession task *)task didcompletewerror:(nserror *)error { if(error){[self . client URL protocol:self didFailWithError:error];//请求错误} else {[self . client urlprotocoldidfinishing loading:self];//加载完毕} }//收到响应-(void) URL会话:(nsurlsession *)会话数据任务:(nsurlsessiondataTask *)数据任务didreceiveresponse:(insurresponse *)响应completion handler:(void(^)(nsurlsessionresponsedisposition))completionhandler {[self . client URL protocol:self didreceiveresponse:response cachestoragepolicy:nsurlcachestoragenotallowed];//创建响应(缓存策略:不缓存)completion handler(nsurlessionResponseallow);}//已接收数据-(void) URL会话:(nsurlsession *)会话数据任务:(nsurlsessiondataTask *)数据任务didreceiveddata: (nsdata *)数据{[self.client URL协议:selfdidloaddata:Data];//接收数据}6。在-(void)停止加载时结束完成网络请求的操作。//结束请求-(void)停止加载{[self。会话无效并取消];self.session = nil}欢迎来到iOS技术解决方案组。群聊号码是1060356414。


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)
【技术支持|常见问题】别告诉我你没看过邰方这两则有思想的创意广告! (2022-11-04 10:37)
【技术支持|常见问题】你正确使用https了吗? [php源码](2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部