[..] Script Anti-copie
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[..] Script Anti-copie
Bonsoir !
J'avais besoin il y a peu de temps de créé un "anti-copie" a integrer dans un de mes scripts. Pour ça, j'ai utiliser une méthode simple, mais peu sur:
La vérification au début du lancement du prog si une clé du registre existait, clé que j'avais préalablement créée grace a un mini script (deux lignes )
En effet, si quelqu'un utilisait le prog sans avoir utiliser le mini-script avant ça ne marchait pas.
Je croyais ma protection éfficace. Sauf que le mini-prog, qui devait s'auto-détruire après avoir créé la clé registre, ne s'auto-détruit pas. Il est donc facil d'envoyé ce mini-prog d'un ordi a un autre
Hum... je ne suis pas clair.
Disons qu'en fait, lors de mes test, le mini-prog se suprimait de lui même. Or, quand il est compiler, il ne se suprime plus. Ce qui rend ma protection (déjà peu fiable) completement inutile.
Vous avez une meilleure idée ? Comment empêcher la copie ?
Merci.
J'avais besoin il y a peu de temps de créé un "anti-copie" a integrer dans un de mes scripts. Pour ça, j'ai utiliser une méthode simple, mais peu sur:
La vérification au début du lancement du prog si une clé du registre existait, clé que j'avais préalablement créée grace a un mini script (deux lignes )
En effet, si quelqu'un utilisait le prog sans avoir utiliser le mini-script avant ça ne marchait pas.
Je croyais ma protection éfficace. Sauf que le mini-prog, qui devait s'auto-détruire après avoir créé la clé registre, ne s'auto-détruit pas. Il est donc facil d'envoyé ce mini-prog d'un ordi a un autre
Hum... je ne suis pas clair.
Disons qu'en fait, lors de mes test, le mini-prog se suprimait de lui même. Or, quand il est compiler, il ne se suprime plus. Ce qui rend ma protection (déjà peu fiable) completement inutile.
Vous avez une meilleure idée ? Comment empêcher la copie ?
Merci.
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Voici deux exemples de scripts qui s'auto-détruisent, même compilés.
Rajouter les fonctions dans votre code, et faites y appel quand vous en avez besoin.
Rajouter les fonctions dans votre code, et faites y appel quand vous en avez besoin.
Code : Tout sélectionner
Func _SelfDelete($iDelay = 0)
Local $sCmdFile
FileDelete(@TempDir & "\scratch.bat")
$sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
& ':loop' & @CRLF _
& 'del "' & @ScriptFullPath & '"' & @CRLF _
& 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
& 'del ' & @TempDir & '\scratch.bat'
FileWrite(@TempDir & "\scratch.bat", $sCmdFile)
Run(@TempDir & "\scratch.bat", @TempDir, @SW_HIDE)
EndFunc
Func SuiCide()
$SC_File = @TEMPDIR & "\suicide.bat"
FileDelete($SC_File)
$SC_batch = 'loop:' & @CRLF & 'del "' & @SCRIPTFULLPATH & '"' & @CRLF & _
'ping -n 1 -w 250 zxywqxz_q' & @CRLF & 'if exist "' & @SCRIPTFULLPATH & _
'" goto loop' & @CRLF & 'del suicide.bat' & @CRLF
FileWrite($SC_File,$SC_batch)
Run($SC_File,@TEMPDIR,@SW_HIDE)
Exit
EndFunc
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Pouvez vous (excusez moi si je reviens involontairement au tutoiement, c'est instinctif sur un forum pour moi, question d'habitude ) décrire un peu le fonctionnement de l'une de ces fonctions ?
Par ce que j'avoue ne pas y comprendre grand chose... Et recopier bêtement ce script serait surement efficace, mais pas très profitable.
Merci !
Edit: Ca marche très bien, merci !
Par ce que j'avoue ne pas y comprendre grand chose... Et recopier bêtement ce script serait surement efficace, mais pas très profitable.
Merci !
Edit: Ca marche très bien, merci !
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Alors, par exemple la fonction _SelfDelete(5) permettra d'auto-détruire le script en cours d'éxecution, après un délais de 5 secondes.saltan a écrit :Pouvez vous décrire un peu le fonctionnement de l'une de ces fonctions ?
Par ce que j'avoue ne pas y comprendre grand chose... Et recopier bêtement ce script serait surement efficace, mais pas très profitable.
Le principe de la fonction, est de créer un script batch qui détruira l'exe compiler ou le script AU3, de lancer le batch, et de sortir du script AutoIt.
voici le code du batch créer :
Code : Tout sélectionner
ping -n 0127.0.0.1 > nul
:loop
del "C:\Documents and Settings\Tlem\Bureau\AutoDestruction.au3"
if exist "C:\Documents and Settings\Tlem\Bureau\AutoDestruction.au3" goto loop
del C:\DOCUME~1\Tlem\LOCALS~1\Temp\scratch.bat
Modifié en dernier par Tlem le lun. 01 oct. 2007 22:24, modifié 1 fois.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Tu crées 2 valeurs dans le registre. Une contient la date à lequel le script a été lancé pour la premiére fois, l'autre que le programme ce lance pour la premiere fois (1 ou 0).
Quand le programme se lance pour la premiére fois, il inscrit la date dans le registre. Cette date correspond donc la date de compilation.( ce qui supppose que l'utilisateur lance le script des que tu lui passes).il suffit donc de verifié a chaque lancement si la date de lancement est égale à la date de compilation.
Si le programme est copié, la date dans le registre et la date de compilation ne correspondent pas. Le programme ne se lancera pas.
Compliquer mais efficace.
Quand le programme se lance pour la premiére fois, il inscrit la date dans le registre. Cette date correspond donc la date de compilation.( ce qui supppose que l'utilisateur lance le script des que tu lui passes).il suffit donc de verifié a chaque lancement si la date de lancement est égale à la date de compilation.
Si le programme est copié, la date dans le registre et la date de compilation ne correspondent pas. Le programme ne se lancera pas.
Compliquer mais efficace.
- sylvanie
- Niveau 11
- Messages : 1550
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
une méthode de réaliser un anticopie est de patcher l'exe avec des infos propres
à la plateforme. Cependant on ne peut pas demander avant à l'utilisateur de
donner des infos sur sa machine ...
Donc il faut récupérer ses infos via l'execution, les enregistrer en registie
par exple, le tout chiffré pour que ce ne soit ni évident à comprendre ni
falscifiable.
Ensuite il faut faire comprendre à l'exe qu'il a déjà créé cette clé de registre
afin qu'en cas d'effacement il en déduise que c'est une tentative de bidouillage
et donc pour celà, on patch l'exe lui même avec un info fixe, qu'on appelle tag,
magic, ou autre terme.
Lorsque l'exe se lance il regarde si il contient cette valeur au bon endroit et
dans ce cas en déduit qu'il a déjà été lancé / installé.
L'exple ci dessous se compote ainsi :
un script externe à compilet, est à embarquer dans l'exe finale par fileinstall qui
patchera son hôte lors de sa première execution.
déroulement :
l'exe se lance, il regarde à la fin si il se termine par 0x1111111128021977
(c'est le tag que j'ai pris). Je l'ai mis à la fin pour simplifier l'exple, mais
il est préférable de trouver une zone fixe de l'exe proche d'un padding qui ne
perturbe pas le fonctionnement de l'exe (si si il y en a qq unes ...).
Lors de la première utlisation, ceci n'est pas le cas.
Le script en déduit qu'il n'a pas été lancé.
Alors il vérifie si la clé de registre existe, dans ce cas, nous avons un
bidouilleur qui à dégager la zone de patch et laissé la registrie => erreur
Sinon, il la crée. Dans mon cas j'ai chiffré la concaténation du chemin/nom_exe
avec le numéro de série du microprocesseur. La clé utilisée sera dans cette exple
le tag concaténé au poids du 1er exe.
Ainsi impossible de renommer / déplacer le fichier au sein de la machine et de le
copier sur une autre (la copie est possible, mais l'exe ne marchera pas)
Si après, la clé de registre seule est effacée et pas la zone de patch, alors
on sera également en erreur
en fin de prmeière utilisation, le petit exe embarqué est lancé en fin d'execution et
patch son hôte avant de s'auto détruire
Le seul moyen est donc de détruire la clé de registre et dégager la zone patchée
, d'où la necessité dans un cas réel de la mettre ailleurs qu'à la fin ...
Au passage, faite attention au fileinstall, penser à le modifier en fonction de votre
chemin, car je rappelle que le 1er arg est le chemin absolue de la machine qui
compile
script du patcher (à compiler en 1er) :
script de l'exe à compiler, une fois le premier compilé, et une fois que vous avez mis votre chemin d'accès en 1er arg de fileinstall
à la plateforme. Cependant on ne peut pas demander avant à l'utilisateur de
donner des infos sur sa machine ...
Donc il faut récupérer ses infos via l'execution, les enregistrer en registie
par exple, le tout chiffré pour que ce ne soit ni évident à comprendre ni
falscifiable.
Ensuite il faut faire comprendre à l'exe qu'il a déjà créé cette clé de registre
afin qu'en cas d'effacement il en déduise que c'est une tentative de bidouillage
et donc pour celà, on patch l'exe lui même avec un info fixe, qu'on appelle tag,
magic, ou autre terme.
Lorsque l'exe se lance il regarde si il contient cette valeur au bon endroit et
dans ce cas en déduit qu'il a déjà été lancé / installé.
L'exple ci dessous se compote ainsi :
un script externe à compilet, est à embarquer dans l'exe finale par fileinstall qui
patchera son hôte lors de sa première execution.
déroulement :
l'exe se lance, il regarde à la fin si il se termine par 0x1111111128021977
(c'est le tag que j'ai pris). Je l'ai mis à la fin pour simplifier l'exple, mais
il est préférable de trouver une zone fixe de l'exe proche d'un padding qui ne
perturbe pas le fonctionnement de l'exe (si si il y en a qq unes ...).
Lors de la première utlisation, ceci n'est pas le cas.
Le script en déduit qu'il n'a pas été lancé.
Alors il vérifie si la clé de registre existe, dans ce cas, nous avons un
bidouilleur qui à dégager la zone de patch et laissé la registrie => erreur
Sinon, il la crée. Dans mon cas j'ai chiffré la concaténation du chemin/nom_exe
avec le numéro de série du microprocesseur. La clé utilisée sera dans cette exple
le tag concaténé au poids du 1er exe.
Ainsi impossible de renommer / déplacer le fichier au sein de la machine et de le
copier sur une autre (la copie est possible, mais l'exe ne marchera pas)
Si après, la clé de registre seule est effacée et pas la zone de patch, alors
on sera également en erreur
en fin de prmeière utilisation, le petit exe embarqué est lancé en fin d'execution et
patch son hôte avant de s'auto détruire
Le seul moyen est donc de détruire la clé de registre et dégager la zone patchée
, d'où la necessité dans un cas réel de la mettre ailleurs qu'à la fin ...
Au passage, faite attention au fileinstall, penser à le modifier en fonction de votre
chemin, car je rappelle que le 1er arg est le chemin absolue de la machine qui
compile
script du patcher (à compiler en 1er) :
Code : Tout sélectionner
;fichier patch me.au3
AutoItSetOption ( " TrayIconHide " , 1 )
AutoItSetOption ( " Onexitfunc " , " my_exit " )
if $CmdLine[0] <> 1 then Exit 1
$fic = FileOpen ( $CmdLine[1] , 17 )
if $fic <> - 1 Then
FileWrite ( $fic , Binary ( " 0x1111111128021977 " ) )
FileClose ( $fic )
EndIf
exit 0
Func my_exit ( )
;Run ( @ScriptDir& " \del_tmp.bat " , @ScriptDir , @SW_HIDE )
Run ( @ComSpec& " /c del /F " &FileGetShortName ( @ScriptFullPath ) , @ScriptDir , @SW_HIDE )
EndFunc
script de l'exe à compiler, une fois le premier compilé, et une fois que vous avez mis votre chemin d'accès en 1er arg de fileinstall
Code : Tout sélectionner
AutoItSetOption ( " TrayIconHide " , 1 )
#include <String.au3>
$tag = Binary ( " 0x1111111128021977 " ) ; tag de reference qui sera présent à la fin du fichier lorsque celui - ci a été éxécuter une fois
; libre choix de cette valeur ...
If StringRight ( @ScriptName , 4 ) <> " .exe " Then
MsgBox ( 0 , " Pas dans la source ! " , " attention , tu fais un f5 au lieu d'une compil ! " )
exit 0
EndIf
$admin_error = 0 ; globale d'erreur pour plus tard ...
AutoItSetOption ( " Onexitfunc " , " my_exit " ) ; à partir d'ici on désigne comme fonction de sortie , le lancement du patch de cet exe
$fic = FileOpen ( @ScriptName , 16 ) ; ouverture de l'exe en lecture binaire
If $fic = - 1 Then exit 1
$size = FileGetSize ( @ScriptName )
$binary = FileRead ( $fic , $size ) ; on lit tout l'exe
FileClose ( $fic )
$binary = BinaryMid ( $binary , $size - 7 ) ; lecture des 8 derniers octer pour savoir si l'exe est déjà patcher avec $tag
$ctrl = RegRead ( " HKEY_LOCAL_MACHINE\SOFTWARE\Test_anticopy " , " Myctrl " )
If $tag = $binary Then
AutoItSetOption ( " Onexitfunc " , " my_exit2 " ) ; on est déjà tagué donc on ne repatch pas
;maintenant on vérifie que notre exe est dans son endroit légitime
;déchiffremnt de la clé de registre
if $ctrl = " " Then copieur ( ) ; tag ok , mais pas registre donc bidouille ...
$ctrl = _StringEncrypt ( 0 , $ctrl , BinaryToString ( $tag ) & ( $size - 8 ) )
If StringLen ( $ctrl ) <> 16 + StringLen ( @ScriptFullPath ) Then copieur ( ) ; check de la cohértence de taille
$path = StringLeft ( $ctrl , StringLen ( @ScriptFullPath ) )
$id = StringRight ( $ctrl , 16 )
If @ScriptFullPath <> $path Or $id <> get_processor_id ( ) Then copieur ( )
ElseIf $ctrl <> " " Then
copieur ( ) ; pas de tag en fin de fichier , mais présence de la registrie = > bidouille
Else
; première utilisation de l'exe , on vérifie qu'on peut écrire dans la registrie
if not IsAdmin ( ) Then
$admin_error = 1
Exit MsgBox ( 16 , " Pb admin " , " Vous n'êtres pas admin pour cette installation " )
EndIf
; on inscrit en registre le chemin et le nom actuel de l'exe concaténé avec le num de série du microprocesseur chiffré le tag concaténé à la taille de l'exe
RegWrite ( " HKEY_LOCAL_MACHINE\SOFTWARE\Test_anticopy " , " Myctrl " , " REG_SZ " , _StringEncrypt ( 1 , @ScriptFullPath&get_processor_id ( ) , BinaryToString ( $tag ) &$size &$size ) )
EndIf
; on a passé tous les contrôles , le prog débute ici :
MsgBox ( 0 , " coucou " , " tout ça pour ça ! " )
exit 0
func my_exit ( )
If not $admin_error Then
FileInstall ( " I:\dev\autoit\forum\patch_me.exe " , @TempDir& " \update.exe " , 1 )
;attention !! le chemin si dessus correspond à chez moi , vous devez adapter à votre cas !!!!
; il s'agit du chemin où vous venez de compiler le script patch_me.au3 qui porte le nom de patch_me.exe
run ( @TempDir& " \update.exe " &@ScriptFullPath , @ScriptDir , @SW_HIDE )
EndIf
EndFunc
func my_exit2 ( )
;nothing
EndFunc
func my_exit_err ( )
MsgBox ( 16 , " Bouh!! " , " le copieur ! " )
EndFunc
func get_processor_id ( )
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = " "
$strComputer = @ComputerName
$objWMIService = ObjGet ( " winmgmts:\\ " & $strComputer & " \root\CIMV2 " )
$colItems = $objWMIService.ExecQuery ( " SELECT * FROM Win32_Processor " , " WQL " , $wbemFlagReturnImmediately + $wbemFlagForwardOnly )
For $objItem In $colItems
$procesor = $objItem.ProcessorId
return $procesor
next
return ( " 1111111128021977 " ) ; retourne cette valeur si échec
EndFunc
func copieur ( )
AutoItSetOption ( " Onexitfunc " , " my_exit_err " )
exit 1
EndFunc
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Bon merci.
mais j'ai encore moins compris
Cela dit, tu as parler du numéro de serie du microprossesseur non ?
" @ScriptFullPath&get_processor_id" C'est ça ?
Par ce qu'en fait, pour en dire plus, j'ai fait un bot pour un jeu que je fait payer (enfin en argent du jeu) toute les semaines. Pour ca, j'envoi toute les semaines a mes "clients" un fichier qui active le bot pour une semaine (en changeant la clé du registre). Le problème, c'est que les personnes ayant deux PC copie l'activateur. Donc en fait, je cherchait une variable propre a chaque ordi pour empecher ça.
Ensuite, il suffit de faire un prog suicidaire qui copie la variable unique, la colle dans un endroit choisit, et se détruit. L'utilisateur incocient n'aura probablement pas fait de copie du fichier AVANT de l'utiliser. DOnc ça ira.
Fin bref, je suis pas sur que vous me suiviez, mais vous aidez aider
mais j'ai encore moins compris
Cela dit, tu as parler du numéro de serie du microprossesseur non ?
" @ScriptFullPath&get_processor_id" C'est ça ?
Par ce qu'en fait, pour en dire plus, j'ai fait un bot pour un jeu que je fait payer (enfin en argent du jeu) toute les semaines. Pour ca, j'envoi toute les semaines a mes "clients" un fichier qui active le bot pour une semaine (en changeant la clé du registre). Le problème, c'est que les personnes ayant deux PC copie l'activateur. Donc en fait, je cherchait une variable propre a chaque ordi pour empecher ça.
Ensuite, il suffit de faire un prog suicidaire qui copie la variable unique, la colle dans un endroit choisit, et se détruit. L'utilisateur incocient n'aura probablement pas fait de copie du fichier AVANT de l'utiliser. DOnc ça ira.
Fin bref, je suis pas sur que vous me suiviez, mais vous aidez aider
- sylvanie
- Niveau 11
- Messages : 1550
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Bon, c'est un concours de tolérence qui est lancé ou quoi ?
Autant le sujet de base est très intéressant que la finalité est une fois de plus hors des règles du forum !
LE BOT EST INTERDIT D AIDE SUR CE FORUM !!!!!!!!!!!!!!!!!!!!!!!!!
C'est un acte de tricherie, donc tombe sous la règle du programme malveillant.
Maintenant si il faut expliciter ce qu'on entend par programme malveillant, pas de soucis, ça peut enrichir le post des règles.
Pour la suite, je ne veux même pas en entendre parler.
Je ne ferme pas ce post, car le sujet est consacré avant tout àl'anti copie, mais là c'est une grosse mise en garde !
Autant le sujet de base est très intéressant que la finalité est une fois de plus hors des règles du forum !
LE BOT EST INTERDIT D AIDE SUR CE FORUM !!!!!!!!!!!!!!!!!!!!!!!!!
C'est un acte de tricherie, donc tombe sous la règle du programme malveillant.
Maintenant si il faut expliciter ce qu'on entend par programme malveillant, pas de soucis, ça peut enrichir le post des règles.
Pour la suite, je ne veux même pas en entendre parler.
Je ne ferme pas ce post, car le sujet est consacré avant tout àl'anti copie, mais là c'est une grosse mise en garde !
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Ouai...
Mais je ne demande pas d'aide pour faire un bot, juste pour un scipt d'anti-copie qui sera integré entre autre dans ce bot.
J'ai parlé du bot uniquement pour mieux expliqué ce que je voulais...
Enfin bref, le sujet en lui même est, quelque soit l'usage prévu, très interressant. Mais très compliqué
Mais je ne demande pas d'aide pour faire un bot, juste pour un scipt d'anti-copie qui sera integré entre autre dans ce bot.
J'ai parlé du bot uniquement pour mieux expliqué ce que je voulais...
Enfin bref, le sujet en lui même est, quelque soit l'usage prévu, très interressant. Mais très compliqué
Le programme semble marcher, mais... pas tout a fait encore, car il me traite de sale copieur
Le problème viendrait peut-être du registre, car la clé n'y est pas créé.
Le bug vient peut-être d'un espace en trop, car il y en a beaucoup, ce qui a causé pas mal de bug (facile a rectifier, il suffit d'enlever quelques espaces )
Mais la, je vois pas ce qui bloque...
Le problème viendrait peut-être du registre, car la clé n'y est pas créé.
Le bug vient peut-être d'un espace en trop, car il y en a beaucoup, ce qui a causé pas mal de bug (facile a rectifier, il suffit d'enlever quelques espaces )
Mais la, je vois pas ce qui bloque...
- sylvanie
- Niveau 11
- Messages : 1550
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Toujours dans l'optique de l'anticopie,
Les raisons qui déclenchent le "copieur" sont
- présence de la clé de registre sans le patch à la fin du prog (les 8 derniers octets 0"x1111111128021977"
- présence du patch sans la clé de registre (<= je pense que c'est ton cas , dans ce cas recompile le script pour avoir un exe flanbant neuf pouf efface les 8 derniers octets grâce à un éditeur héxa (pspad par exple)
- présence des deux, mais il existe une erruer de chiffrement ou corruption du patch
- cas découlant du cas 2 : l'exe n'est pas sur la machine qui l'a éxécuter la prelière fois ou la clé a été effacé
contrôle ces derniers points
Les raisons qui déclenchent le "copieur" sont
- présence de la clé de registre sans le patch à la fin du prog (les 8 derniers octets 0"x1111111128021977"
- présence du patch sans la clé de registre (<= je pense que c'est ton cas , dans ce cas recompile le script pour avoir un exe flanbant neuf pouf efface les 8 derniers octets grâce à un éditeur héxa (pspad par exple)
- présence des deux, mais il existe une erruer de chiffrement ou corruption du patch
- cas découlant du cas 2 : l'exe n'est pas sur la machine qui l'a éxécuter la prelière fois ou la clé a été effacé
contrôle ces derniers points
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
J'ai ouvert le fichier avec un éditeur hexa, et affacer les derniers chiffres. Mais ça ne change rien
Comme la clé n'est pas créé dans le registre, le problème ne peux venir que de:
- présence du patch sans la clé de registre (<= je pense que c'est ton cas , dans ce cas recompile le script pour avoir un exe flanbant neuf pouf efface les 8 derniers octets grâce à un éditeur héxa (pspad par exple)
- présence des deux, mais il existe une erruer de chiffrement ou corruption du patch
Mais... Je n'en sais pas plus
Comme la clé n'est pas créé dans le registre, le problème ne peux venir que de:
- présence du patch sans la clé de registre (<= je pense que c'est ton cas , dans ce cas recompile le script pour avoir un exe flanbant neuf pouf efface les 8 derniers octets grâce à un éditeur héxa (pspad par exple)
- présence des deux, mais il existe une erruer de chiffrement ou corruption du patch
Mais... Je n'en sais pas plus
- sylvanie
- Niveau 11
- Messages : 1550
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
si la clé de registre n'existe plus et que les 8 derniers octets de tag à la fin d'exe n'existe plus, il ne doit plus y avoir de pb.
Maintenant il ne te reste plus qu'à debuger à coups de msgbox et / ou de filewrite dans un fichier ...
Maintenant il ne te reste plus qu'à debuger à coups de msgbox et / ou de filewrite dans un fichier ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Bizard, le problème semble venir de la:
Hors, le registre est clean...
EDIT: Le forum refuse d'afficher ce que je veux lui donner !
Les balises code ne change rien.
Peu-être en citant ?
Entre Then et bidouille
Code : Tout sélectionner
ElseIf $ctrl <Then> bidouille
EDIT: Le forum refuse d'afficher ce que je veux lui donner !
Les balises code ne change rien.
Peu-être en citant ?
Rien a faire Il manque "copieur ( ) ; pas de tag en fin de fichier , mais présence de la registrie"ElseIf $ctrl <Then> bidouille
Entre Then et bidouille
- TommyDDR
- Modérateur
- Messages : 2087
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Script Anti-copie
@sylvanie :
Bonjour,
peut-tu m'expliquer ton code :
Je voudrais savoir d'ou sortait le tableau $CmdLine
Merci.
Edit : J'ai trouver pour le $CmdLine ^^' ce sont les parametres envoyé au programme.
$CmdLine[0] = Nombre total de parametres
$CmdLine[1] = 1er parametre
$CmdLine[2] = 2eme parametre
$CmdLine[x] = xeme parametre
Mais j'ai une autre question :
Si le fichier est copier avan d'être executer pour la 1ere fois... la protection est inutile ? :/
Bonjour,
peut-tu m'expliquer ton code :
Code : Tout sélectionner
;fichier patch me.au3
AutoItSetOption ( " TrayIconHide " , 1 )
AutoItSetOption ( " Onexitfunc " , " my_exit " )
if $CmdLine[0] <> 1 then Exit 1
$fic = FileOpen ( $CmdLine[1] , 17 )
if $fic <> - 1 Then
FileWrite ( $fic , Binary ( " 0x1111111128021977 " ) )
FileClose ( $fic )
EndIf
exit 0
Func my_exit ( )
;Run ( @ScriptDir& " \del_tmp.bat " , @ScriptDir , @SW_HIDE )
Run ( @ComSpec& " /c del /F " &FileGetShortName ( @ScriptFullPath ) , @ScriptDir , @SW_HIDE )
EndFunc
Merci.
Edit : J'ai trouver pour le $CmdLine ^^' ce sont les parametres envoyé au programme.
$CmdLine[0] = Nombre total de parametres
$CmdLine[1] = 1er parametre
$CmdLine[2] = 2eme parametre
$CmdLine[x] = xeme parametre
Mais j'ai une autre question :
Si le fichier est copier avan d'être executer pour la 1ere fois... la protection est inutile ? :/
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- sylvanie
- Niveau 11
- Messages : 1550
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Re: [..] Script Anti-copie
exacte, c'est inutile.
L'anticopie à la volée sur un exe sur la machine cliente, c'est un peu l'histoire de l'oeuf et de la poule.
Ce genre de méthode est surtout utilisée lors de flashage de soft / OS dans de l'embarqué en usine pour lutter contre le reprogramming. Là ça le fait car on vend au client le produit tout installé, donc en gros le patch est déjà fait.
Pour faire évoluer ce modèle vers du PC, il faudrait imaginer un serveur avec l'exe sans patch, etdes client qui déclinerait certaines info, comme le numéro de série microprocesseur,ou autre ..., procéder au patch sur le serveur puis envoyer au client l'exe tout patché.
Après on peut partir dans plein de scénarion : l'exe ne peut fonctionner correctement sans s'être fait patcher ...
Mais bon n'oublions pas que sur PC, contrairement à de l'embarqué, le principal ennemi est l'aspect "Open" qui permet par exemple de passer par un désassembleur, puis analyser la défense, puis la contourner ...
L'anticopie à la volée sur un exe sur la machine cliente, c'est un peu l'histoire de l'oeuf et de la poule.
Ce genre de méthode est surtout utilisée lors de flashage de soft / OS dans de l'embarqué en usine pour lutter contre le reprogramming. Là ça le fait car on vend au client le produit tout installé, donc en gros le patch est déjà fait.
Pour faire évoluer ce modèle vers du PC, il faudrait imaginer un serveur avec l'exe sans patch, etdes client qui déclinerait certaines info, comme le numéro de série microprocesseur,ou autre ..., procéder au patch sur le serveur puis envoyer au client l'exe tout patché.
Après on peut partir dans plein de scénarion : l'exe ne peut fonctionner correctement sans s'être fait patcher ...
Mais bon n'oublions pas que sur PC, contrairement à de l'embarqué, le principal ennemi est l'aspect "Open" qui permet par exemple de passer par un désassembleur, puis analyser la défense, puis la contourner ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.