@SODiUM :
Alors si c'est écrit dans le texte de la release
La taille n'a rien à voir avec la fonction.
Ce n'est pas ceux qui ont les plus grandes oreilles qui entendent le mieux"
Tu sais, VRAIMENT, de quoi tu parles ?
S'il émule, il réalise les mêmes fonctions en les imitant.
Là, il transforme le comportement de certaines en remplaçant, la plupart [Activate*(), GetExtraData(), Is*(), ...], par
Si tu t'y connais un peu, tu devrais voir que leur code ASM n'est PAS optimisé :
Code : Tout sélectionner
63C31508 | 55 | push ebp |
63C31509 | 89E5 | mov ebp,esp |
63C3150B | B8 00000000 | mov eax,0 |
63C31510 | 5D | pop ebp |
63C31511 | C3 | ret |
Pourquoi ? A quoi servent les lignes 1,2 et 4 ?
De plus ,
-
Code : Tout sélectionner
// GetPKey()
63C315A0 | 55 | push ebp |
63C315A1 | 89E5 | mov ebp,esp |
63C315A3 | 83EC 18 | sub esp,18 |
63C315A6 | 837D 0C 00 | cmp dword ptr ss:[ebp+C],0 |
63C315AA | 75 0E | jne turboactivate.63C315BA |
63C315AC | C70424 5440C363 | mov dword ptr ss:[esp],turboactivate.63C34054 | 63C34054:L"B47E-....-....-....-....-....-...."
63C315B3 | E8 F80E0000 | call <JMP.&wcslen> |
63C315B8 | EB 1A | jmp turboactivate.63C315D4 |
63C315BA | C74424 04 5440C363 | mov dword ptr ss:[esp+4],turboactivate.63C34054 | 63C34054:L"B47E-....-....-....-....-....-...."
63C315C2 | 8B45 08 | mov eax,dword ptr ss:[ebp+8] | [ebp+8]:EntryPoint
63C315C5 | 890424 | mov dword ptr ss:[esp],eax |
63C315C8 | A1 4881C363 | mov eax,dword ptr ds:[<&wsprintfW>] |
63C315CD | FFD0 | call eax |
63C315CF | B8 00000000 | mov eax,0 |
63C315D4 | C9 | leave |
63C315D5 | C3 | ret |
-
Code : Tout sélectionner
// GetFeatureValue ()
63C316BA | 55 | push ebp |
63C316BB | 89E5 | mov ebp,esp |
63C316BD | 83EC 18 | sub esp,18 |
63C316C0 | 837D 14 00 | cmp dword ptr ss:[ebp+14],0 |
63C316C4 | 75 0E | jne turboactivate.63C316D4 |
63C316C6 | C70424 4440C363 | mov dword ptr ss:[esp],turboactivate.63C34044 | 63C34044:L"X-FORCE"
63C316CD | E8 DE0D0000 | call <JMP.&wcslen> |
63C316D2 | EB 1A | jmp turboactivate.63C316EE |
63C316D4 | C74424 04 4440C363 | mov dword ptr ss:[esp+4],turboactivate.63C34044 | 63C34044:L"X-FORCE"
63C316DC | 8B45 10 | mov eax,dword ptr ss:[ebp+10] |
63C316DF | 890424 | mov dword ptr ss:[esp],eax |
63C316E2 | A1 4881C363 | mov eax,dword ptr ds:[<&wsprintfW>] |
63C316E7 | FFD0 | call eax |
63C316E9 | B8 00000000 | mov eax,0 |
63C316EE | C9 | leave |
63C316EF | C3 | ret |
ne sont pas un comportement émulé de la DLL.
Enfin, s'il émulait, la DLL devrait, en plus, être signée.
C'est normal de pouvoir faire les mises à jour avec la DLL craquée (ou pas d'ailleurs) car elle ne réalise (n'exporte) pas les fonctions de mise à jour...
Quant à affirmer que les mises à jour sont possibles... On peut, juste, affirmer que la mise à jour en 3.1.7 est possible.
Si la mise à jour amène une nouvelle version de TurboActivate et se binde avec, tu pourras te "brosser" pour mettre l'ancienne version craquée
A ce jour,
Code : Tout sélectionner
// TA_GetVersion() de X-Force renvoie 4.1.8.0
66F117D0 | 55 | push ebp |
66F117D1 | 89E5 | mov ebp,esp |
66F117D3 | 8B45 08 | mov eax,dword ptr ss:[ebp+8] | [ebp+8]:EntryPoint
66F117D6 | C700 04000000 | mov dword ptr ds:[eax],4 |
66F117DC | 8B45 0C | mov eax,dword ptr ss:[ebp+C] |
66F117DF | C700 01000000 | mov dword ptr ds:[eax],1 |
66F117E5 | 8B45 10 | mov eax,dword ptr ss:[ebp+10] |
66F117E8 | C700 08000000 | mov dword ptr ds:[eax],8 |
66F117EE | 8B45 14 | mov eax,dword ptr ss:[ebp+14] |
66F117F1 | C700 00000000 | mov dword ptr ds:[eax],0 |
66F117F7 | B8 00000000 | mov eax,0 |
66F117FC | 5D | pop ebp |
66F117FD | C3 | ret |
Ici, coup de chance, la 3.1.6 et la 3.1.7 utilise la même version de DLL.
QuoterPlan.exe référence TA_GetVersion :
Code : Tout sélectionner
public static extern int TA_GetVersion(out uint MajorVersion, out uint MinorVersion, out uint BuildVersion, out uint RevisionVersion);
[DllImport("TurboActivate.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Unicode)]
Code : Tout sélectionner
public static Version GetVersion()
{
uint num;
uint num2;
uint num3;
uint num4;
int ret = Native.TA_GetVersion(out num, out num2, out num3, out num4);
if (ret != 0)
{
throw taHresultToExcep(ret, "GetVersion");
}
return new Version((int) num, (int) num2, (int) num3, (int) num4);
}
mais ne l'utilise pas...
Par contre, il pourrait, tout à fait, blacklister la clé "B47E-..." :
Code : Tout sélectionner
TWL2.31445D473D2A4435444D225958374D264536544D284932464D213E43305D 254734324
dans une future version de leur fonction QuoterPlan.MainForm.GetTurboActivateKey().
La fonction TA_GetVersion est, d'ailleurs, mal "émulée".
La version originale se présente ainsi :
Code : Tout sélectionner
621B5F20 | 8B4424 04 | mov eax,dword ptr ss:[esp+4] |
621B5F24 | 56 | push esi |
621B5F25 | 85C0 | test eax,eax |
621B5F27 | 74 31 | je turboactivate.621B5F5A |
621B5F29 | 8B4C24 0C | mov ecx,dword ptr ss:[esp+C] |
621B5F2D | 85C9 | test ecx,ecx |
621B5F2F | 74 29 | je turboactivate.621B5F5A |
621B5F31 | 8B5424 10 | mov edx,dword ptr ss:[esp+10] |
621B5F35 | 85D2 | test edx,edx |
621B5F37 | 74 21 | je turboactivate.621B5F5A |
621B5F39 | 8B7424 14 | mov esi,dword ptr ss:[esp+14] |
621B5F3D | 85F6 | test esi,esi |
621B5F3F | 74 19 | je turboactivate.621B5F5A |
621B5F41 | C700 04000000 | mov dword ptr ds:[eax],4 |
621B5F47 | C701 01000000 | mov dword ptr ds:[ecx],1 |
621B5F4D | C702 08000000 | mov dword ptr ds:[edx],8 |
621B5F53 | 8326 00 | and dword ptr ds:[esi],0 |
621B5F56 | 33C0 | xor eax,eax |
621B5F58 | 5E | pop esi |
621B5F59 | C3 | ret |
621B5F5A | 33C0 | xor eax,eax |
621B5F5C | 40 | inc eax |
621B5F5D | 5E | pop esi |
621B5F5E | C3 | ret |
et renvoie, donc, 0 ou 1 (si 1 des pointeurs est nul) alors que la version craquée renvoie toujours 0
Tu devrais te contenter de rester dans ton domaine de compétence : le dev. web.