iOS逆向安防从入门到秃头–Cycript&Logos

小谷秃头合集

  • 雷迪斯俺的枕头们~ 我之前的博客讲解的大部分是原理。但是开发中我们为了效率和方便经常使用工具

  • 不过当然还是要知道原理的,假如工具过期坏掉出问题之类的,我们也可以快速定位解决问题~

  • 今天博客写一篇实用性比较高的 ~

1. MonkeyDev & Cycript

  • 只要是玩过逆向开发的兄弟们,都会使用一个工具MonkeyDev(是真的好用。把重签,注入等等都自动化了),给兄得们一个安装地址: MonkeyDev安装地址,安装过程出现问题可以在 安装可能出现的问题 里面查找

现在最新版12.5的xcode安装会闪退,不过在里面也要解决办法(所以遇到问题先不要慌,当然也可以资讯小谷?)

  • 曾经我的博客使用过 某信重签名注入代码。我们再用这个试上一波

1.1. MonkeyDev使用

    1. 我们点击Xcode 创建一个Monkey工程

1.png

    1. 完成后。选取某信ipa或者app,放到TargetApp

2.png

3.png

ipaapp放哪个都可以

    1. 运行就可以了(如果有错应该也好解决,也可以抛给我,我帮兄弟们看看?)

4.png

你安装的插件viewDebug都可以在这里面使用~ (是不是爽到升华~)

1.2. Cycript使用

  • 安装完MonkeyDev之后,里面会自带一个叫Cycript的插件

这个插件感觉有必要说一下子~

  • 我来通过一个兄弟们感兴趣的案例说明一下他的使用~

    1. 链接手机~ (在同一网段)

cycript -r xxx.xx.x.xx:6666

    1. 出现下面情况表示成功

5.png

    1. 搞起 改一波数据测试某信cycript厉害之处就是不卡段进程

我们给兄弟转一波账(强调一波:小谷是遵纪守法的好公民,我就是想学习下人家的技术。是学习的动力驱使的我~

    1. 先转账

6.png

    1. 我猜他是个label。他如果不是我就再猜~ ?

终端输入: choose(UILabel)

    1. 在输出中寻找 1.00

7.png

    1. 我们找这个的地址,看看可不可以改下这个显示

终端输入:#0x13ba82ad0.text = @"¥10000"

    1. 看显示结果

8.png

当然,再次退出进入,就恢复了。我们改的只是显示的text

2. Logos

  • 刚接触Logos时,以为是一门新的语言。兄弟们。并不是的。其实就是他相当于就有几条命令。

  • Logos语法我就不多说了。兄弟们可以花20分钟看下就会了~ Logos-语法

2.1. hook的方法

我们直接举例说明比较好懂

  • 先搞一个demo:登录吧~

  • 我简单画一个界面

9.1.jpg

代码如下:

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *userTextField;

@property (weak, nonatomic) IBOutlet UITextField *pwdTextField;

@end

@implementation ViewController

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

- (IBAction)loginBtnClick:(id)sender {
    if ([self isEmpty:_userTextField.text]) {
        [self alert:@"username is empty!"];
        return;
    }
    if ([self isEmpty:_pwdTextField.text]) {
        [self alert:@"password is empty!"];
        return;
    }
    
    [self alert:@"login success!"];
}

- (void)alert:(NSString *)title{
    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:title message:nil preferredStyle:(UIAlertControllerStyleAlert)];
    UIAlertAction *cancle = [UIAlertAction actionWithTitle:@"OK" style:(UIAlertActionStyleCancel) handler:nil];
    [alertVC addAction:cancle];
    [self showViewController:alertVC sender:nil];
}

- (BOOL)isEmpty:(NSString *)string{
    if (string == nil || string == NULL) {
        return YES;
    }
    if ([string isKindOfClass:[NSNull class]]) {
        return YES;
    }
    if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {
        return YES;
    }
    return NO;
}
@end
复制代码
  • 接下来我们用Logos语法hook下这个login按钮

10.png

2.2. Logos 使用

    1. 创建Monkey-demo,然后把app放到targetAPP

11.png

    1. Logos可读能力很强,直接用OC写就可以

12.1.png

这就是所有的代码了,当然,要在logos文件夹里面写~

3. 总结

  • 小谷是遵纪守法的好公民,我就是想学习下人家的技术。是学习的动力驱使的我

  • 小谷觉得逆向大多数情况靠的是经验,还是要多练才行

  • Logos语法非常简单,兄弟们不要和我当初一样,一听是新语法就紧张

  • 我们之后逆向开发的时候很多时候会使用MonkeyLogos

  • 最后希望兄弟们多多指教?

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享