Page 3 sur 4
Publié : ven. 03/oct./2008 15:01
par Ar-S
Dobro a écrit :beauregard a écrit :
J'ai une idée*: un code gardien, chargé de surveiller tout les sites d'échanges et dès qu'une application pb est détecté, hop, le gardien rentre en action...
ha ? comment tu fais pour reperer une application Pb ??

+1 si tu trouves t'es M$$
Je mets mon logiciel coco_le_logiciel_ultime.exe dans un fichier appli.zip que je partage, je vois pas comment ton gardien serait voir que dans le zip y'a un soft PB...
Publié : dim. 09/nov./2008 11:06
par Mytic
Bonjour,
j'ai 3 solutions à proposer :
1)
ça remplace l'image mise dans le Clipboard avec une image noire de 100x100.
2) brouiller le DC(0) !
3)
utiliser l'accélération matériel pour l'affichage !
Donc toutes captures d'écran devient impossible !
Exemple : quand vous visionnez un film sur PC , une fois que vous capturez l'image , vous aurez toujours une image noire légèrement mauve.

Publié : dim. 09/nov./2008 15:49
par beauregard
merci

Publié : dim. 09/nov./2008 16:52
par kwandjeen
Pour les touches et le clipboard on peut tout intercepter donc c'est très facile bloquer ou plutot tromper comme le code posté ci-dessus
J'ai fait une sorte de keylogger, je scanne le clipboard pour savoir les infos qui y sont dedans comme ça s'il s'agit d'une image tu la bloques mais tu laisse faire pour du texte. De plus tu peux demander quelle application à mis l'image dans le clipboard.
Cherche dans le forum j'ai posté ça il n'y a pas longtemps
Code : Tout sélectionner
process_clipboard = GetClipboardOwner_() ; recherche process qui utilise le presse_papier
Pour intégrer un marqueur si tu veux à l'image
Code : Tout sélectionner
SystemParametersInfo_(#SPI_GETWORKAREA, 0, @Taille_Ecran.RECT, 0)
Largeur_Ecran = Taille_Ecran\right - Taille_Ecran\left
Hauteur_Ecran = Taille_Ecran\bottom - Taille_Ecran\top
DC = GetDC_(0) ;en étant à 0 on retrouve le display de l'écran entier
CreateImage(0, Largeur_Ecran, Hauteur_Ecran)
Dessin = StartDrawing(ImageOutput(0))
BitBlt_(Dessin, 0, 0, Largeur_Ecran, Hauteur_Ecran,DC, Taille_Ecran\left, Taille_Ecran\top, #SRCPAINT)
StopDrawing()
ReleaseDC_(0, DC) [code]
[/code]
http://www.purebasic.fr/french/viewtopi ... ht=malware
Publié : mar. 11/nov./2008 13:09
par beauregard
kwandjeen a écrit :Pour les touches et le clipboard on peut tout intercepter donc c'est très facile bloquer ou plutot tromper comme le code posté ci-dessus
J'ai fait une sorte de keylogger, je scanne le clipboard pour savoir les infos qui y sont dedans comme ça s'il s'agit d'une image tu la bloques mais tu laisse faire pour du texte. De plus tu peux demander quelle application à mis l'image dans le clipboard.
Cherche dans le forum j'ai posté ça il n'y a pas longtemps
Code : Tout sélectionner
process_clipboard = GetClipboardOwner_() ; recherche process qui utilise le presse_papier
Pour intégrer un marqueur si tu veux à l'image
Code : Tout sélectionner
SystemParametersInfo_(#SPI_GETWORKAREA, 0, @Taille_Ecran.RECT, 0)
Largeur_Ecran = Taille_Ecran\right - Taille_Ecran\left
Hauteur_Ecran = Taille_Ecran\bottom - Taille_Ecran\top
DC = GetDC_(0) ;en étant à 0 on retrouve le display de l'écran entier
CreateImage(0, Largeur_Ecran, Hauteur_Ecran)
Dessin = StartDrawing(ImageOutput(0))
BitBlt_(Dessin, 0, 0, Largeur_Ecran, Hauteur_Ecran,DC, Taille_Ecran\left, Taille_Ecran\top, #SRCPAINT)
StopDrawing()
ReleaseDC_(0, DC) [code]
[/code]
http://www.purebasic.fr/french/viewtopi ... ht=malware
heu, c'est un peu compliqué, et cela ralentis sévèrement.
La méthode simplette qui fonctionne, intégré dans le jeu vers l'infini,
juste après le début de la boucle principale, que voici:
Code : Tout sélectionner
; ******************************************************************************************************
Repeat ; Boucle principale
; ******************************************************************************************************
Event= WindowEvent ()
le précieux petit code que voilà:
Code : Tout sélectionner
If CreateImage(0,26,20)
StartDrawing(ImageOutput(0))
Box(0,0,26,20,RGB(255,255,255))
Circle(13,10,5,RGB(255,0,0))
StopDrawing()
SetClipboardImage(0)
EndIf
il y a toutefois un truc qui me chiffonne, c'est que l'image 0 est fabriquée en permanence, cela ne semble pas entraver quoi que ce soit. Qu'en pensez-vous?
Les commandes suivantes sont mystérieuses pour moi:

Publié : mar. 11/nov./2008 19:14
par Mytic
Vous faites cette opération qu'une seule fois :
Code : Tout sélectionner
If CreateImage(0,26,20)
StartDrawing(ImageOutput(0))
Box(0,0,26,20,RGB(255,255,255))
Circle(13,10,5,RGB(255,0,0))
StopDrawing()
EndIf
après vous utilisez cette fonction en boucle :

Publié : mar. 11/nov./2008 20:28
par Le Soldat Inconnu
Le cryptage le plus bête consiste à utiliser le système de compression de fichier de PB.
Ensuiet, si tu veux corser, tu véroles la compression en ajoutant ou en modifiant certaine valeur.
Par exemple, tous les 7 bytes, la valeur est inversé avec un XOR
Et voilà, déjà, faut avoir un bon niveau en programmation pour retrouver l'image source.
A mon avis, simplement la compression suffit
Publié : mar. 11/nov./2008 22:06
par beauregard
Mytic a écrit :après vous utilisez cette fonction en boucle :

ah oui, maintenant c'est bien clair dans mon esprit, merci
Le Soldat Inconnu a écrit :Le cryptage le plus bête consiste à utiliser le système de compression de fichier de PB.
heu, oui, mais comment procède-t-on ? s'agirait-il de l'Encodage du fichier source( texte brut ou UTF-8 ) ?
Publié : mar. 11/nov./2008 23:40
par Le Soldat Inconnu
Je parlais pour les fichiers images source *.jpg ou *.bmp ou ce que tu veux.
Si tu les compresses avec le packer de pb, déjà, ca protége pas mal
Après pour le printscreen, ca devient plus compliqué, faut vider le presse papier dès qu'on voit qu'il y qlqchose dedans
Publié : mer. 12/nov./2008 14:25
par beauregard
Le Soldat Inconnu a écrit :Je parlais pour les fichiers images source *.jpg ou *.bmp ou ce que tu veux.
Si tu les compresses avec le packer de pb, déjà, ca protége pas mal
Après pour le printscreen, ca devient plus compliqué, faut vider le presse papier dès qu'on voit qu'il y qlqchose dedans
ah, et bien cela me rassure

. Je me souviens, c'était au mois de juin, j'avais quelques difficultés pour y arriver, pis je me suis rendu compte de mon erreur( ne pas confondre CatchSprite et CatchImage)...
Publié : mer. 12/nov./2008 18:05
par Ar-S
La plupart des screenshot sont faites sur le web..
il doit pas être trop dur de repérer les handle de IE, Firefox, Opera, et Chrome (les 4 principaux navigateurs sur windows) et de surveiller le clavier.
Si printscreen est pressé alors vider le clipboard.
Vous pensez pas que c'est gérable dans un thread en boucle ?
Publié : mer. 12/nov./2008 19:00
par Ar-S
Bon encore plus con que mon idée précédente, vider le clipboard toutes les demi-secondes... ça marche bien...
Bon ça empeche aussi tout copier/coller mais bon..
Code : Tout sélectionner
;Nettoyage du clipboard toute les demi sec.
; Par Ar-S - PB 4.20
Enumeration
#Window_0
EndEnumeration
Procedure VideClipboard()
Repeat
ClearClipboard()
Delay (500)
ForEver
EndProcedure
If OpenWindow(#Window_0, 619, 413, 192, 69, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
If CreateGadgetList(WindowID(#Window_0))
EndIf
CreateThread(@VideClipboard(), 1)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Window_0
CloseWindow(#Window_0)
End
EndSelect
EndSelect
ForEver
EndIf
Publié : mer. 12/nov./2008 22:15
par beauregard
Ar-S a écrit :Bon encore plus con que mon idée précédente, vider le clipboard toutes les demi-secondes... ça marche bien...
Bon ça empeche aussi tout copier/coller mais bon..
testé avec le jeu vers l'infini avec joie

je pense que tu as trouvé là une bien belle solution. Faut juste ne pas oublier de cocher la case "activer la gestion des threads" dans options du compilateur pour éviter tout soucis comme indiqué dans la doc.
un autre truc de la doc:
Note: Les threads doivent être utilisés avec précaution, car il est possible que des ressources partagées (mémoire, fichiers, variables etc..) soient accédées au même moment ce qui causera des résultats aléatoires. Les commandes relatives aux 'Mutex' peut être utilisées pour synchroniser ces ressources partagées.
Publié : mer. 12/nov./2008 22:54
par case
pour moi c'est quand même une perte de ressources pour rien
je suis presque sur que la plupart des logiciels de copie d'écran n'utilisent pas le clipboard
http://www.clubic.com/telecharger-fiche ... creen.html
voila avec ce genre de truc je vois pas trop comment tu peux protéger tes screen ingame.
Publié : mer. 12/nov./2008 23:42
par Ar-S
Tu as raison Case,
Un logiciel de ce genre ne permet pas à mon soft d'éviter la capture je viens de tester. Mais bon, ça élimine déjà pas mal de monde voulant capturer des images sans soft annexes.
P.S : je ne connaissais pas ce logiciel "printscreen", il est excellent
Au pire faire le barbare (droopy lib necessaire pour tester ce code) en ajoutant
Code : Tout sélectionner
PS$=Str(GetPidProcess("printscreen.exe"))
If PS$<>"0"
KillProcess(Val(PS$))
MessageRequester("Info","Attention, un logiciel de capture d'ecran a été detecté et fermé"+Chr(10)+"L'utilisation d'un tel logiciel est interdit blablabla lors de l'utilisation"+Chr(10)+"de mon super jeu de la mort qui tue que je veux rien qu'on me pique même si c'est impossible ",#MB_ICONINFORMATION)
Else
MessageRequester("Nop","Pas de printscreenquitourne",#MB_ICONINFORMATION)
EndIf
@Beauregard,
Je ne maitrise pas du tout l'emploi des thread et mutex, ça reste un peu du chinois pour moi dans la doc

Mais c'était pour l'exemple
