使用THEOS编写Tweak

特特特特特别强调,只用于技术交流,任何责任我都不想负~~
再特特特特特别强调,若是你一步一步跟着作,出现了任何问题,任何报错。不要急不要急,后面会有您想要的。ios

本例拦截某即时通信软件😛的手机登陆页面中的登陆点击事件。步骤以下:spring

  1. 打开终端,执行nic.pl,会出现12个选项。
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
复制代码
  1. 编写tweak,选择第11个,直接输入:
    $ 11
  2. 接下来会进行一系列初始化设置。

Project Name (required): //建立项目的惟一名字。
Package Name [com.yourcompany.wechatpwddemo]: //建立包的惟一ID,中括号中为默认选项,注意小写。
Author/Maintainer Name [马万旻]://建立者的名字
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]://须要注入的目标应用的Bundle ID(你要为哪一个APP编写tweak)
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]://安装成功后杀掉的制定进程(SpringBoard就是咱们正向开发中心心念念想控制的那个桌面😂)bash

初始化成功后,会在当前目录中生成一个与你的Project Name同名的纯小写文件夹,子目录下有四个文件。app

  • Makefile //makefile文件
  • Tweak.xm //编写代码的文件
  • WeChatPwdDemo.plist //plist文件,用于指定须要注入的目标文件的bundle id。
  • control //制定deb包的一些信息,包括名字、描述、版本号等。
  1. 拦截某即时通信软件😛的手机登陆页面中的登陆点击事件,经过分析,咱们能够找到登陆事件的响应方法,编辑Tweak.xm写入如下内容:
%hook WCAccountNewPhoneVerifyViewController
- (void)onNext {
	%orig;
	UIView *view = MSHookIvar<UIView *>(self,"_pwdView");
	UITextField *pwdTf = view.subviews[0].subviews[0];
	NSLog(@"\n\n\n\n\n\n\n\n%@\n\n\n\n\n\n\n\n\n", pwdTf.text);
}
%end
复制代码

在用户输入密码的时候,将会在控制台输出密码。ssh

  1. 在生成的四个文件目录下,执行$ make,使用$ make message=yes能够看到Theos的内部处理细节。编译完成后,会生成一个隐藏的.theos文件夹和一个obj文件夹。
  2. 将其打包成deb。执行$ make package。完成后会生成一个packages文件夹,文件夹下会有一个deb包。
  3. 将deb文件安装到手机中,执行$ make install,这里会报错,须要在环境变量中设置,能够设置在makefile文件中,也能够设置在.zchrc/.bash_profile中。 这里的THEOS_DEVICE_IP和THEOS_DEVICE_PORT是ssh登陆的IP和端口。
$ export THEOS_DEVICE_IP=127.0.0.1
$ export THEOS_DEVICE_PORT=12345
复制代码

安装完成后,会在设备的Library/MobileSubstrate/DynamicLibraries/查看到你的dylib和plist。如下方式能够查看日志:iphone

  • 在Xcode->Window->Devices and Simulators选项,从控制台查看执行的log信息。
  • 运行brew install libimobiledevice命令,安装libimobiledevice命令工具。运行idevicesyslog | grep 关键字命令,查看日志。

在使用theos的时候,有几个坑,点这里ide

相关文章
相关标签/搜索