吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 41306|回复: 152
收起左侧

[iOS 原创] iOS非越狱开发(四)抢红包修改运动步数

    [复制链接]
清新 发表于 2018-10-12 12:04
本帖最后由 清新 于 2018-10-12 17:24 编辑

一共五篇文章讲解:
一:非越狱开发工具安装
二:  WeChat登录页面,第三方框架使用以及CocoaPod安装
三:非越狱应用网络传输,应用结构分析,如何快速找到方法和类以及如何使用框架
四:WeChat消息获取,抢红包以及一些常用的功能增加以及修改
五:WeChat 62数据登录实现,获取接口数据,获取接口参数,接口调用,并且传到服务器
如果喜欢看的人多就再发一篇游戏数据破解以及游戏内置辅助如何实现以及原理附带demo打开上一篇的重构项目,我们先新建一个插件的目录,运行手机点击发现,利用xcode查看这个页面是什么(图片),图片
上面为FindFriendEntryViewController控制器,现在我们对它进行页面上面添加一个
按钮,打开logos文件夹,点击WeChatDylib.xm移除所有代码,在logos文件夹下面新建header文件
60FDDF8A-A9C8-4A6D-A008-98B4E66D8D99.png
header文件中用来写添加代码的东西,不添加的话在xm里面是会报错的,引XUI,添加如下代码,如果要写规范一些你可以申明- (void)viewDidLoad- (void)tweakItemTapped:(id)sender A15155F7-3216-4A20-8C8E-E8701CD8EA53.png 这里做完了,然后我们编写一下XUI的代码,新建一个setting bundle 15B95C42-1B8B-411C-BD14-56B00134AF42.png


480BED85-4B38-46F5-8B7C-434A5D8AE620.png


setting bundle里面添加一个文件,把文件改为interface.json


3238E57C-B35F-4324-BAA0-5A62137E081F.png


接下来就是在interface中写一下代码,代码根据功能写,我们的功能开启微信红包功能,开启防撤回功能,输入运动步数,消息获取。
[HTML] 纯文本查看 复制代码
{
    "subheader":"微信插件功能页面",
    "title":"插件",
    "items":[
             {
             "label":"Switch"
             },
             {
             "cell":"Switch",
             "label":"自动抢红包",
             "key":"wechatmoney",
             "default":true
             },
             {
             "label":"Switch"
             },
             {
             "cell":"Switch",
             "label":"防撤回",
             "key":"wechatch",
             "default":true
             },
             {
             "label":"Switch"
             },
             {
             "cell":"Switch",
             "label":"消息获取",
             "key":"message",
             "default":true
             },
             {
             "placeholder":"做多输入10个数",
             "keyboard":"NumberPad",
             "cell":"TextField",
             "label":"运动步数",
             "key":"number",
             "alignment":"Right",
             "maxLength":10
             },
             ],
    "header":"Hello World"
}
写完页面代码之后我们开始配置其他的代码,在WeChatExtensionDylib.xm中编写代码,代码如下:
[Objective-C] 纯文本查看 复制代码
#import <UIKit/UIKit.h>
#import "Header.h"



%hook FindFriendEntryViewController

- (void)viewDidLoad {
%orig;
UIBarButtonItem *tweakItem = [[UIBarButtonItem alloc] initWithTitle:@"   插件" style:UIBarButtonItemStylePlain target:self action:@selector(tweakItemTapped:)];
[tweakItem setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]} forState:UIControlStateNormal];
self.navigationItem.leftBarButtonItem = tweakItem; // 设置界面导航栏左上角按钮
}
%new
- (void)tweakItemTapped:(id)sender {
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"WeChat" ofType:@"bundle"];
NSString *xuiPath = [[NSBundle bundleWithPath:bundlePath] pathForResource:@"interface" ofType:@"json"];
[XUIListViewController presentFromTopViewControllerWithPath:xuiPath withBundlePath:bundlePath];
}

%end

好了,代码都写完了,现在你可以运行你的手机,点击发现,左上角有一个插件的按钮,点击之后会有如下页面:
IMG_0403.PNG

至于页面大概就这个样子把,第五篇文章我暂时是不写了,因为感觉也没多少人看这东西,前面四篇文章基本上把东西全都写出来了如果你先做一些其他的插件,以及功能也是完全没有问题的了,只是在于你细心和一些工具的利用了,我们继续。根据重构代码我们现在开始对插件的利用。因为我们现在添加了插件所以以前的WeChatConfig文件夹里面的内容我们也不需要调用了WeChatExtensionDylib.h文件我们也不需要调用了,我们只需要在WeChatHook文件中取得插件中设置的值就可以了。

A983E247-4C4D-4132-8FE1-110F74C60EC4.png

以上代码就是取得插件中文本的值,因为我怕number属性可能导致错误,所以我在interface.json文件中修改了textfiled的key,然后把key改成了wechatnumber,就是上面那一份代码,你们自己改改吧,没改就说明压根就没认真看~
下面进行撤回功能和消息获取,红包功能在消息获取这里判断就可以了,我就不写了,写了这么多感觉有点烦了.....消息撤回功能:新建一个WeChatServiceManager文件WeChatServiceManager.h文件内容
[Objective-C] 纯文本查看 复制代码
#import <Foundation/Foundation.h>
#import "WeChatHeader.h"

[url=home.php?mod=space&uid=593715]@interface[/url] WeChatServiceManager : NSObject

+(CMessageMgr*)sharedCMessageMgr;

@end
WeChatServiceManager.m文件内容
[Objective-C] 纯文本查看 复制代码
#import "WeChatServiceManager.h"
#import <objc/runtime.h>

@implementation WeChatServiceManager

+(CMessageMgr *)sharedCMessageMgr{
    MMServiceCenter* serviceCenter = [objc_getClass("MMServiceCenter") defaultCenter];
    return [serviceCenter getService:[objc_getClass("CMessageMgr") class]];
}

@end
然后新建一个WeChatMessageHook.m文件,这个文件里面写hook方法
[Objective-C] 纯文本查看 复制代码
#import <Foundation/Foundation.h>
#import <CaptainHook.h>
#import "WeChatHeader.h"
#import "WeChatServiceManager.h"
CHDeclareClass(CMessageMgr);

CHOptimizedMethod1(self, void, CMessageMgr, onRevokeMsg,CMessageWrap*, msgWrap){
    BOOL isSender = [objc_getClass("CMessageWrap") isSenderFromMsgWrap:msgWrap];
    
    id enabledVal = [[NSUserDefaults standardUserDefaults] objectForKey:@"wechatch"];
    BOOL isEnabled = [enabledVal boolValue];    if(![color=#000][font=Menlo][size=18px] isEnabled[/size][/font][/color] || isSender){
        CHSuper1(CMessageMgr, onRevokeMsg, msgWrap);
        return;
    }
    
    CMessageWrap *newMsgWrap = [[objc_getClass("CMessageWrap") alloc] initWithMsgType:0x2710];
    
    NSString* revokePersonName = nil;
    
    //获取撤回人
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<!\\[CDATA\\[(.*?)撤回了一条消息\\]\\]>" options:NSRegularExpressionCaseInsensitive error:nil];
    NSTextCheckingResult *result = [regex matchesInString:msgWrap.m_nsContent options:0 range:NSMakeRange(0, msgWrap.m_nsContent.length)].firstObject;
    
    if (result.numberOfRanges >= 2) {
        revokePersonName = [msgWrap.m_nsContent substringWithRange:[result rangeAtIndex:1]];
    }
    
    NSString* sendContent = [NSString stringWithFormat:@"%@ 撤回了消息", revokePersonName ? revokePersonName : msgWrap.m_nsFromUsr];
    
    [newMsgWrap setM_uiStatus:0x4];
    [newMsgWrap setM_nsContent:sendContent];
    [newMsgWrap setM_nsToUsr:msgWrap.m_nsToUsr];
    [newMsgWrap setM_nsFromUsr:msgWrap.m_nsFromUsr];
    [newMsgWrap setM_uiCreateTime:[msgWrap m_uiCreateTime]];
    
    [[WeChatServiceManager sharedCMessageMgr] AddLocalMsg:msgWrap.m_nsFromUsr MsgWrap:newMsgWrap];
        
}

CHConstructor{
    CHLoadLateClass(CMessageMgr);
    CHClassHook1(CMessageMgr, onRevokeMsg);
}
在WeChatHeader文件中添加属性,这里我就直接复制下来了,你们自己查看一下
[Objective-C] 纯文本查看 复制代码
#ifndef WeChatHeader_h
#define WeChatHeader_h

#import <UIKit/UIKit.h>

@interface CMessageWrap

@property(nonatomic, strong) NSString* m_nsContent;        //发送消息的内容
@property(retain, nonatomic) NSString* m_nsToUsr;          //发送人
@property(retain, nonatomic) NSString* m_nsFromUsr;        //接收人
@property (nonatomic, assign) NSInteger m_uiMessageType;
@property(assign, nonatomic) unsigned long m_uiStatus;
@property(assign, nonatomic) unsigned long m_uiCreateTime;

+ (BOOL)isSenderFromMsgWrap:(CMessageWrap*) msgWrap;

- (CMessageWrap*)initWithMsgType:(int) type;

@end

@interface MMServiceCenter

- (id)getService:(Class) name;

@end

@interface CMessageMgr

- (void)AddLocalMsg:(NSString*)from MsgWrap:(CMessageWrap*) msgWrap;

@end


#endif /* WeChatHeader_h */
新建一个WeChatMessageSendHook.m这个文件中写消息获取功能
[Objective-C] 纯文本查看 复制代码
#import <Foundation/Foundation.h>
#import <CaptainHook.h>
#import "WeChatHeader.h"

CHDeclareClass(CMessageMgr)

CHOptimizedMethod2(self, void, CMessageMgr, AsyncOnAddMsg, NSString*, msg, MsgWrap, CMessageWrap*, msgWrap){
    
    id enabledVal = [[NSUserDefaults standardUserDefaults] objectForKey:@"message"];
[font=Menlo][size=18px]
BOOL[/size][/font][color=#000][font=Menlo][size=18px] isEnabled = [enabledVal [/size][/font][/color][font=Menlo][size=18px]boolValue[/size][/font][color=#000][font=Menlo][size=18px]];[/size][/font][/color]
    if ([color=#000][font=Menlo][size=18px]isEnabled[/size][/font][/color]) {
    
    NSString* content = msgWrap.m_nsContent;
    UIAlertView * alert = [[UIAlertView alloc]initWithTitle:nil message:[NSString stringWithFormat:@"%@",content] delegate:self cancelButtonTitle:@"确定i" otherButtonTitles:nil, nil];
    [alert show];
    }
    CHSuper2(CMessageMgr, AsyncOnAddMsg, msg, MsgWrap, msgWrap);
}


CHConstructor{
    
    CHLoadLateClass(CMessageMgr);
 
    CHClassHook2(CMessageMgr, AsyncOnAddMsg, MsgWrap);
}

最后这里我再贴上我最后的文件结构,我把有些不需要的东西都删了,现在代码就更加少了,你也不需要传值进来了,除非你不想让使用的人看见,最好备份一份代码哦。

D5D0548B-54C4-4962-83FE-0311809D43F2.png

到这里所有功能都写好了,你只要认真看这代码写就一定不会错的,除非有些地方我遗忘了。还有就是是不是刚刚修改了微信步数变成了9万多步?哈哈,叫你们不认真看类型,NSString转 unsigned int没有几万步才奇怪

好了前面四章基础学习部分都写完了,第五章我看有没有那么多人看吧,没有的话我也懒的发,其实你们通过前面四章就可以完全自己找方法然后自己写了。最后贴上我的demo,不免费~,收费还特高,自己从第一章看到第四章然后自己写代码就不需要下载了,都是一样的,这个就是为了赚那些不想写代码光看不做事情的CB,想学会还不写代码?怎么可能,勤加练习才会让你的技术更好

别改太多了!!!!!!看聊天记录,9万步实在太恐怖了!
,不说我也不知道
IMG_1333.PNG

Demo下载:
好像改不了收多少CB,那我就不上传了Demo了






免费评分

参与人数 41吾爱币 +41 热心值 +39 收起 理由
雨泪丿 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
bingo唯一 + 1 + 1 我很赞同!
xietao520 + 1 谢谢@Thanks!
菜鸟X科技 + 1 + 1 用心讨论,共获提升!
我爱吃包子 + 1 + 1 我很赞同!
Echokh + 1 + 1 谢谢@Thanks!
darmao + 1 + 1 我很赞同!
天使之翼tszy + 1 谢谢@Thanks!
DrMarloo + 1 + 1 谢谢@Thanks!
陈皮酱 + 1 + 1 谢谢@Thanks!
John0 + 1 + 1 谢谢@Thanks!
疯狂醉虎 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
第一猴子 + 1 + 1 用心讨论,共获提升!
1668955699 + 1 + 1 谢谢@Thanks!
我的暖梦少年 + 2 + 1 用心讨论,共获提升!
mimimimimimi + 1 + 1 我很赞同!
wangxd + 1 我很赞同!
大番薯丶 + 1 + 1 虽然没去学 但也给个CB 论坛需要你
wuyy + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
寒冰飞雪 + 1 + 1 可以出一个微信多开制作教程吗,越狱的,没越狱的搞证书太麻烦,三把手机都.
wahx1314 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
r5onlyone + 1 用心讨论,共获提升!
H影子丶 + 1 + 1 热心回复!
shareol + 1 + 1 期待第5篇,WeChat 62数据登录实现
涛之雨 + 1 + 1 优秀
pbeinc + 1 + 1 我很赞同!
winhiko + 1 + 1 谢谢@Thanks!
Ww`巅峰 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
淡淡不揩油i + 1 + 1 用心讨论,共获提升!
pujinsui + 1 + 1 谢谢@Thanks!
xiaowanzi52 + 1 热心回复!
Mgrre00 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
zl9801 + 1 + 1 谢谢@Thanks!
dlxg + 1 + 1 我想,不明觉厉大概很合适了。。。
sdmylm + 1 + 1 谢谢@Thanks!
gm188 + 1 + 1 想看游戏破解
piaolaipiaoqu + 1 + 1 我很赞同!
553429363 + 1 + 1 可以可以 这两天刚把黑苹果还有xcode和class-dump装完 准备一步一步慢慢来
mz135135 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
4kfooler + 1 + 1 很受教,谢谢
wljwanqqq + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

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

mz135135 发表于 2018-10-12 13:46
运行就闪退这种是什么情况,
[Objective-C] 纯文本查看 复制代码
dyld: Library not loaded: @executable_path/Frameworks/libhookDylib.dylib
  Referenced from: /var/containers/Bundle/Application/D1F53195-66ED-418E-84AC-08103A28BADE/hook.app/TargetApp
  Reason: no suitable image found.  Did find:
	/var/containers/Bundle/Application/D1F53195-66ED-418E-84AC-08103A28BADE/hook.app/Frameworks/libhookDylib.dylib: code signing blocked mmap() of '/var/containers/Bundle/Application/D1F53195-66ED-418E-84AC-08103A28BADE/hook.app/Frameworks/libhookDylib.dylib'
	/private/var/containers/Bundle/Application/D1F53195-66ED-418E-84AC-08103A28BADE/hook.app/Frameworks/libhookDylib.dylib: code signing blocked mmap() of '/private/var/containers/Bundle/Application/D1F53195-66ED-418E-84AC-08103A28BADE/hook.app/Frameworks/libhookDylib.dylib'
	/private/var/containers/Bundle/Application/D1F53195-66ED-418E-84AC-08103A28BADE/hook.app/Frameworks/libhookDylib.dylib: stat() failed with errno=1
Message from debugger: Terminated due to signal 6
忆昔 发表于 2018-10-15 09:54
CHDeclareClass(WCDeviceStepObject)
CHOptimizedMethod0(self, unsigned int, WCDeviceStepObject, m7StepCount){
   
    id value = [[NSUserDefaults standardUserDefaults] objectForKey"wechatnumber"];
   
    //返回类型unsigned int
    return 100;
}

CHConstructor{
   
    CHLoadLateClass(WCDeviceStepObject);
    CHHook0(WCDeviceStepObject,m7StepCount);
}
m7StepCount这个属性无论设置成多少  都为98800是怎么回事哦
jogging 发表于 2018-10-12 12:35
yuday 发表于 2018-10-12 12:37
好文章,来学习下
tcxsl 发表于 2018-10-12 12:42
想下载。。
KING9115 发表于 2018-10-12 12:54
感谢楼主
小虫子Vincent 发表于 2018-10-12 13:07
大佬好厉害
4kfooler 发表于 2018-10-12 13:13
厉害了老铁
pqingquan 发表于 2018-10-12 13:15
大佬好厉害,能用Windows电脑来写吗
azesink 发表于 2018-10-12 13:21
厉害厉害!!!
头像被屏蔽
askmoon510 发表于 2018-10-12 13:35
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 15:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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