protéger ses pixels

Programmation avancée de jeux en PureBasic

souhaitez vous protéger vos pixels savamment assemblés ?

oui, je le veux
9
41%
non, car j'ai ma propre méthode top secrète
7
32%
je m'en fiche car je met tout en data
6
27%
 
Nombre total de votes : 22

beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

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 ?? 8O
je ne sais pas moi ! :lol:
Mais en partant du principe que ce qui est fait par l'homme pouvant être défait pas un autre homme, j'imagine que la solution existe...

heu, par une lecture systématique de gardien à gardien( je comprend à peine ce que vient de tapoter là, mais çà me plait ;) )
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je pose la question, parceque au debut, je pensai que peut etre il y avait une signature dans les exécutables créés par le compilateur de Purebasic
ceci aurait ete une bonne idée d'ailleurs

pour pleins de bonne raisons...

la première, pouvoir offrir la possibilité d'utiliser une dll seulement au développeurs en Purebasic par exemple :)

enfin plein de truc dans le genre quoi ... :lol:
Guac
Messages : 21
Inscription : dim. 03/août/2008 18:33

Message par Guac »

Au temps pour moi...

Je pensais que tu essayais d'appeler la fonction "MessageBoxA" avec ton script, d'où ma confusion avec la dll user32.
Je n'y connais pas grand chose alors ne m'en tiens pas rigueur si ce qui suit ne te semble qu'un ramassis de bêtises.

D'après ce que j'ai pu voir, la dll cryptor contient 6 fonctions:
CryptAString
DecryptAString
CryptAFile
DecryptAFile
CryptFileBin
DecryptFileBin

Donc c'est une de celle-ci qu'il faut appeler pour tes tests.
Par contre je ne sais pas quels arguments elles prennent ( j'ai pas cherché, j'avoue).
Ensuite, je ne sais pas si tu peux importer directement cette dll de cette façon, peut être qu'elle a des prérequis, ou peut-être faut il utiliser DLLimporter pour en obtenir un .pbl ...

Mais tout ça c'est pas vraiment de mon niveau, mieux vaut alors que je m'abstienne de te conseiller plus loin.
En espérant t'avoir un peu aidé quand même.
Avatar de l’utilisateur
Ouaf-Ouaf
Messages : 212
Inscription : dim. 11/juil./2004 9:07

Message par Ouaf-Ouaf »

avant tout la première me semble plus importante(en data ou fichiers joints): les plupart des jeux conçu en C, voit leurs images illisibles, et même des logiciels gratuits. Je ne cherche pas une protection de l'espace, style muraille de chine qui en impose, mais juste une élégante petite clôture en bois Wink
Ouki, je comprends tout à fait :p

J'ai fait mon propre format pour stocker mes images, dd'une part par ce que c'est plus elegant ( c'est p'tetre irrationnel mais ça le fait lol ), et aussi par ce que j'avais besoin de manipuler facilement la couleur des pixels.

Recement, j'leur ai appliqué une compression toute con mais qui decouragerait les ... emprunteurs malpolis ( qui te demanderait pas ;) ) de piller toute tes ressources. (j'explique après)

Avec ça "ils" peuvent evidement toujours screenshouter, mais vraiment faut être motivé pour se tapper tout le detourage après..


Mes sprites sont structurés comme ça :
1) L'En-tête : Largeur, Longueur (+ d'autres dans mon cas)

2) La liste des couleurs RGB() utilisées : on utilise jamais 1 millions de couls sur un seul sprite, moi j'aime bien me limiter à 256 nuances, pour que la suite soit plus legère.

3) La grille qui refère a un num de la liste. (Un .byte donc, si tu utilises que 256 couls ).
Après ça, pour compacter mon jeu ( Optimiser dans le sens du... temps de telechargement :p, quand on fait un petit jeu amateur, j'pense que c'est pas negligeable ), j'ai commencé par remplacer les espaces transparents (par exemple une ligne de 30 pixels transparents) par :

1 .byte (255 chez ouam) qui indique que le chiffre suivant est le nombre de pixels transparents (j'utilise le 0) à sauter lors de la restitution des données sur un vrai sprite.

Comme mes images ont bcp de transparence, si t'affiches le resultat (déjà faut connaitre le bon Width et la liste) sans utiliser les sauts, ça donne une bouillie de pixels comme ça :

Image

La methode est extensible à touts pixels qui se repetent plus de .. 3 fois, mais bon, si tu charge enormement de sprites, t'auras plus le chargement instantané des .PNG classiques :p.

A partir de là, tu peux aussi enregistrer les listes separées des dimensions du sprite et des grilles :p, là faudrait vraiment se prendre la tête pour recupperer tes données ! mais bon j'irais pas jusque là x)


J'ai decouvert ce sympatique bouillitage de sprite en cherchant juste à les compacter ;), apres, tu peux toujours ajouter d'autres trucs, mais ce serat au detriment de la vitesse ou de la taille :s
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

Ouaf-Ouaf a écrit :
J'ai fait mon propre format pour stocker mes images, dd'une part par ce que c'est plus elegant ( c'est p'tetre irrationnel mais ça le fait lol ), et aussi par ce que j'avais besoin de manipuler facilement la couleur des pixels.
merci pour toutes ces explications, j'entrevois, un peu, la méthode. :) Quand Fred aura terminé la 4.30, je lui soumettrai ce problème de protection...


hors sujet: xperience2003 nous livre un jeu en beta, Robo jet( scrolling multi-directionnel) touche F1 à F5 pour changement armes( il est amusant de constater les problèmes de collision de ces dernières avec le décor :) )
http://www.purebasic.fr/german/viewtopi ... c&start=10
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

En France, un particulier peut crypter comme il le désire avec une clé à dix millions de bits s'il le veux, mais si la clé dépasse 128 bits,on doit en déposer une copie à un tiers de confiance agréé par le gouvernement.


:roll:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Ni a t il pas moyen de controler la touche Imprim Ecran ? (#vk_snapshot ?)
Ne peut-on pas dire à notre programme un truc genre :

Code : Tout sélectionner

  If KeyboardReleased(#VK_SNAPSHOT)
    SetClipboardImage(image_leure$)
   EndIf
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Ar-S a écrit :Ni a t il pas moyen de controler la touche Imprim Ecran ? (#vk_snapshot ?)
Ne peut-on pas dire à notre programme un truc genre :

Code : Tout sélectionner

  If KeyboardReleased(#VK_SNAPSHOT)
    SetClipboardImage(image_leure$)
   EndIf
et ça changera quoi ?? 8O

il suffit d'attribuer une autre touche !!
Le purebasic permet aisement de faire une capture d'ecran avec la touche qu'on veux ..

certain prg, permettent le changement de parametre des touches .. :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Dobro a écrit :
Ar-S a écrit :Ni a t il pas moyen de controler la touche Imprim Ecran ? (#vk_snapshot ?)
Ne peut-on pas dire à notre programme un truc genre :

Code : Tout sélectionner

  If KeyboardReleased(#VK_SNAPSHOT)
    SetClipboardImage(image_leure$)
   EndIf
et ça changera quoi ?? 8O

il suffit d'attribuer une autre touche !!
Le purebasic permet aisement de faire une capture d'ecran avec la touche qu'on veux ..

certain prg, permettent le changement de parametre des touches .. :)
Heu oui mais la personne lambda utilisera print screen, pas autre chose pour faire ses captures, ou alors un programme spécial screen shot et alors là, c'est autre chose.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Je suis désolé mais j'avoue ne pas comprendre l'interêt de crypter a tout prix les images:?. il n'y a qu'a regarder les jeux neo-geo et CPS-III sont crypter et pourtant on trouve maintenant de rip des graphismes sans aucun problème. Et encore dans leur cas au depart il y a un cryptage des données hardware. Tout ce qu'on peut faire nous c'est cryptage software, et un coup de désassembleur et on trouve la technique pour decrypter. Bref je préfère me concentrer sur le jeu que sur une pseudo protection. car souvant lorsque tu rajoutes ce genre de protection du degrade la qualité du jeux. temps de chargement de sprite, ressource processeur, temps de developpement. je ne trouve que des inconvenients. C'est un peu comme itunes. Moi je suis pour acheter ma musique (c'est ce que je fais), mais les DRMs ça me broutte car pas compatible avec la majorité des lecteurs mp3. donc en gros ce sont les personnes qui sont honnete qui sont enmerder part les protections, pas ceux qui pirate et qui crack qui a la limite ça les amuses. bref c'est un faut problème cette protection, non ? :P :wink:
Anonyme

Message par Anonyme »

je prend le topic en plein vol , tu auras beau crypté des images avec des clé de 1000 gigabits de taille , y a bien un moment ou l'image est en clair , càd à l'affichage , lors de l'envois à l'instruction DirectX , sdl , ou opengl. le mec qui veut vraiment récup les image, fera un émulateur de la fonction de rendu , et paf , ta protection tombe à l'eau.
ca rejoins ce que dis Thyphoon.
Avatar de l’utilisateur
Ouaf-Ouaf
Messages : 212
Inscription : dim. 11/juil./2004 9:07

Message par Ouaf-Ouaf »

Il a l'air bien conscient de tout ça.

Hacker c'est surement trés intéressant.. Tout autant que programmer.
Et le format d'image c'est.. enfin on peut aussi trouver ça trippant ! :p

Pi.. Je trouve que le critère esthétique de "comment on presente son produit" .. même si c'est totalement accessoire.. Reste.. ben intéressant.

Par exemple moi je trouverais ça moche d'avoir mes tout mes fichiers en .png lol.

Pour le temps de chargement, moi ça me derange pas du tout. Si j'avais des transitions instantanées d'un écran à l'autre, j'en creerais une artificielle. Sans ça je trouve ça strange !

Le calcule des sprites peut être une occasion de presenter des infos au joueur sur le prochain niveau/tableaux. Bien sûr faut savoir doser, c'est comme tout. Faut pas que ca en devienne frustrant ;)


Et pi si un gars veux s'amuser à recuperrer tes infos, grand bien lui fasse, si c'est ça façon à lui de s'amuser ! lol

D'ailleur grace a un lien que m'as filé dobro je vais peut être pouvoir assouvir mon fantasme de depuis toujours. Recupperer les musiques de Space Junky :D :D. J'espère que le gars a utilisé des procedures :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Ouaf-Ouaf a écrit : Par exemple moi je trouverais ça moche d'avoir mes tout mes fichiers en .png lol.
je rappel qu'en pure basic on peut intégrer ses images au prg , ce qui evite la miriade de fichier png, jpg accompagnant le prg

le prg contiens tout les medias en lui même , c'est déjà pas mal comme protection :)



voir fonctions

CatchSound()
CatchSprite()
CatchImage()
CatchXML()

:D
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Et puis quand on se fait copier, c'est que la gloire est arrivée! :D
Et çà, cela n'a pas de prix! 8)
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Message par TazNormand »

Salut,

bon désolé de "déterrer" ce topic, mais pour protéger tes images des snapshots (screenshots comme vous voulez) fait pas Fraps ou ou logiciel de capture, pourquoi tu n'insères pas directement un logo en permanence dans ton logiciel/jeu ?

Une incrustation comme on en voit sur les FPS (niveau de santé).

Je joue à Enemy Territory (1er du nom), et à une époque je faisais partie d'une Team (désolé de raconter ma vie) on avait inséré le logo de notre team dans le "HUD", c'est à dire en incrustation sur l'écran ; il apparaissait en permanence.

Pour le cryptage de tes images... Pas facile d'empêcher le pompage de tes créations, tu peux essayer de te faire une petite routine qui enregistre tes images (le fichier image) à l'envers : le dernier octet devient le premier, ce qui fait sauter les entêtes de format puisqu'ils sont tout à la fin du fichier et inversés.
Dans ton jeu, tu n'as plus qu'a appliquer ta fonction d'inversion pour que les données soient remises dans le bon ordre.

Je ne suis pas un expert, je soumets juste une idée.

voilà
Répondre