工作生活

iOS逆向-theos

2019-06-30  本文已影响0人  linleiqin

安装Homebrew

brew install ldid

修改环境变量

$ vim ~/.bash_profile
export THEOS=~/theos
export PATH=$THEOS/bin:$PATH
$ source ~/.bash_profile

下载theos

$ git clone --recursive https://github.com/theos/theos.git $THEOS

新建tweak项目

1. cd到一个存放代码的文件夹,输入nic.pl

$ cd ~/Desktop
$ nic.pl 

2. 选择iphone/tweak所对应的编号,下面是10

$ ~/Desktop  nic.pl
NIC 2.0 - New Instance Creator
------------------------------
  [1.] iphone/activator_event
  [2.] iphone/application_modern
  [3.] iphone/application_swift
  [4.] iphone/flipswitch_switch
  [5.] iphone/framework
  [6.] iphone/library
  [7.] iphone/preference_bundle_modern
  [8.] iphone/tool
  [9.] iphone/tool_swift
  [10.] iphone/tweak
  [11.] iphone/xpc_service
Choose a Template (required): 10

3. 填写项目信息

Project Name (required): my_tweak
Package Name [com.yourcompany.ting_tweak]: com.tweak.wechat
Author/Maintainer Name [Mac]:
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]:com.tencent.wechat
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none)[SpringBoard]:
Instantiating iphone/tweak in ting_tweak/...
Done.

4. 编辑Makefile

THEOS_DEVICE_IP
THEOS_DEVICE_PORT

通过哪个IP和端口号访问手机
export THEOS_DEVICE_IP=127.0.0.1
export THEOS_DEVICE_PORT=10010
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = ting_tweak
ting_tweak_FILES = Tweak.xm
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
   install.exec "killall -9 SpringBoard"

也可以把这两个变量配置到.bash_profile

$ vim ~/.bash_profile
export THEOS_DEVICE_IP=127.0.0.1
export THEOS_DEVICE_PORT=10010
$ source ~/.bash_profile

5. 编写代码(Tweak.xm文件)

%hook [需要hook的目标类]
重写方法实现
%end

%hook WCLoginView
- (id)initWithFrame:(struct CGRect)arg1 {
    return nil;
}
%end

类名可以通过Reveal连上手机查看
方法名可以通过class-dump导出.h文件查看
%new :添加一个新的方法
%orgi :函数原来的代码逻辑
%ctor
%log

6. 资源文件(图片)

  1. 在项目目录下新建layout文件夹,对应着手机的根目录/

7. 编译打包安装

$ make
$ make package
$ make install

小技巧:把多个命令合并,然后配置成.sh脚本

$ make clean && make && make package && make install //从前到后按顺序执行

8. 原理

1、theos的tweak并不会对APP原来的可执行文件进行修改,仅仅是修改了内存中的代码逻辑。

logify.pl 注意点

$ logify.pl TestController.h > TestController.xm
  1. 删掉__weak
  2. 删掉inout
  3. 协议报错:
    1)删掉协议
    2)声明协议 @protocol XXTestDelegate
  4. 删掉- (void).cxx_destruct { %log; %orig; }
  5. 删掉HBLogDebug(@" = 0x%x", (unsigned int)r); 或者 HBLogDebug(@" = 0x%@", r);
  6. 类名报错:
    1)替换类名为void:比如将TestModel *替换为void *
    2)声明类信息:@class TestModel
上一篇 下一篇

猜你喜欢

热点阅读