美文网首页
iOS逆向之问题交流

iOS逆向之问题交流

作者: 木子心语 | 来源:发表于2020-01-14 16:27 被阅读0次
  • 上一篇文章地址: iOS逆向之Deb包介绍

  • 今天群里看到几位小伙伴的问题,本篇文章主要介绍一下这几个问题.

  • 群是开放的,本着学习的目的创建了iOS逆向群,希望大家互相交流.

  • 如果群里有朋友也熟悉iOS逆向,你也可以帮助一下刚入门的朋友,互相学习.

1.如果遇到bool类型的方法,我们如何调试.

我依然用源项目代码做实验.

ViewController

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic,strong)UIButton *revealBtn;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    [self.view addSubview:self.revealBtn];
    
    [self booljudge];
}

-(BOOL)booljudge{
    
    NSLog(@"hello bool judge");
    
    int i = 100;
    
    if (i > 0) {
        
        NSLog(@"i > 0 ture");
        
        return true;
    }else{
        
        NSLog(@"i < 0 false");
        
        return false;
    }
    
}

-(UIButton*)revealBtn{
    if (!_revealBtn) {
        _revealBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        _revealBtn.frame = CGRectMake(100,100, 100,40);
        _revealBtn.backgroundColor = [UIColor redColor];
        [_revealBtn setTitle:@"测试" forState:UIControlStateNormal];
        [_revealBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [_revealBtn addTarget:self action:@selector(revealClick) forControlEvents:UIControlEventTouchUpInside];
    }
    return _revealBtn;
}

-(void)revealClick{
    
    NSLog(@"hello");
}

@end

我在代码中加入了 -(BOOL)booljudge的方法

  • 我们编译源码生成 ipa,找到可执行文件.

  • 我们找到后,然后进行class-dump进行导出头文件,如果你是从这篇文章开始看的,你可以周到class-dump的文章进行阅读.

  • 我们找到生成的头文件 ViewController

#import "UIViewController.h"

@class UIButton;

@interface ViewController : UIViewController
{
    UIButton *_revealBtn;
}

- (void).cxx_destruct;
- (_Bool)booljudge;
@property(retain, nonatomic) UIButton *revealBtn; // @synthesize revealBtn=_revealBtn;
- (void)revealClick;
- (void)viewDidLoad;

@end
  • 我们会看到 - (_Bool)booljudge方法

  • 我们接着写hook方法的代码

-(id)booljudge{

   NSLog(@"this a bool function");

   return %orig;
}

我会返回的类型改成id,这样只需要return %orig 进行返回即可.

保证源码正常执行.

如果修改了return ture 或者 return false ,只会执行一种逻辑.

  • 我们接着对tweak工程进行编译到安装.如果你看到这里的朋友,你可以查看一下tweak工程文章,如何创建tweak项目.

  • 下面是打印的日志输出

  • 源代码是这样写的
-(BOOL)booljudge{
    
    NSLog(@"hello bool judge");
    
    int i = 100;
    
    if (i > 0) {
        
        NSLog(@"i > 0 ture");
        
        return true;
    }else{
        
        NSLog(@"i < 0 false");
        
        return false;
    }
    
}
  • hook 代码
-(id)booljudge{

   NSLog(@"this a bool function");

   return %orig;
}

如果需要分析代码中的源码逻辑,需要大家亲自动手试试.

2. 有位小伙伴的cycript -p 命令执行不成功

  • 有可能是系统的原因导致的.

我的手机系统是iOS12.3

cycript -p 应用名/进程名 出错了

我们该如何处理呢?

  • 我们需要安装另一款软件.

1
wget http://apt.saurik.com/debs/cycript_0.9.594_iphoneos-arm.deb

2
wget http://www.tateu.net/repo/files/net.tateu.cycriptlistenertweak_1.0.0_iphoneos-arm.deb

3
wget http://www.tateu.net/repo/files/net.tateu.cyrun_1.0.5_iphoneos-arm.deb
4
pkg -i cycript_0.9.594_iphoneos-arm.deb

5
dpkg -i net.tateu.cycriptlistenertweak_1.0.0_iphoneos-arm.deb net.tateu.cyrun_1.0.5_iphoneos-arm.deb

  • 我们安装完成后,我们可以这样执行命令

cyrun -n SpringBoard -e

Cycript加载到SpringBoard中。SpringBoard将终止并自动重启

cyrun -n SpringBoard -d

SpringBoard卸载Cycript。SpringBoard将终止并自动重启

  • 我们来尝试一下

我们已经注入TEST项目

  • 我们打印一下层级结构

UIApp.keyWindow.recursiveDescription().toString()

  • 其他命令需要亲自了解一下.

3.在点击事件中加入其他控件

这里更简单了,我曾经写的hookdemo里,咱们加过alertView

%new
-(void)newMethod{
    NSLog(@"first new mehtod");
    
    UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"温馨提示" message:@"我的第一个tweak工程创建成功了" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消",nil];
    [alertView show];
}

其他控件也可以同样的添加.

4. 总结

  • 本篇文章主要介绍了如何解决三个问题

  • 如果遇到bool类型的方法,我们如何调试.

  • cycript -p 命令执行不成功

  • 在点击事件中加入其他控件

如果大家尝试后,不适合自己的方案可以找一下原因.由于很多因素存在,比如系统原因.

如果你出现了同样的问题,或者其他问题可以反馈到群里.

我会以文章的形式,把解决方案分享到iOS逆向文章.

感谢您的阅读,感谢您的关注.

相关文章

  • iOS逆向之问题交流

    上一篇文章地址: iOS逆向之Deb包介绍 今天群里看到几位小伙伴的问题,本篇文章主要介绍一下这几个问题. 群是开...

  • iOS逆向学习

    参考文章:iOS逆向开发记录:iOS逆向之手机越狱iOS逆向之介绍iOS逆向之文件系统结构iOS逆向之文件权限及类...

  • iOS逆向之反HOOK的基本防护

    iOS逆向之Method Swizzle iOS逆向之fishHook原理探究 iOS逆向之fishHook怎么通...

  • iOS逆向之App签名

    上一篇文章地址: iOS逆向之问题交流 上一篇文章,主要介绍了群里小伙伴遇到的问题. 已经好几天没有写文章了,我...

  • iOS逆向之ARM汇编四

    上一篇文章地址: iOS逆向之ARM汇编三 iOS逆向系列的文章已经更新不少篇文章了,小伙伴有什么问题,我们可以交...

  • 一 iOS 逆向工程概述

    1 什么是iOS逆向工程 2 iOS逆向的目的 3 iOS逆向过程以及方法 一 什么是iOS逆向工程 iOS逆向...

  • iOS逆向工具之class-dump(MacOS)介绍

    上一篇文章地址 iOS逆向工具之Cydia(iOS)介绍 感兴趣的小伙伴请留言,我们互相交流一下. 本篇文章将要...

  • iOS逆向工具之Theos(MacOS)介绍

    上一篇文章: iOS逆向工具之Cydia(iOS)软件介绍 今天是2020年第二天,我们继续写iOS逆向文章.如果...

  • 初涉iOS逆向工程:免越狱修改微信

    破壳 ​ 参考文章iOS逆向之博破壳 外观篇 ​ 参考文章初涉iOS逆向工程:免越狱修改微信(外观篇) 功...

  • iOS逆向之文件系统结构

    上一篇文章地址:iOS逆向之介绍 上一篇文章中,介绍了iOS逆向做了些什么,需要怎样的防护,逆向的流程,提到的工具...

网友评论

      本文标题:iOS逆向之问题交流

      本文链接:https://www.haomeiwen.com/subject/frkaactx.html