iOS逆向工程的环境搭建

2017-12-15  本文已影响41人  禾口王No_1

参考文章:
[iOS Reverse入门]微信注入
iOS逆向入门实践 — 逆向微信,伪装定位(一)

一. 先在已经越狱的手机上,打开Cydia搜索OpenSSH,并安装。
  1. WIFI连接(暂未使用过):手机和Mac电脑在同一网络下。
    例如我的iPhone的ip是: 192.168.00.00
macdeMacBook-Pro:~ mac$ ssh root@192.168.00.00
  1. USB连接:比WIFI响应速度快,网络环境无限制
    1.安装usbmuxd库,usbmuxd库中就顺带安装了一个小工具iproxy,该工具会将设备上的端口号映射到电脑上的某一个端口,例如:
iproxy 2222 22

2.以上命令就是把当前连接设备的22端口(SSH端口)映射到电脑的2222端口,那么想和设备22端口通信,直接和本地的2222端口通信就可以了。 因此,SSH连接设备就可以这样连接了:

macdeMacBook-Pro:~ mac$ iproxy 2222 22
waiting for connection
  1. 终端提示 waiting for connection ,表示这两个端口之间已经可以通信了,保留当前终端(如果关闭就停止端口之间的通信了),新建另一个终端输入,默认密码:alpine
Last login: Fri Dec 15 16:14:13 on ttys010
macdeMacBook-Pro:~ mac$ ssh -p 4567 root@127.0.0.1
root@127.0.0.1's password: 
credoode-iPad:~ root# 
二. 在Mac上打开终端,配置环境变量:
export THEOS=/opt/theos
sudo git clone git://github.com/DHowett/theos.git $THEOS
brew install dpkg ldid
touch substrate.h
/opt/theos/header/
cd  /opt/theos
mkdir header
/opt/theos/bin/nic.pl

如运行成功:

macdeMacBook-Pro:~ mac$ /opt/theos/bin/nic.pl
NIC 2.0 - New Instance Creator
------------------------------
  [1.] iphone/activator_event
  [2.] iphone/application_modern
  [3.] iphone/cydget
  [4.] iphone/flipswitch_switch
  [5.] iphone/framework
  [6.] iphone/ios7_notification_center_widget
  [7.] iphone/library
  [8.] iphone/notification_center_widget
  [9.] iphone/preference_bundle_modern
  [10.] iphone/tool
  [11.] iphone/tweak
  [12.] iphone/xpc_service
Choose a Template (required):
11

接着依次输入项目名称(只能包含字母和数字),输入包名,输入作者名:

Project Name (required): test
Package Name [com.yourcompany.test]: com.tom.test
Author/Maintainer Name [mac]: developer
#import "ViewController.h"
#import <objc/runtime.h>

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    
    Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
    NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
    NSLog(@"apps: %@", [workspace performSelector:@selector(allApplications)]);
}

连接真机调试,点击屏幕,复制打印的信息到文件编辑器,找到你要hook的app对应的bundle identifier,如微信的,搜索weChat(注:也可以在ipa解压后的plist里面找)

[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]:

输入微信的bundle identifier:

com.tencent.xin
-
cd /Users/Mac/

可以看到刚刚创建的tweak项目:test文件夹

%hook ClassName

类名的获取靠多个途径获取,此处暂不赘述.直接hook别人已经dump出的微信的一个类:

BaseMsgContentViewController

这个类在第一次进入某个聊天界面时会被初始化。

%hook BaseMsgContentViewController
-(void)viewDidLoad{
    %orig;
    UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"CGPointZero" message:@"这是注入的代码" delegate:nil cancelButtonTitle:@"确定 !" otherButtonTitles:nil];
    [alert show];
}
%end

%orig表示执行原来的代码,若不写这一句,原来的代码将不会被执行!

WelcomeWagon_FRAMEWORKS = UIKit
cd /Users/Mac/test

设置环境变量:

export THEOS=/opt/theos

Theos 采用与 debian 相同的 make 命令来编译。执行 make 命令:

make

此处若出现如下错误

==> Error: The vendor/include and/or vendor/lib directories are missing. Please run

 `git submodule update --init --recursive` 

in your Theos directory. More information:

 [https://github.com/theos/theos/wiki/Installation

2](https://github.com/theos/theos/wiki/Installation) 

运行语句,重新make

sudo  git submodule update --init --recursive
Haykams-MacBook:stringtheory haykam$ make package
> Making all for tweak ExampleName…
make[2]: Nothing to be done for `internal-library-compile'.
> Making stage for tweak ExampleName…
Can't locate IO/Compress/Lzma.pm in @INC (you may need to install the IO::Compress::Lzma module) (@INC contains: /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at /opt/theos/bin/dm.pl line 12.
BEGIN failed--compilation aborted at /opt/theos/bin/dm.pl line 12.
make: *** [internal-package] Error 2

可以用终端

sudo cpan IO::Compress::Lzma
cpan Compress::Raw::Lzma
export THEOS_DEVICE_IP=xx.xx.xx.xx

这里要注意,如果显示连接SSH失败,

ssh: connect to host 127.0.0.1 port 22: Connection refused

可能还要

export THEOS_DEVICE_PORT=2222

接着调用 make package install 命令完成编译打包安装

make package install

如报错如下,完整文本忘了赋值留存

Can't locate IO/Compress/Lzma.pm in @INC......

则需要运行(如果失败,则重试一下),答案地址:

should both install
sudo cpan IO::Compress::Lzma
and
cpan Compress::Raw::Lzma

运行成功,再次打包

上一篇 下一篇

猜你喜欢

热点阅读