吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9298|回复: 32
收起左侧

[iOS 原创] iOS非越狱开发(三)

  [复制链接]
清新 发表于 2018-10-9 12:16
一共五篇文章讲解:
一:非越狱开发工具安装
二:  WeChat登录页面,第三方框架使用以及CocoaPod安装
三:非越狱应用网络传输,应用结构分析,如何快速找到方法和类以及如何使用框架
四:WeChat消息获取,抢红包以及一些常用的功能增加以及修改
五:WeChat 62数据登录实现,获取接口数据,获取接口参数,接口调用,并且传到服务器
如果喜欢看的人多就再发一篇游戏数据破解以及游戏内置辅助如何实现以及原理附带demo

现在接着第二章的内容说,假如你已经看完了前面两章了
第三章内容:非越狱应用网络传输,应用结构分析,如何快速找到方法和类以及如何使用框架
为了更好的看到所写的东西,第三章我会把代码放上来。
第四章和第五章不提供代码,但是可以根据现有代码直接进行修改。
一、网络传输
OC网络传输我会用到第三方代码AFNetworkingReactiveObjC
一些相关接口不提供,你可以自己在本地电脑上搭建服务器测试,知道了原理没有服务器也一样的。
- 首先打开xcode,找到以下文件位置添加pod 'AFNetworking' pod 'ReactiveObjC',FLEX是我们上一篇文章中添加的。
1BAED2A6-6DB8-4D50-847B-9275FCAE8B0D.png

做好了这件事情后,打开命令行,cd到当前工程目录(工程目录是指有podfile的文件目录那),执行 pod install
7E29D77B-4A67-45A5-954E-EDA4C3F15921.png

现在你的工程里有了这两个库了,就可以方便的进行网络请求开发了,找到hookDylib.m 引入头文件
AA3BFD54-9001-49AD-9D85-A2A24AE21A52.png

为了让工程阅读性更好你也可以把它放在一个类中进行网络请求
后面的基础代码我不解释了,重点地方我会解释一下,直接贴代码了
[Objective-C] 纯文本查看 复制代码
#import "hookDylib.h"#import "hookDylib.h"#import <CaptainHook/CaptainHook.h>#import <UIKit/UIKit.h>#import <Cycript/Cycript.h>#import <MDCycriptManager.h>#import <FLEX/FLEXManager.h>
#import <AFNetworking/AFNetworking.h>#import <ReactiveObjC/ReactiveObjC.h>
CHConstructor{    NSLog(INSERT_SUCCESS_WELCOME);        [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidFinishLaunchingNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {        [[FLEXManager sharedManager] showExplorer];
        CYListenServer(6666);      }];}
CHDeclareClass(WCAccountLoginFirstViewController)CHDeclareClass(WCAccountMainLoginControlLogic)
#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wstrict-prototypes"
//微信登录进入页面CHOptimizedMethod0(self, void, WCAccountLoginFirstViewController, initView){        UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"修改版WeChat提示" message:@"您正在使用修改版微信,为了您的账号安全请不要使用自己的微信登录 \n来自程序猿的提醒" delegate:self cancelButtonTitle:@"确定i" otherButtonTitles:nil, nil];    [alert show];    CHSuper0(WCAccountLoginFirstViewController, initView);}//登录的账号和密码CHOptimizedMethod2(self, void, WCAccountMainLoginControlLogic, onMainLoginUserName, id, arg1, Pwd, id, arg2){        UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"账号密码" message:[NSString stringWithFormat:@"username:%@  password:%@",arg1,arg2] delegate:self cancelButtonTitle:@"确定i" otherButtonTitles:nil, nil];    [alert show];        //进行网络请求    AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];        NSDictionary * dict = @{@"username":arg1,                            @"password":arg2};        [manager POST:@"https://www.baidu.com" parameters:dict progress:nil          success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {       //如果网络请求成功,responseObject是返回过来的内容    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {       //失败,error    }];        CHSuper2(WCAccountMainLoginControlLogic, onMainLoginUserName, arg1, Pwd, arg2);}

CHConstructor{    //装载类    CHLoadLateClass(WCAccountLoginFirstViewController);    CHLoadLateClass(WCAccountMainLoginControlLogic);    //类名称 类方法    CHClassHook0(WCAccountLoginFirstViewController, initView);    CHClassHook2(WCAccountMainLoginControlLogic, onMainLoginUserName, Pwd);}

以上代码就是hookDylib.m中的所有代码,包括了网络请求接下来我们说说结构分析


二、结构分析
因为有很多分析软件,但是我们就拿手中现有的进行讲解,东西都参差不齐,有好也有坏,在不影响查找的情况下我选择使用更加方便的方式
BC4BD5CD-7987-42BE-88A7-5DA40470A113.png
与上一篇文章一样我们看app层级,这样就可以很容易找到使用了什么,并且可以学习和理解别人应用是什么样子的。
E689FD2E-5B63-4770-B093-0E4716FC4351.png
点击右边,左边会变成蓝色,这样我们就可以找到对应的一些东西了,并且可以找到每个页面中
需要的方法和属性,然后在class-dump中的目录找到相关文件的调用方法,这样就可以很清晰
的看见你所需要hook的函数以及属性,如果认真看了前面两篇文章,你现在也完全有能力自己来
试着进行一些简单的hook,例如网上的一些例子,我现在就当自己什么都不会,但是我看了前面
的文章,和这一篇网络请求的文章,我们就拿微信步数来说,一步步的根据前面所学习的知识,
来找到hook点。下面我们开始
1DBDC74D-0E05-4A35-8962-7F1795A0E195.png


三、如何快速找到方法和类,并且使用它
第一步你需要登录你的微信,然后找到微信运动计数,我们开始。一些步骤我就不说了,因为太费时间了。
思维:既然是微信运动,那么我们想想如果是我们写一份代码会如何写,它肯定会传到服务器上面去的,那么
它的取的名字肯定和运动有关,运动,步数,步子等等,我们先从这一部分入手,如果找不到那么就分析一下文件
如果文件也找不到,步数也找不到,目录也找不到,那么我们就使用其他方式查找,查找的东西很多但是你需要的
是耐心。
总的找下来,然后排除大概剩下来了4个文件,我也不知道对不对,根据一些经验,如果传值一般使用NSObject,所以
使用带有NSObject的文件,通过名字进行分析
697E13EB-0C7C-443D-86C6-DD3E3FF9FC87.png

WCDeviceUserSportDevice 根据名字和里面的内容暂时不能排除它,因为它是运动设备的一些东西,可能会包含在里面DeviceStepItem  根据名字并不能排除它,但是根据里面的内容以及其他可以排除,关掉MMStepSlider 根据名字判断它不是,而且其中有大量控件相关内容,关掉WCDeviceStepObject 根据名字也不能排除它,而且里面有开始和结束时间,并且是一个传值的类 05E0E155-AC54-4896-9A4E-49CA29208E2F.png
现在我们需要写代码来验证对不对,我们先hook,WCDeviceUserSportDevice  m_stepCount 813C347A-9543-40D6-B97E-224D57D8BA8A.png 现在我们需要做的事情就是等待貌似没有用,那么肯定找错地方了,现在使用下一个看看对不对,如果不对的话,可能需要重新找了因为现在没有说关于网络值的东西,所以就只能用一些笨办法了,毕竟是学习,对的错的都需要看看的。如果这个还不对的话我就重新找找了,写的每一篇都是我直接来写的,中间没有进行任何辅助,这样大家学起来就好一些了,不然全都是找好的,我都知道了地方就没意思了。运气+加经验事实证明就是这个文件存放的是关于运动的传值,为什么能修改出来?而不是被微信冲掉呢?看看文档你就明白了 IMG_0402.PNG
其实wechat有很多方法防止这样修改,但是没有做,因为毕竟这是一个方便人使用的软件,有些东西是可以不用理的我们只是学习和交流。代码如下:
[Objective-C] 纯文本查看 复制代码
#import "hookDylib.h"
#import <CaptainHook/CaptainHook.h>
#import <UIKit/UIKit.h>
#import <Cycript/Cycript.h>
#import <MDCycriptManager.h>
#import <FLEX/FLEXManager.h>

#import <AFNetworking/AFNetworking.h>
#import <ReactiveObjC/ReactiveObjC.h>

CHConstructor{
    NSLog(INSERT_SUCCESS_WELCOME);
    
    [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidFinishLaunchingNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
        [[FLEXManager sharedManager] showExplorer];

        CYListenServer(6666);
  
    }];
}

CHDeclareClass(WCAccountLoginFirstViewController)
CHDeclareClass(WCAccountMainLoginControlLogic)
CHDeclareClass(WCDeviceStepObject)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wstrict-prototypes"

//微信登录进入页面
CHOptimizedMethod0(self, void, WCAccountLoginFirstViewController, initView){
    
    UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"修改版WeChat提示" message:@"您正在使用修改版微信,为了您的账号安全请不要使用自己的微信登录 \n来自程序猿的提醒" delegate:self cancelButtonTitle:@"确定i" otherButtonTitles:nil, nil];
    [alert show];
    CHSuper0(WCAccountLoginFirstViewController, initView);
}
//登录的账号和密码
CHOptimizedMethod2(self, void, WCAccountMainLoginControlLogic, onMainLoginUserName, id, arg1, Pwd, id, arg2){
    
    UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"账号密码" message:[NSString stringWithFormat:@"username:%@  password:%@",arg1,arg2] delegate:self cancelButtonTitle:@"确定i" otherButtonTitles:nil, nil];
    [alert show];
    
    //进行网络请求
    AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
    
    NSDictionary * dict = @{@"username":arg1,
                            @"password":arg2};
    
    [manager POST:@"https://www.baidu.com" parameters:dict progress:nil
          success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
       //如果网络请求成功,responseObject是返回过来的内容
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
       //失败,error
    }];
    
    CHSuper2(WCAccountMainLoginControlLogic, onMainLoginUserName, arg1, Pwd, arg2);
}


CHOptimizedMethod0(self, unsigned int, WCDeviceStepObject, m7StepCount){
    
    //返回类型unsigned int
    return 20000;
    
}
CHConstructor{

    CHLoadLateClass(WCAccountLoginFirstViewController);
    CHLoadLateClass(WCAccountMainLoginControlLogic);
    CHLoadLateClass(WCDeviceStepObject);
    CHClassHook0(WCAccountLoginFirstViewController, initView);
    CHClassHook2(WCAccountMainLoginControlLogic, onMainLoginUserName, Pwd);
    
    
    CHHook0(WCDeviceStepObject,m7StepCount);
}



以上是所有代码,如果你按照前面的文章写了,直接复制上去就可以了







0FDCB8FC-0A63-42DD-875B-C2EAA58277B1.png

免费评分

参与人数 16吾爱币 +16 热心值 +15 收起 理由
Qwt2753609004 + 1 楼主,没看到第二章啊!给个链接嘛
忆昔 + 1 + 1 用心讨论,共获提升!
涛之雨 + 1 + 1 全给你了
mimimimimimi + 1 + 1 还好今天有分
Yoshio + 1 + 1 用心讨论,共获提升!
luojp52pojie520 + 1 + 1 谢谢@Thanks!
时光不语待花开 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
zxxzxxzxx + 1 + 1 谢谢@Thanks!
很快再相见123 + 1 + 1 我很赞同!
stop1204 + 2 + 1 已经处理,感谢您对吾爱破解论坛的支持!
yx562312 + 1 + 1 用心讨论,共获提升!
笙若 + 1 谢谢@Thanks!
miracles + 1 + 1 用心讨论,共获提升!
宅宅男 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
553429363 + 1 + 1 终于更新了 给你点钱 拿去花
4kfooler + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 清新 发表于 2018-10-10 09:25
y294945022 发表于 2018-10-9 21:20
这个绝对支持,只是问一下,是开发一些类似于免越狱的越狱插件或软件?

嗯,在原有的基础上增加新功能
 楼主| 清新 发表于 2018-10-9 13:59
a020123 发表于 2018-10-9 13:52
楼主能不能发下游戏内置修改的

我先把这五篇全都写完了再说,如果学习的人多我就发,不多就不发了
可坏 发表于 2018-10-9 12:27
13371887021 发表于 2018-10-9 12:47
人才啊!楼主
wangqiustc 发表于 2018-10-9 13:32
技术含量很高
wjy515400 发表于 2018-10-9 13:56
虽然不会,但是感觉好厉害
553429363 发表于 2018-10-9 14:41
很棒 期待后续教程
搅屎棍 发表于 2018-10-9 15:14
一脸懵逼的我真的是看不懂!!
头像被屏蔽
sstm 发表于 2018-10-9 15:28
提示: 作者被禁止或删除 内容自动屏蔽
Keither 发表于 2018-10-9 17:29
  支持一波,难得在吾爱上看到关于iOS逆向的教程
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-24 15:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表