Skip to content

Next generation XXTouch for iOS 13 and above. System-wide iOS Automation Toolkit.

License

Notifications You must be signed in to change notification settings

idewindy/XXTouchNG

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

icon-256

XXTouchNG

Next generation XXTouch for iOS 13 and 14. Rewritten in Objective-C.

What’s XXTouch/XXTouchNG?

XXTouch was a system wide touch event simulation and automation tool (jailbreak required).

我的英语荒废太久,如果让我以真心撰写一大段话颇耗精力,所以还是拿中文写吧。

XXTouch 曾是一款模拟截取屏幕和模拟点击事件来实现 iOS 自动化的应用软件(需要越狱)。但是由于其部分功能(如修改地理位置),对目标进程实施了注入,被中华人民共和国的司法鉴定机构认定为“外挂”一类性质的软件。2018 年中,我们团队经某地法院判决,没收了全部收入,并且分别获刑三年至六年不等的有期徒刑。我因为认罪态度良好,上缴全部收入并且缴纳了一笔不菲的罚金,所以得以缓期执行。

近年来,随着“净网行动”的开展,不少类似性质的软件都遭到了不同程度的打击,例如叉叉助手、大牛助手、NZT 等等。这些软件无一例外的,都含有“注入”这一技术实施细节。而这,也是一款软件被认定为“外挂”的重要标准之一。

首先,“注入”这一行为,违规访问并且修改了了目标应用的内存空间,侵犯了目标应用所有者的软件著作权。其次,这类自动化工具给黑色产业链提供了技术上的支撑,并且获得了非法收入。

然而,当初作为大学刚毕业的我,在参与到 XXTouch 开发的时候,只负责其 UI 部分的编写,并没有深刻认识到这一点。我当时坚持认为,XXTouch 只是一款自动化工具,而非传统意义上的“外挂”,就算使用我们工具的人进行了违法犯罪,和我们应该也没有什么关系。 现在看来,当初的想法确实有些天真。

因为这件事,我深刻地见证了中国互联网从野蛮生长,到逐渐有序的过程。

技术是一把双刃剑,使用不当,可能将自己带入深渊。

我希望通过这次开源,能够促进公众,尤其是刚刚步入社会、步入程序员行业的年轻同行们,对于这一行业法律责任的认知。如果看到这个页面的在座各位,还有在编写非法爬虫、外挂,为违法犯罪提供有偿技术支撑的,请停下你们的键盘,想一想可能会付出的代价。快播如此,乌云如此,XXTouch 更是如此,请君牢记

我大概花了 2 个多月的时间来重写 XXTouch,将其取名为 XXTouchNG,一是为了了解它的技术实现细节,二是为了借此机会了我自己一个心结。如果 XXTouch 不“注入”他人进程,或者不以侵害他人著作权来盈利,它仍旧是一款很有乐趣的软件。“快捷指令”的限制太多,对于很多喜欢折腾的朋友来说,越狱一下自己的 iPhone,编写一些小脚本来实现一些小任务,是很有成就感的。

警告:本应用程序及其源代码基于 AGPLv3 协议发布,仅可用于 iOS 逆向工程的学习和交流目的。使用本应用程序对其他应用程序实施“注入”之前,你需要先获得其著作权人的有效许可。因安装、修改、使用本软件及其衍生物所造成的一切后果,需要你自行承担。

最后,致“南山必胜客”。你们作为中文互联网真正的顶流,希望能够以更高的水平,更公正的方式,让中国乃至世界的互联网发展得更加美好,而不是只会反复依靠国家机器,施加着不对等的制裁。窝里横很自豪吗?我言尽于此。

Features

Lua Core

  • extension of os, print
  • sys.log, nLog
  • screen, image
  • touch, key, accelerometer
  • sys, device
  • pasteboard, proc
  • app
  • thread
  • extension of table, string
  • http, ftp
  • json, plist, file
  • utils
  • other extensions
  • dialog, webview
  • clear
  • xpp, xui

Lua Modules

  • alert, Automation module for UIAlertViewController.
  • appstore, Automation module for AuthKit.
  • monkey, Automation module for WKWebView.
  • cookies
  • samba

App Features

  • Full Featured Recording
  • Full Featured App
  • OpenAPI
  • Startup Script
  • Daemon Mode
  • OCR Support (Provided by Apple’s Vision.framework)
  • Template Matching (Provided by OpenCV)
  • Activator Support

XPC Services

$ ls /usr/local/include/lib*
libdeviceconfigurator.h  libsupervisor.h
libprocqueue.h           libtfcontainermanager.h
libscreencapture.h       libtfcookiesmanager.h
libsimulatetouch.h       libauthpolicy.h

OpenAPI Protocols

  • Legacy XXTouch
  • TouchSprite (触动精灵协议)
  • TouchElf & Cloud API (触摸精灵及其云控协议)

Debugger Support

IDE Support

Prepare Your Device

Prepare Your Mac

  • Xcode 12 (required)
  • VSCode (recommended)
$ xcode-select -p
/Applications/Xcode-12.5.1.app/Contents/Developer
  • Install theos with its submodules
$ ls ~/theos
CODE_OF_CONDUCT.md bin                makefiles          templates
LICENSE.md         extras             mod                toolchain
Prefix.pch         include            package.json       vendor
README.md          lib                sdks
$ ls ~/theos/sdks | wc -l
      16
$ ls ~/theos/vendor/include | wc -l
     110
  • IMPORTANT: Remove ~/theos/vendor/include/openssl because we shipped another version of OpenSSL with this repo
  • IMPORTANT: Edit ~/theos/makefiles/common.mk, then append a new line export THEOS_OBJ_DIR here:
ifeq ($(THEOS_CURRENT_ARCH),)
THEOS_OBJ_DIR = $(_THEOS_LOCAL_DATA_DIR)/$(THEOS_OBJ_DIR_NAME)
else
THEOS_OBJ_DIR = $(_THEOS_LOCAL_DATA_DIR)/$(THEOS_OBJ_DIR_NAME)/$(THEOS_CURRENT_ARCH)
endif
export THEOS_OBJ_DIR  # <- append this line
  • Edit your ~/.zshrc and ensure THEOS_DEVICE_IP is set
$ env
THEOS=$HOME/theos
THEOS_DEVICE_IP=192.168.2.151

Build

Clone Repo

You need to git clone this repo instead of download a zipped archive of it!

$ git lfs install  # if you do not have Git LFS yet
$ git clone --recursive git@github.com:XXTouchNG/XXTouchNG.git

Build Only

$ make

Build Package

$ make package

Install Package

$ make install

Build & Install

$ make do

Build Release

To build a final release, you need to:

  • Clone and configure XXTExplorer in Xcode
  • Prepare a valid Apple Development or Developer ID certificate
  • Edit Makefile and set TARGET_CODESIGN_CERT to your certificate
  • Run following commands:
$ make explorer FINALPACKAGE=1
$ make package FINALPACKAGE=1

Usage

User Manual & Documentation (Chinese Only)

Credits

XXTouchNG uses codes from many open-source projects. Part of them were listed in submodules.

License

See LICENSE.

About

Next generation XXTouch for iOS 13 and above. System-wide iOS Automation Toolkit.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 56.1%
  • C++ 17.0%
  • Lua 11.8%
  • Objective-C 8.2%
  • Objective-C++ 3.3%
  • JavaScript 2.4%
  • Other 1.2%