Bonjour,
Beaucoup de gens posent la question "c'est quoi les payloads ?"
Voilà un explicatif je pense assez clair ...

Un payload est un package qui effectue un travail spécifique. Un payload peut faire beaucoup de choses sur votre iPhone, c'est-à-dire :
Jailbreak, activation, déverrouillage, tuning système, fixer un problème, etc
Dans iLiberty +, un payload se compose de deux parties:
- Un payload de script
- Un payload archive
Le payload de script est vital.
L'archive est facultative.
Dans iliberty +, Le package "script" et "archive" (s'il y en a) doivent être mis dans le dossier "payload" se trouvant dans le dossier où se trouve iLiberty +.
Pour la plupart des travaux, une archive est requise.
Par exemple, pour installer le sous-système BSD, vous devez avoir l'archive "BSD_Subsystem.zip" téléchargée à partir de son site original.
Cependant, dans certains cas, il n'y aura pas d'archive.
Par exemple, pour corriger (fixer) certains problèmes d'application sur la 1.1.3, tout ce que vous avez à faire, c'est uniquement de créer un lien symbolique, pas besoin de créer un fichier quelconque.
************************************************************************************************************************************************************************************
************************************************************
Comment les payloads sont mis sur vos iphones/ipod
************************************************************
Lorsque vous avez choisi d'exécuter certains payload, iLiberty + les "package" en une unique archive ZIP et les transfére sur l'iPhone avant le ramdisk boot.
Ensuite dans la phase 2, un script extrairera l'archive dans le dossier Media de l'utilisateur, après l'extraction, le dossier Media a la structure suivante
Media
|
+- bin
+- do_payload.sh
+- iLiberty_Signature
+- payload/payload1.sh
+- payload/archive1.zip
+- payload/payload2.sh
+- payload/archive2.zip
.....
Le répertoire bin contient un ensemble minimum d'utilitaires que iLiberty + exige.
Le "do_payload.sh" est le principal script qui appelle chaque script de payload dans l'ordre alphabétique.
"iLiberty_Signature" est un script pour aider à déterminer où se trouve le payload.
S’il vous plaît souvenez vous de la structure, le fait de connaître la localisation et la structure des payload, vous aidera à rédiger votre propre payload.
************************
Nommer les payload
************************
Il n'y a pas de règles nécessaire pour le nom du script.
Mais les scripts sont appelés un par un dans leur ordre Alphabétique, donc normalement les scripts de payload sont préfixés par un numéro à 2 chiffres (fourchette de 00 à 99). Parce que certains payload doivent être lancés avant d'autres, nous avons utilisé les règles suivantes pour les payloads :
00 à 09 pour les payloads "importants" qui exigent normalement des privilèges : l'activation, l'unlock, etc sont des payloads importants et tombent tous dans cette gamme.
Par exemple, l'activation est normalement la première chose à faire, donc il est appelé "00Activate".
D'autre part, un 3ème partie des payloads ne sont que des add-ons pour le logiciel système de l'iphone, de sorte qu'ils ont une importance moindre , nous utiliserons un ordre de 90 à 99 pour eux.
Afin de créer des payloads bien organisés, nous les avons placés dans cet ordre :
00 - activation
00 - baseband erase/reflash
01 - bootloader upgrade/downgrade
02 - unlock
10 - patches
Cet ordre permet, lorsque plusieurs payloads sont contrôlés, d'être exécutés de manière raisonnable.
Par exemple, supposons que nous voulons rétrograder notre bootlaoder en 3,9, puis le déverrouiller avec AnySIM.
Dans l'ordre ci-dessus, nous savons que le bootloader sera d'abord downgradé et lorsque c'est fait, le déverrouillage suivra, et c'est tout à fait le bon ordre.
Si on ne suit pas l'ordre ci-dessus, à savoir le bootloader avant de déverrouiller, et qu'on déverouille puis on downgrade le bootloader, cela va échouer !!!!
Bien entendu, vous n'avez pas à suivre les règles ci-dessus, mais sachez que cette règle est bien la bonne, cela vous permet de donner un bon nom de script à votre payload.
Par exemple si nous voulons lancer un payload "VeryKewlPayload.sh" en priorité, on pourra l'appeler:
000VeryKewlPayload.shEt il sera le premier exécuté.
De même, si nous souhaitons lancer un script en dernier, nommez-le :
99ZLastPayload.shEt il sera le dernier payload exécuté....
********************************
En-tête de script des payload
********************************
Les scripts des payloads avec ILiberty + doivent être conformes à certaines conventions en vue d'être détecté par iLiberty +.
Le script doit contenir une entête qui décrit des choses, comme le nom du payload, de l'archive, etc ...
Le script est dans le format suivant:
#!/bin/sh
#
# Name: nom du payload
# Pack: nom de l'archive (peut être vide si pas besoin de fichier archive)
# URL: Lien où télécharger l'archive (peut être vide si pas besoin de fichier archive)
# Desc: payload description ligne #1
# la description continue à la ligne 2 #2
# la dernière ligne #3
#
La première ligne indique le shell que le script utilise, normalement c'est "/bin/sh", mais il n'y a pas de problème à en utiliser d'autres (par exemple "/usr/bin/python" (il faut qu'il soit installé).
D'autres lignes sont assez claires. S'il n'ya pas de contenu pour un champ, il suffit de laisser le nom, comme ceci:
# Pack:
Une chose doit être soulignée, le champ "Desc" doit être le dernier champ dans l'en-tête, il peut contenir de multiples lignes, il se termine par une ligne vierge ou une ligne de commentaire vide, tous les formats suivants sont corrects:
Example 1:
# Desc: This is a single line description
#
Example 2:
# Desc: This description contains 2 lines
# and it ends with an empty comment
#
Example 3:
# Desc: This description ends with a blank line
Voilà un véritable exemple, le script suivant est extrait d'un en-tête d'un script fournit en bundle avec iLiberty+:
#!/bin/sh
#
# Name: OpenSSH 4.6p1-2
# Pack: openssh-4.6p1-2.zip
# URL:
http://ste-repo.natetrue.com:15842/iphone-apps/zips/openssh-4.6p1-2.zip# Desc: OpenSSH Package
Avec l'en-tête, nous le savons, le payload est nommé "OpenSSH 4.6p1-2",
il nécessite une archive nommée pack "openssh-4.6p1-2.zip", l'archive pack peut être téléchargé à partir
http://ste-repo.natetrue.com:15842/iphone-apps/zips/openssh-4.6p1-2.zip.
*************************************
Le corps des scripts des payload
*************************************
Suite à l'en-tête de script, le corps du script commence.
C'est le véritable script que vous souhaitez exécuter sur votre iPhone, vous pouvez l'écrire de n'importe quelle manière, mais il reste des points à prendre en compte:
Au minimum il faut l'outil BSD
----------------------------------------
Un nouvel iphone jailbreaké / activé ne dispose pas du sous-système BSD installé,
iLiberty + a copié un très petit outil mis sur le téléphone.
Les utilitaires sont packagés dans "BasePack.zip", et lorsqu'ils sont extraits, ils sont mis dans le dossier "bin" de l'utilisateur ("root" ou "mobile") sous le dossier "Media".
Voici la listechmod
chown
cp
dd
dirname
grep
igsm
ls
mkdir
plutil
reboot
rm
sleep
tar
unzip
Vous devriez éviter de modifier "BasePack.zip" parce que toute nouvelle mise à jour peut modifier ce fichier et effacer vos modifications.
Si vous avez besoin des utilitaires spéciaux qui ne sont pas inclus dans le "BasePack.zip", merci de les inclure dans votre propre archive de payload, dans un sous-répertoire /bin.
Les fonctions internes
------------------------------
Une fonction interne nommé "functions.inc" est copié dans /bin2.
Votre script doit l'utiliser comme source pour obtenir un bon réglage de base de l'environnement (par exemple, PATH, DEBUG, etc.)
Donc, la ligne suivante doit être mis au tout début du script (après l'en-tête):
. /bin2/functions.inc
Après l'avoir déclaré dans votre propre script les variables suivantes seront mises au valeurs qui suivent :
SIGNATURE - a signature file
PL - payload folder name
PL_DIR - full path to payload folder
AFC_DIR - full path to user's media folder
USER_DIR - full path to user's home directory
OPTIONS - contains user selected options, mainly for master.sh
DEBUG - 1 = on which logs all output, sent from GUI
DEBUG_DELAY - time (in seconds) to delay for debug, sent from GUI
DEBUG_LOG - debug log file name
Il y a certaines fonctions internes qui sont définies dans le "functions.inc" :
---------------------------------------------------------------------------------------------------
GetFirmwareVersion
Syntax: GetFirmwareVersion var_name
GetBasebandVersion
Syntax: GetBasebandVersion var_name default_version
GetBootloaderVersion
Syntax: GetBootloaderVersion var_name
Les fonctions retournent le résultat dans une variable que vous avez défini tout en appelant la fonction. Voici un exemple:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
. /bin2/functions.inc
GetFirmwareVersion var_fw_version
if [ ${var_fw_version} != "1.1.3" ]; then
echo "Error: not version 1.1.3"
exit 1
fi
GetBasebandVersion var_bb_version
if [ ${var_bb_version} != "04.03.13_G" ]; then
echo "Error: not baseband 04.03.13"
exit 1
fi
GetBasebandVersion var_bb_version DEFAULT_VALUE
if [ ${var_bb_version} = "DEFAULT_VALUE" ]; then
echo "Error: unable to determine baseband version"
exit 1
fi
GetBootloaderVersion var_bl_version
if [ ${var_bl_version} != "3.9_M3S2" ]; then
echo "Error: not bootloader 3.9"
exit 1
------------------------------------------------------------------------------------------------------------------------ fin de l'exemple
Votre script peut appeler ces fonctions internes dans le cas où votre payload nécessite : un firmware 1.1.3 / une base 04.03.13_G / et un bootloader 3.9_M3S2 ....
*******************
Voilà un exemple
*******************
Activation d'un 1.1.4
L' Activativation nécéssite de patcher "/usr/lib/lockdownd", donc le script pour activer la 1.1.4 doit remplacer l'ancien "lockdownd" avec un lockdownd patché.
************************************************************************************************************************
Tout d'abord, l'en-tête, nous l'avons décrite précédemment, donc nous allons simplement la sauter:
#!/bin/sh
#
# Name: Activate 1.1.4
# Pack: Activate114.zip
# URL:
http://iLiberty.zjlotto.com/Payloads/Activate114.zip# Desc: Activate iPhone firmware 1.1.4 with a patched lockdownd.
#
************************************************************************************************************************
Maintenant, le corps du script, il faut d'abord appeler les fonctions internes pour vérifier la version du microprogramme, si le firmware n'est pas un 1.1.4 , nous nous arrêtons pour quelques secondes, de sorte que l'utilisateur peut savoir ce qui se passe (c'est le sleep 5, on attends 5 secondes) :
. /bin2/functions.inc
echo "Activating 1.1.4..."
GetFirmwareVersion fw_version
if [ ${fw_version} != "1.1.4" ]; then
echo "Wrong firmware version: ${fw_version}"
sleep 5
exit 1
fi
***********************************************************************************************************************
Quand la vérification de version a réussi( on est donc bien en 1.1.4, nous pouvons maintenant extraire notre lockdownd patchée pour remplacer l'ancien, nous avons également ajouté quelques erreurs de détection et vérifié les permissions afin de le rendre sûr en cas de panne:
unzip -q -o ${PL_DIR}/Activate114.zip -d /usr/libexec/
if [ $? -ne 0 ]; then
sleep 10
fi
chmod 555 /usr/libexec/lockdownd
***********************************************************************************************************************
Pour terminer on supprime notre archive... et on affiche "done"
rm -f ${PL_DIR}/Activate114.zip
echo "Done"
***********************************************************************************************************************
REMARQUE:
Bien que le script va nettoyer l'ensemble des payloads à la fin de l'exécution, c'est une bonne idée que de nettoyer notre propre payload avant de terminer, parce que si il y a de nombreux payloads à l'installation, le dossier payload peut occuper un certain Espace sur le disque....
Voila enjoy

Source : George ZJlotto