[Mac]SerialFishing de i*E*x*p*l*o*r*e*r

Mettez à disposition vos propres cours de cracking ou des cours que vous trouvez intéressant.

[Mac]SerialFishing de i*E*x*p*l*o*r*e*r

Messagepar Cirdo » 15 Mai 2015, 20:40

Salut à tous,

Il me semble qu’il y a jamais eu de Tuto Mac sur ce forum (je peux me tromper) ;)

Et bien voilà le premier tuto mac sur le forum.


Nous allons juste choper des clés sur le logiciel iExplorer, pas de keygen, ni de patch et en plus c’est assez simple :)

Ouvrons i*E*x*p*l*o*r*e*r et voyons son message d’erreur :
"Invalid RegistrationKey"


Maintenant ouvrons notre dissassembler préféré (pour ma part c’est Hopper) et cherchons ce string.
Image


Il nous renvoie à la fonction : -[IERegistrationVC startValidation:].
Code: Tout sélectionner
0000000100062751         push       rbp                                         ; Objective C Implementation defined at 0x1001e3550 (instance)
0000000100062752         mov        rbp, rsp
0000000100062755         push       r15
0000000100062757         push       r14
0000000100062759         push       r13
000000010006275b         push       r12
000000010006275d         push       rbx
000000010006275e         sub        rsp, 0x48
0000000100062762         mov        r14, rdi
0000000100062765         mov        rax, qword [ds:imp___got____stack_chk_guard] ; imp___got____stack_chk_guard
000000010006276c         mov        rax, qword [ds:rax]
000000010006276f         mov        qword [ss:rbp+var_30], rax
0000000100062773         mov        rdi, rdx                                    ; argument #1 for method imp___stubs__objc_retain
0000000100062776         call       imp___stubs__objc_retain
000000010006277b         mov        r13, rax
000000010006277e         mov        rdi, qword [ds:objc_cls_ref_NSAutoreleasePool] ; objc_cls_ref_NSAutoreleasePool, argument "instance" for method _objc_msgSend
0000000100062785         mov        rsi, qword [ds:0x100218c80]                 ; @selector(alloc)
000000010006278c         mov        r12, qword [ds:imp___got__objc_msgSend]     ; imp___got__objc_msgSend
0000000100062793         call       r12                                         ; _objc_msgSend
0000000100062796         mov        rsi, qword [ds:0x100218c88]                 ; @selector(init), argument "selector" for method _objc_msgSend
000000010006279d         mov        rdi, rax                                    ; argument "instance" for method _objc_msgSend
00000001000627a0         call       r12                                         ; _objc_msgSend
00000001000627a3         mov        qword [ss:rbp+var_48], rax
00000001000627a7         mov        edi, 0x5                                    ; argument #1 for method imp___stubs__sleep
00000001000627ac         call       imp___stubs__sleep
00000001000627b1         mov        rdi, qword [ds:objc_cls_ref_NSThread]       ; objc_cls_ref_NSThread, argument "instance" for method _objc_msgSend
00000001000627b8         mov        rsi, qword [ds:0x10021bbe8]                 ; @selector(currentThread), argument "selector" for method _objc_msgSend
00000001000627bf         call       r12                                         ; _objc_msgSend
00000001000627c2         mov        rdi, rax                                    ; argument #1 for method imp___stubs__objc_retainAutoreleasedReturnValue
00000001000627c5         call       imp___stubs__objc_retainAutoreleasedReturnValue
00000001000627ca         mov        rbx, rax
00000001000627cd         mov        rsi, qword [ds:0x10021bbf0]                 ; @selector(isCancelled), argument "selector" for method _objc_msgSend
00000001000627d4         mov        rdi, rbx                                    ; argument "instance" for method _objc_msgSend
00000001000627d7         call       r12                                         ; _objc_msgSend
00000001000627da         mov        r15b, al
00000001000627dd         mov        rdi, rbx                                    ; argument #1 for method imp___stubs__objc_release
00000001000627e0         call       imp___stubs__objc_release
00000001000627e5         test       r15b, r15b
00000001000627e8         je         0x1000627fe

00000001000627ea         mov        rdi, qword [ds:objc_cls_ref_NSThread]       ; objc_cls_ref_NSThread, argument "instance" for method imp___got__objc_msgSend
00000001000627f1         mov        rsi, qword [ds:0x10021bbf8]                 ; @selector(exit)
00000001000627f8         call       qword [ds:imp___got__objc_msgSend]

00000001000627fe         mov        rdi, qword [ds:objc_cls_ref_IERegistrationManager] ; objc_cls_ref_IERegistrationManager, argument "instance" for method imp___got__objc_msgSend, XREF=-[IERegistrationVC startValidation:]+151
0000000100062805         mov        rsi, qword [ds:0x10021bc00]                 ; @selector(figureOutKeyType:), argument "selector" for method imp___got__objc_msgSend
000000010006280c         mov        rdx, r13
000000010006280f         mov        qword [ss:rbp+var_40], r13
0000000100062813         call       qword [ds:imp___got__objc_msgSend]
0000000100062819         mov        r13d, eax
000000010006281c         mov        rbx, qword [ds:_OBJC_IVAR_$_IERegistrationVC.tf_regKeyStatus] ; _OBJC_IVAR_$_IERegistrationVC.tf_regKeyStatus
0000000100062823         cmp        r13d, 0x3
0000000100062827         jne        0x1000628a8

0000000100062829         mov        rdi, qword [ds:r14+rbx]                     ; argument "instance" for method _objc_msgSend
000000010006282d         mov        rsi, qword [ds:0x1002195a8]                 ; @selector(setHidden:), argument "selector" for method _objc_msgSend
0000000100062834         xor        edx, edx
0000000100062836         call       r12                                         ; _objc_msgSend
0000000100062839         mov        rdi, qword [ds:r14+rbx]                     ; argument "instance" for method _objc_msgSend
000000010006283d         mov        rsi, qword [ds:0x100218db0]                 ; @selector(setStringValue:), argument "selector" for method _objc_msgSend
0000000100062844         lea        rdx, qword [ds:cfstring_Invalid_Registration_Key] ; @"Invalid Registration Key"
000000010006284b         call       r12                                         ; _objc_msgSend
000000010006284e         mov        rdi, qword [ds:objc_cls_ref_NSUserDefaults] ; objc_cls_ref_NSUserDefaults, argument "instance" for method _objc_msgSend
0000000100062855         mov        rsi, qword [ds:0x1002193d8]                 ; @selector(standardUserDefaults), argument "selector" for method _objc_msgSend
000000010006285c         call       r12                                         ; _objc_msgSend
000000010006285f         mov        rdi, rax                                    ; argument #1 for method imp___stubs__objc_retainAutoreleasedReturnValue
0000000100062862         call       imp___stubs__objc_retainAutoreleasedReturnValue
0000000100062867         mov        rbx, rax
000000010006286a         lea        rax, qword [ds:_Pref_RegCodePirateDidUpgrade] ; _Pref_RegCodePirateDidUpgrade
0000000100062871         mov        rdx, qword [ds:rax]
0000000100062874         mov        rsi, qword [ds:0x1002194a8]                 ; @selector(boolForKey:), argument "selector" for method _objc_msgSend
000000010006287b         mov        rdi, rbx                                    ; argument "instance" for method _objc_msgSend
000000010006287e         call       r12                                         ; _objc_msgSend
0000000100062881         mov        r15b, al
0000000100062884         mov        rdi, rbx                                    ; argument #1 for method imp___stubs__objc_release
0000000100062887         call       imp___stubs__objc_release
000000010006288c         test       r15b, r15b
000000010006288f         mov        rdi, qword [ds:objc_cls_ref_IEPirateDiscountWC] ; objc_cls_ref_IEPirateDiscountWC
0000000100062896         je         0x100062b0c

000000010006289c         mov        rsi, qword [ds:0x10021bc08]                 ; @selector(showAsOldPirateOnRegEnter)
00000001000628a3         jmp        0x100062b13

00000001000628a8         mov        rdi, qword [ds:r14+rbx]                     ; argument "instance" for method imp___got__objc_msgSend, XREF=-[IERegistrationVC startValidation:]+214
00000001000628ac         mov        rsi, qword [ds:0x1002195a8]                 ; @selector(setHidden:), argument "selector" for method imp___got__objc_msgSend
00000001000628b3         xor        edx, edx
00000001000628b5         call       qword [ds:imp___got__objc_msgSend]
00000001000628bb         cmp        r13d, 0x4
00000001000628bf         mov        rdi, qword [ds:r14+rbx]
00000001000628c3         mov        rsi, qword [ds:0x100218db0]                 ; @selector(setStringValue:)
00000001000628ca         jne        0x1000628de

00000001000628cc         lea        rdx, qword [ds:cfstring_Invalid_Registration_Key] ; @"Invalid Registration Key"
00000001000628d3         call       qword [ds:imp___got__objc_msgSend]
00000001000628d9         jmp        0x100062b19

00000001000628de         lea        rdx, qword [ds:cfstring_Registration_Successful_] ; @"Registration Successful!", XREF=-[IERegistrationVC startValidation:]+377
00000001000628e5         call       r12                                         ; _objc_msgSend
00000001000628e8         mov        rdi, qword [ds:objc_cls_ref_IERegistrationManager] ; objc_cls_ref_IERegistrationManager, argument "instance" for method _objc_msgSend
00000001000628ef         mov        rsi, qword [ds:0x10021bc18]                 ; @selector(saveRegistrationKey:), argument "selector" for method _objc_msgSend
00000001000628f6         mov        rdx, qword [ss:rbp+var_40]
00000001000628fa         call       r12                                         ; _objc_msgSend
00000001000628fd         mov        rax, qword [ds:_OBJC_IVAR_$_IERegistrationVC.btn_continueDemo] ; _OBJC_IVAR_$_IERegistrationVC.btn_continueDemo
0000000100062904         mov        rdi, qword [ds:r14+rax]                     ; argument "instance" for method _objc_msgSend
0000000100062908         mov        rbx, rax
000000010006290b         mov        rsi, qword [ds:0x100219d38]                 ; @selector(setBezelStyle:), argument "selector" for method _objc_msgSend
0000000100062912         mov        edx, 0xc
0000000100062917         call       r12                                         ; _objc_msgSend
000000010006291a         mov        rdi, qword [ds:r14+rbx]                     ; argument "instance" for method _objc_msgSend
000000010006291e         mov        rsi, qword [ds:0x100219080]                 ; @selector(setTitle:), argument "selector" for method _objc_msgSend
0000000100062925         lea        rdx, qword [ds:cfstring_Okay]               ; @"Okay"
000000010006292c         call       r12                                         ; _objc_msgSend
000000010006292f         mov        r15, qword [ds:r14+rbx]
0000000100062933         mov        rsi, qword [ds:0x100219d48]                 ; @selector(title), argument "selector" for method _objc_msgSend
000000010006293a         mov        rdi, r15                                    ; argument "instance" for method _objc_msgSend
000000010006293d         call       r12                                         ; _objc_msgSend
0000000100062940         mov        rdi, rax                                    ; argument #1 for method imp___stubs__objc_retainAutoreleasedReturnValue
0000000100062943         call       imp___stubs__objc_retainAutoreleasedReturnValue
0000000100062948         mov        rbx, rax
000000010006294b         mov        rsi, qword [ds:0x10021bba0]                 ; @selector(setAlternateTitle:), argument "selector" for method _objc_msgSend
0000000100062952         mov        rdi, r15                                    ; argument "instance" for method _objc_msgSend
0000000100062955         mov        rdx, rbx
0000000100062958         call       r12                                         ; _objc_msgSend
000000010006295b         mov        rdi, rbx                                    ; argument #1 for method imp___stubs__objc_release
000000010006295e         call       imp___stubs__objc_release
0000000100062963         mov        rax, qword [ds:_OBJC_IVAR_$_IERegistrationVC.btn_continueDemo] ; _OBJC_IVAR_$_IERegistrationVC.btn_continueDemo
000000010006296a         mov        rdi, qword [ds:r14+rax]                     ; argument "instance" for method _objc_msgSend
000000010006296e         mov        rsi, qword [ds:0x1002195a0]                 ; @selector(setEnabled:), argument "selector" for method _objc_msgSend
0000000100062975         mov        edx, 0x1
000000010006297a         call       r12                                         ; _objc_msgSend
000000010006297d         mov        rdi, qword [ds:objc_cls_ref_NSObject]       ; objc_cls_ref_NSObject, argument "instance" for method _objc_msgSend
0000000100062984         mov        rcx, qword [ds:0x10021bba8]                 ; @selector(updateCountdown)
000000010006298b         mov        rsi, qword [ds:0x100219b90]                 ; @selector(cancelPreviousPerformRequestsWithTarget:selector:object:), argument "selector" for method _objc_msgSend
0000000100062992         xor        r8d, r8d
0000000100062995         mov        rdx, r14
0000000100062998         mov        qword [ss:rbp+var_50], r14
000000010006299c         call       r12                                         ; _objc_msgSend
000000010006299f         mov        rdi, qword [ds:objc_cls_ref_IERegistrationManager] ; objc_cls_ref_IERegistrationManager, argument "instance" for method _objc_msgSend
00000001000629a6         mov        rsi, qword [ds:0x10021bc20]                 ; @selector(utmStringWithType:key:), argument "selector" for method _objc_msgSend
00000001000629ad         mov        edx, r13d
00000001000629b0         mov        r14, r12
00000001000629b3         mov        rcx, qword [ss:rbp+var_40]
00000001000629b7         call       r14                                         ; _objc_msgSend
00000001000629ba         mov        rdi, rax                                    ; argument #1 for method imp___stubs__objc_retainAutoreleasedReturnValue
00000001000629bd         call       imp___stubs__objc_retainAutoreleasedReturnValue
00000001000629c2         mov        r12, rax
00000001000629c5         mov        rdi, qword [ds:objc_cls_ref_CommonData]     ; objc_cls_ref_CommonData, argument "instance" for method _objc_msgSend
00000001000629cc         mov        rsi, qword [ds:0x100218fa8]                 ; @selector(sharedInstance), argument "selector" for method _objc_msgSend
00000001000629d3         call       r14                                         ; _objc_msgSend
00000001000629d6         mov        rdi, rax                                    ; argument #1 for method imp___stubs__objc_retainAutoreleasedReturnValue
00000001000629d9         call       imp___stubs__objc_retainAutoreleasedReturnValue
00000001000629de         mov        rbx, rax
00000001000629e1         mov        rsi, qword [ds:0x10021bc28]                 ; @selector(lastConnectedDeviceType), argument "selector" for method _objc_msgSend
00000001000629e8         mov        rdi, rbx                                    ; argument "instance" for method _objc_msgSend
00000001000629eb         call       r14                                         ; _objc_msgSend
00000001000629ee         mov        rdi, rax                                    ; argument #1 for method imp___stubs__objc_retainAutoreleasedReturnValue
00000001000629f1         call       imp___stubs__objc_retainAutoreleasedReturnValue
00000001000629f6         mov        r15, rax
00000001000629f9         mov        rdi, rbx                                    ; argument #1 for method imp___stubs__objc_release
00000001000629fc         call       imp___stubs__objc_release
0000000100062a01         mov        rdi, qword [ds:objc_cls_ref_CommonData]     ; objc_cls_ref_CommonData, argument "instance" for method _objc_msgSend
0000000100062a08         mov        rsi, qword [ds:0x100218fa8]                 ; @selector(sharedInstance), argument "selector" for method _objc_msgSend
0000000100062a0f         call       r14                                         ; _objc_msgSend
0000000100062a12         mov        rdi, rax                                    ; argument #1 for method imp___stubs__objc_retainAutoreleasedReturnValue
0000000100062a15         call       imp___stubs__objc_retainAutoreleasedReturnValue
0000000100062a1a         mov        rbx, rax
0000000100062a1d         mov        rsi, qword [ds:0x10021bc30]                 ; @selector(lastConnectedDeviceColor), argument "selector" for method _objc_msgSend
0000000100062a24         mov        rdi, rbx                                    ; argument "instance" for method _objc_msgSend
0000000100062a27         call       r14                                         ; _objc_msgSend
0000000100062a2a         mov        rdi, rax                                    ; argument #1 for method imp___stubs__objc_retainAutoreleasedReturnValue
0000000100062a2d         call       imp___stubs__objc_retainAutoreleasedReturnValue
0000000100062a32         mov        r13, rax
0000000100062a35         mov        rdi, rbx                                    ; argument #1 for method imp___stubs__objc_release
0000000100062a38         call       imp___stubs__objc_release
0000000100062a3d         mov        rsi, qword [ds:0x100218d50]                 ; @selector(length), argument "selector" for method _objc_msgSend
0000000100062a44         mov        rdi, r15                                    ; argument "instance" for method _objc_msgSend
0000000100062a47         call       r14                                         ; _objc_msgSend
0000000100062a4a         test       rax, rax
0000000100062a4d         je         0x100062b32

C’est cette fonction qui affiche notre message d’erreur. En la parcourant, on peut voir aussi notre message de réussite qui est « Registration Successful! ».

On peut faire en sorte de tomber sur notre message de réussite mais nous, on cherche une clé.

La variable $r13 contient notre clé qui doit être vérifiée. La fonction « figureOutKeyType: » prend en paramètre notre clé.

Allons voir cette fonction, elle appartient à la class « IERegistrationManager ».


La class « IERegistrationManager » contient plein de fonctions, on peut les voir sur la partie gauche de Hopper.
Image

Et on s’aperçoit qu'il y a une fonction qui s’appelle « testKeys ». La fonction teste-t-elle des clés ?

Eh bien oui, elle teste des clés toutes faites.
Code: Tout sélectionner
000000010010523c         push       rbp                                         ; Objective C Implementation defined at 0x10020a248 (class)
000000010010523d         mov        rbp, rsp
0000000100105240         push       r15
0000000100105242         push       r14
0000000100105244         push       r13
0000000100105246         push       r12
0000000100105248         push       rbx
0000000100105249         sub        rsp, 0x378
0000000100105250         mov        qword [ss:rbp+var_388], rdi
0000000100105257         mov        rax, qword [ds:imp___got____stack_chk_guard] ; imp___got____stack_chk_guard
000000010010525e         mov        rax, qword [ds:rax]
0000000100105261         mov        qword [ss:rbp+var_30], rax
;suite du test des clés


Toutes les clés fonctionnent.

On va aller plus loin, grâce à hopper, certaines parties des 10 clés se répètent. Elle apparait dans la première clé et dans la dernière.
Et si on mélange les parties des 10 clé, elle fonctionne aussi.;
On peut même prendre juste une partie et la répétée plusieurs fois

Retournons à nos fonctions, il y en a une qui permet de vérifier si elles sont piratées. Et il y en plein.
On peut facilement se créer une clé et même faire un faux keygenne.


Merci de m'avoir lu.
N'hésitez pas à critiquer.

PS : Est-ce que les clés fonctionnent-t-elles sur Pc ?
Dernière édition par Cirdo le 24 Mai 2015, 09:47, édité 2 fois.
Avatar de l’utilisateur
Cirdo
Débutant
Débutant
 
Messages: 26
Inscription: 30 Juin 2014, 19:29

Re: [Mac]SerialFishing de iExplorer

Messagepar Cirdo » 17 Mai 2015, 19:45

Pardon, ce n'est pas un crack car il ne modifie pas le logiciel.
Avatar de l’utilisateur
Cirdo
Débutant
Débutant
 
Messages: 26
Inscription: 30 Juin 2014, 19:29

Re: [Mac]SerialFishing de iExplorer

Messagepar eabcdx » 17 Mai 2015, 20:49

Salut,

c'est très intéressant ! J'apprends actuellement l'Objective-C à l'école, sous un autre angle évidemment mais je reconnais bien la syntaxe (tordue) du langage :p

Je vais voir pour me procurer ça sur PC et tester.

A+
eabcdx
Crackeur de bas niveau
Crackeur de bas niveau
 
Messages: 131
Inscription: 03 Novembre 2012, 14:44

Re: [Mac]SerialFishing de iExplorer

Messagepar Cirdo » 19 Mai 2015, 16:58

eabcdx a écrit:Salut,

c'est très intéressant !
A+


Merci :)
Avatar de l’utilisateur
Cirdo
Débutant
Débutant
 
Messages: 26
Inscription: 30 Juin 2014, 19:29

Re: [Mac]SerialFishing de iExplorer

Messagepar baboon » 20 Mai 2015, 09:29

Merci pour le tuto mais s'il te plaît, édite les images et ton post pour masquer les clés valides.
Encore merci sinon, c'est simple et clair comme tuto :)
Newbie mais ayant soif d'apprendre et étant motivé
Avatar de l’utilisateur
baboon
Modérateur
Modérateur
 
Messages: 3271
Inscription: 08 Juillet 2005, 17:49

Re: [Mac]SerialFishing de iExplorer

Messagepar Cirdo » 20 Mai 2015, 12:51

baboon a écrit:Merci pour le tuto mais s'il te plaît, édite les images et ton post pour masquer les clés valides.


Tu veux dire les images où il y a des clés ou toutes les images ?

bacon a écrit:Encore merci sinon, c'est simple et clair comme tuto :)


Merci :)
Avatar de l’utilisateur
Cirdo
Débutant
Débutant
 
Messages: 26
Inscription: 30 Juin 2014, 19:29

Re: [Mac]SerialFishing de iExplorer

Messagepar baboon » 23 Mai 2015, 18:06

toutes les images où il y a des clés et si possible celles où il y a le nom du soft.
Si tu pouvais éditer le post pour que le nom du soft n'apparaisse pas directement ça serait aussi bien :) (genre i*E*x*p*l*o*r*e*r)
Newbie mais ayant soif d'apprendre et étant motivé
Avatar de l’utilisateur
baboon
Modérateur
Modérateur
 
Messages: 3271
Inscription: 08 Juillet 2005, 17:49

Re: [Mac]SerialFishing de i*E*x*p*l*o*r*e*r

Messagepar Cirdo » 25 Mai 2015, 10:46

Voilà c'est fait.
Avatar de l’utilisateur
Cirdo
Débutant
Débutant
 
Messages: 26
Inscription: 30 Juin 2014, 19:29

Re: [Mac]SerialFishing de i*E*x*p*l*o*r*e*r

Messagepar tiphergane » 10 Juin 2015, 09:07

Merci pour ton travail, je sens que je vais essayer de rammener mon cul de noob sur mac et tester hopper !
tiphergane
Débutant
Débutant
 
Messages: 39
Inscription: 06 Octobre 2005, 19:17
Localisation: France


Retourner vers Tutoriels

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité