iOS逆向安防從入門到禿頭--Cycript&Logos

小谷禿頭合集php

  • 雷迪斯俺的枕頭們~ 我以前的博客講解的大部分是原理。可是開發中咱們爲了效率和方便常用工具git

  • 不過固然仍是要知道原理的,假如工具過時壞掉出問題之類的,咱們也能夠快速定位解決問題~github

  • 今天博客寫一篇實用性比較高的 ~xcode

1. MonkeyDev & Cycript

  • 只要是玩過逆向開發的兄弟們,都會使用一個工具MonkeyDev(是真的好用。把重籤,注入等等都自動化了),給兄得們一個安裝地址: MonkeyDev安裝地址,安裝過程出現問題能夠在 安裝可能出現的問題 裏面查找

如今最新版12.5的xcode安裝會閃退,不過在裏面也要解決辦法(因此遇到問題先不要慌,固然也能夠資訊小谷😆)markdown

  • 曾經個人博客使用過 某信重簽名注入代碼。咱們再用這個試上一波

1.1. MonkeyDev使用

    1. 咱們點擊Xcode 建立一個Monkey工程

1.png

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

2.png

3.png

ipaapp放哪一個均可以app

    1. 運行就能夠了(若是有錯應該也好解決,也能夠拋給我,我幫兄弟們看看😆)

4.png

你安裝的插件viewDebug均可以在這裏面使用~ (是否是爽到昇華~)iphone

1.2. Cycript使用

  • 安裝完MonkeyDev以後,裏面會自帶一個叫Cycript的插件

這個插件感受有必要說一會兒~工具

  • 我來經過一個兄弟們感興趣的案例說明一下他的使用~oop

    1. 連接手機~ (在同一網段)

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

    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

  • 最後但願兄弟們多多指教😜

相關文章
相關標籤/搜索