iOS

MonkeyDev安装与MonkeyApp使用

2020-03-22  本文已影响0人  lmfei

MonkeyDev是一个极为方便的逆向调试平台,集众家所长
主要包含四个模块
Logos Tweak -- 使用theos提供的logify.pl工具将.xm文件转成.mm文件进行编译,集成了Cydia Substrate,它的主要作用是针对OC方法、C函数以及函数地址进行HOOK操作。
CaptainHook Tweak -- 使用CaptainHook提供的头文件进行OC函数的Hook以及属性的获取。
Command-line Tool -- 可以直接创建运行于越狱设备的命令行工具。
MonkeyApp -- 自动给第三方应用集成Reveal、Cycript和注入dylib的模块,支持调试dylib和第三方应用,只需要准备一个砸壳后的ipa或者app文件即可。

准备

  1. 安装MonkeyDev
  2. Logos语法介绍

使用

  1. 新建MonkeyDev项目,选择MonkeyApp,输入工程名,下一步即可


    new project
  2. 将砸壳后的ipa,拖入工程中
    copy ipa
    注:以前可以通过PP助手下载,越狱应用即可获得砸壳后的ipa,但是现在PP助手已不复存在!只有通过自己来砸壳了,获取砸壳ipa的方法:
    frida砸壳
    Clutch砸壳
    dumpdecrypted砸壳
    其中,frida砸壳成功率最高,但是它的环境配置比较麻烦;Clutch环境配置简单,砸壳成功率一般;dumpdecrypted最后导出的是decrypt文件,需要进行其他处理。
  3. run起来,就可以完成重签名,让他人之物变为自己的,然后进行态调试,动态调试需要使用LLDB的高级用法和Chisel

Logos语法

小试牛刀-动态调试钉钉,并将帐号密码展示到页面上

class_dump -H .app路径 -o DingTalkHeaders

通过工具打开头文件文件夹,以备后用


DingTalk 头文件
// See http://iphonedevwiki.net/index.php/Logos

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@interface DTAccountPasswordViewController:UIViewController
- (void)showPassword:(NSString *) msg;
@end
%hook DTAccountPasswordViewController
- (void)loginButtonPressed:(id)arg1 {
    //获取帐号
    NSString *phone = [[[self valueForKey:@"phoneView"] valueForKey:@"_mobileInputView"] valueForKey:@"text"];
    //获取密码内容
    NSString *pwd = [[[self valueForKey:@"passwordView"] valueForKey:@"passwordTextField"] valueForKey:@"text"];
    [self showPassword:[NSString stringWithFormat:@"%@🐮🐮🐮%@",phone, pwd]];
    //%orig;
}

%new
- (void)showPassword:(NSString *) msg{
    UIView *bgView = [[UIView alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
    bgView.backgroundColor = [UIColor clearColor];
    [[[UIApplication sharedApplication] keyWindow] addSubview:bgView];
    UILabel* lab = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 300, 40)];
    lab.layer.cornerRadius = 4;
    lab.backgroundColor = [UIColor orangeColor];
    lab.text = msg;
    lab.textColor = [UIColor whiteColor];
    lab.textAlignment = NSTextAlignmentCenter;
    lab.alpha = 0.8;
    lab.center = bgView.center;
    [bgView addSubview:lab];

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(8 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [bgView removeFromSuperview];
    });
}

%end

重新运行,看下效果


运行效果

至此,我们就完成了帐号密码的hook,真是牛批

生活如此美好,今天就点到为止。。。

上一篇下一篇

猜你喜欢

热点阅读