Introduction : Le dernier article parlait de l'outil de déballage, et aujourd'hui c'est le theos, car l'installation de celui-ci gaspille aussi beaucoup de cellules cérébrales, et le cloné N plus 1 fois est un échec. Enregistrez comment le résoudre, j'espère que les amis intéressés par l'apprentissage de l'ingénierie inverse pourront lire cet article pour éviter les pièges.
Installer
-
Cela peut être dû à des problèmes de réseau domestique, les theos n'ont pratiquement pas réussi à cloner sur gitHub.
-
Je cherchais depuis longtemps des informations sur Internet et je l'ai finalement résolu
Résumez brièvement les étapes :
brew install ldid
- Définir les variables d'environnement
command
open ~/.zprofile
, mettez ces deux phrases après le fichier .profile
export THEOS=~/theos
export PATH=$THEOS/bin:$PATH
复制代码
Fermez le fichier .profile, commande
source ~/.zprofile
- Description de la configuration des variables d'environnement :
- L'information que j'ai vue sur Internet est de mettre la variable d'environnement dans le
.bash_profile
fichier.Je l'ai également essayé et j'ai trouvé un problème.Si le terminal est chargé à l'aide de zsh, la variable d'environnement prendra effet à.bash_profile
chaque ouverture du terminal .source ~/.bash_profile
Vérifiez les informations, mettez lasource ~/.bash_profile
commande à l'~/.zshrc
arrière du fichier, vous pouvez résoudre ce problème. (ou configurez bash pour charger)
- N'utilisez pas de commandes pour définir directement les variables d'environnement, car en utilisant les commandes
echo "export PATH=$THEOS/bin:$PATH" >> ~/.zprofile
, le chemin est directement développé dans le fichier .zprofile, ce qui n'est pas très agréable, alors écrivez-le manuellement.
-
Si le clone échoue selon la méthode officielle , téléchargez directement l'archive zip de theos
~/theos
et décompressez-la dans le chemin. -
Package de dépendance de clonage manuel, commande
cd $THEOS/vendor
git clone git://github.com/theos/dm.pl.git
git clone git://github.com/theos/headers.git/ //clone完成需要将headers改成include,其他的依赖直接用默认名称就可以
git clone git://github.com/theos/lib.git
git clone git://github.com/theos/logos.git
git clone git://github.com/theos/nic.git
git clone git://github.com/theos/templates.git
复制代码
-
Téléchargez directement sdks ==> Portal , décompressez-le et placez-le dans le dossier sdks de theos.
-
Commande Terminal
nic.pl
, si l'installation réussit, vous pouvez directement créer le projet.
Créer un projet
- cd dans le répertoire où vous devez créer le projet
- Commande
nic.pl
NIC 2.0 - New Instance Creator
------------------------------
[1.] iphone/activator_event
[2.] iphone/activator_listener
[3.] iphone/application_modern
[4.] iphone/application_swift
[5.] iphone/cydget
[6.] iphone/flipswitch_switch
[7.] iphone/framework
[8.] iphone/library
[9.] iphone/notification_center_widget
[10.] iphone/notification_center_widget-7up
[11.] iphone/preference_bundle_modern
[12.] iphone/theme
[13.] iphone/tool
[14.] iphone/tool_swift
[15.] iphone/tweak
[16.] iphone/tweak_with_simple_preferences
[17.] iphone/xpc_service
Choose a Template (required): 15 -->如果是hook,直接填写 15
Project Name (required): xxx --->项目名随便填
Package Name [com.yourcompany.xxx]: yourcompany.xxx --->随便填
Author/Maintainer Name [FRZeng]: nnn --->随便填
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: bundle ID --->需要hook什么App,就填写该App的bundle ID
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]: --->直接跳过
Instantiating iphone/tweak in xxx/...
Done. --->项目创建完成
复制代码
utiliser
-
Faites glisser l'ensemble du projet dans Sublime Text
-
Makefile d'emplacement
Ajouter THEOS_DEVICE_IP et THEOS_DEVICE_PORT
export THEOS_DEVICE_IP = localhost //配置IP
export THEOS_DEVICE_PORT = 10010 //端口
TARGET := iphone:clang:latest:7.0
INSTALL_TARGET_PROCESSES = SpringBoard
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = xxx
xxx_FILES = Tweak.x
xxx_CFLAGS = -fobjc-arc
include $(THEOS_MAKE_PATH)/tweak.mk
复制代码
- Une fois la configuration terminée, écrivez le code dans le fichier Tweak.x.
%hook XMLiveOrListenTogetherView //引用需要hook的App里的头文件
//拦截方法
- (id)init{
return nil;
}
%end
复制代码
- Une fois le code terminé, le terminal cd dans le dossier du projet theos (gardez le téléphone connecté à l'ordinateur)
- Commande
make
- Commande
make package
- Commande
make install
frzeng@192 tingTweak % make <========
==> Notice: Build may be slow as Theos isn’t using all available CPU cores on this computer. Consider upgrading GNU Make: https://github.com/theos/theos/wiki/Parallel-Building
> Making all for tweak tingTweak…
==> Preprocessing Tweak.x…
==> Compiling Tweak.x (armv7)…
==> Linking tweak tingTweak (armv7)…
ld: warning: building for iOS, but linking in .tbd file (/Users/frzeng/theos/vendor/lib/CydiaSubstrate.framework/CydiaSubstrate.tbd) built for iOS Simulator
==> Generating debug symbols for tingTweak…
rm /Users/frzeng/Desktop/nixiangCode/tingTweak/.theos/obj/debug/armv7/Tweak.x.m
==> Preprocessing Tweak.x…
==> Compiling Tweak.x (arm64)…
==> Linking tweak tingTweak (arm64)…
ld: warning: building for iOS, but linking in .tbd file (/Users/frzeng/theos/vendor/lib/CydiaSubstrate.framework/CydiaSubstrate.tbd) built for iOS Simulator
==> Generating debug symbols for tingTweak…
rm /Users/frzeng/Desktop/nixiangCode/tingTweak/.theos/obj/debug/arm64/Tweak.x.m
==> Merging tweak tingTweak…
==> Signing tingTweak… <<<<<<<==============
frzeng@192 tingTweak % make package <========
==> Notice: Build may be slow as Theos isn’t using all available CPU cores on this computer. Consider upgrading GNU Make: https://github.com/theos/theos/wiki/Parallel-Building
> Making all for tweak tingTweak…
make[2]: Nothing to be done for `internal-library-compile'.
> Making stage for tweak tingTweak…
dm.pl: building package `com.gemd.iting:iphoneos-arm' in `./packages/com.gemd.iting_0.0.1-1+debug_iphoneos-arm.deb' <<<<<<<==============
frzeng@192 tingTweak % make install <========
==> Installing…
(Reading database ... 5368 files and directories currently installed.)
Preparing to unpack /tmp/_theos_install.deb ...
Unpacking com.gemd.iting (0.0.1-1+debug) over (0.0.1-1+debug) ...
Setting up com.gemd.iting (0.0.1-1+debug) ...
==> Unloading SpringBoard… <<<<<<<==============
frzeng@192 tingTweak %
复制代码
<<<<<<<============== Pointez sur la dernière étape de chaque commande, il n'y a pas de problème, le crochet est réussi.
supprimer le plug-in
Si vous devez supprimer le plug-in de crochet sur le téléphone
Library/MobileSubstrate/DynamicLibraries/
Rechercher dans le téléphoneIl y a deux fichiers : un fichier plist, un fichier dylib à supprimer directement
》》》En ce qui concerne le développement de theos, je suis également novice. Si vous avez des amis qui apprennent l'ingénierie inverse ensemble, vous êtes invités à communiquer avec eux.