Page 3 sur 3

Re: [TUTO] Application à base de plugin

Publié : ven. 20/juil./2012 18:11
par falsam
Bonjour Lepiaf. En Php il existe pas mal d'applications de blogging par exemple sur lesquelles se greffe des plugins tiers. Parfois il arrive qu'un de ces plugins pertube le coeur de l'application Php voir, pirate des informations utilisateurs. A toi de savoir si tu fais confiance ou pas au créateur du plugin. Le web est là pour se faire rapidement une opinion dans ce cas précis.

G_Rom a tout dit "le problème est donc insoluble. dans un plugin , tu mets ce que tu veux... c'est clair qu'en terme de sécurité , c'est pas top..."

Re: [TUTO] Application à base de plugin

Publié : ven. 20/juil./2012 20:17
par lepiaf31
G-Rom a écrit : regarde sur le net , fait un plugin pour 3dsmax. qu'est ce qui t'empêche de faire un virus en guise de plugin ? rien.
Je ne sais pas, je ne connais pas les plug-in 3ds max mais peut-etre y a t-il une surcouche ? En tout cas, j'ai pas mal réfléchi à faire cela ces derniers temps et c'est un des grand avantage du JAVA. On peut faire un byte code et l'utiliser en tant que plus-in tout en controlant ce que peut faire ce plug-in (ca va de la gestion droits d'accès aux fichiers à la gestion du réseau).

Voilà, c'était pas pour critiquer, mais seulement pour apporter un complément ;)

Re: [TUTO] Application à base de plugin

Publié : ven. 20/juil./2012 20:37
par G-Rom
tu as bien fait. Si on veut se rapprocher de java ( que je ne supporte pas au passage ) , il fraudais se rapproché du processeur pour avoir accès au byte code du programme, faire des analyse avec des motifs de code , avoir une heuristique solide , etc... codé un antivirus quoi :D
le java, comme c'est interpréter par une machine virtuelle , tu peut intervenir en amont.

@++

Re: [TUTO] Application à base de plugin

Publié : dim. 22/juil./2012 17:20
par blendman
Salut

ça y est, ça marche nickel (en changeant CallFunction), encore merci ;).

Re: [TUTO] Application à base de plugin

Publié : mar. 24/juil./2012 4:48
par venom
Merci pour ce tuto G-Rom :wink:
Comme d'habitude.






@++

Re: [TUTO] Application à base de plugin

Publié : mar. 24/juil./2012 11:39
par Backup
Merci pour ce Tuto :)

Re: [TUTO] Application à base de plugin

Publié : ven. 03/juil./2015 8:14
par blendman
salut

Je poste juste pour signaler qu'avec la 5.31, on ne peut plus utiliser de type natifs avec les pointeurs, donc certaines parties du code sont à réadapter ;).

Du coup, j'ai une erreur sur ce code-ci :

Code : Tout sélectionner

Procedure.i imageToArray(pbImage.i, width.i, height.i)

  *nArray = AllocateMemory( (width * height) * 4 ) ; RGBA
 
  If StartDrawing(ImageOutput(pbImage))
    
    DrawingMode(#PB_2DDrawing_AlphaBlend)
    
    For y = 0 To height -1
      For x = 0 To width -1
        color.l = Point(x,y)
        
        PokeC( (*nArray + (x*4) + ImageWidth(pbImage) * (y*4))+0 , Red(color) )
        PokeC( (*nArray + (x*4) + ImageWidth(pbImage) * (y*4))+1 , Green(color) )
        PokeC( (*nArray + (x*4) + ImageWidth(pbImage) * (y*4))+2 , Blue(color) )
        PokeC( (*nArray + (x*4) + ImageWidth(pbImage) * (y*4))+3 , Alpha(color) )
        
      Next
    Next
    StopDrawing()
  EndIf
 
  ProcedureReturn *nArray
EndProcedure
à la ligne

Code : Tout sélectionner

PokeC( (*nArray + (x*4) + ImageWidth(pbImage) * (y*4))+3 , Alpha(color) )
J'ai le message "overflow in a dynamically allocated memory block"

Comme on ne peut plus mettre *nArray.c = AllocateMemory( (width * height) * 4 ) ; RGBA
j'imagine que le soucis vient de là ^^.
Mais je ne sais pas comment corriger ce pb.

Re: [TUTO] Application à base de plugin

Publié : ven. 03/juil./2015 9:41
par G-Rom
Quelle taille fait ton image ?

Re: [TUTO] Application à base de plugin

Publié : ven. 03/juil./2015 9:55
par blendman
G-Rom a écrit :Quelle taille fait ton image ?
1024*768

Re: [TUTO] Application à base de plugin

Publié : ven. 03/juil./2015 11:07
par G-Rom
Le problème dois venir d'ailleurs, j'ai pas de soucis.

Re: [TUTO] Application à base de plugin

Publié : ven. 03/juil./2015 12:46
par Ollivier
La taille en octet du caractère qui passe de 8 bits (mode ASCII) à 16 bits (mode UNICODE)?

Tu as alors un dépassement de 1 octets dans la zone allouée lors du traitement du dernier caractère de la zone.

>> Tester PeekA() / PokeA()

Re: [TUTO] Application à base de plugin

Publié : ven. 03/juil./2015 14:20
par G-Rom
Bien vu. le problème est surement là.

Re: [TUTO] Application à base de plugin

Publié : ven. 03/juil./2015 23:16
par G-Rom
C'est surtout pour assuré l'ordre des couleurs , comme on ne maitrise pas l'interne de PB , j'ai préféré mouliné à la main chaque composante, encore plus rapide aurais été des copymemory() par ligne.

Re: [TUTO] Application à base de plugin

Publié : sam. 04/juil./2015 8:36
par blendman
Je vais tester les listes pour voir ;).
Spock a écrit :(fo que j'me tire dla , vais finir par reprendre le virus... fo pas, fo pas .. )
mais non, reviens :)
c'est sans danger, le virus purebasic :mrgreen:

Re: [TUTO] Application à base de plugin

Publié : lun. 20/juil./2015 10:26
par blendman
je suis tombé sur ce code, qui permet de transférer une image d'une dll vers un programme purebasic (donc l'inverse est aussi faisable).

Du coup, je me suis dit que c'était beaucoup plus simple pour modifier une image via une dll ;)

La dll (nommée image.dll ):

Code : Tout sélectionner

ProcedureDLL.i ReturnImage (w, h, depth, backcolor)
 Protected *this
 Protected tmp = CreateImage(#PB_Any, w, h, depth, backcolor)
 
 UsePNGImageEncoder()       
 *this = EncodeImage(tmp, #PB_ImagePlugin_PNG)
 FreeImage(tmp)
 ProcedureReturn *this
EndProcedure

ProcedureDLL FreeMemoryDLL (*add)
 FreeMemory(*add)   
EndProcedure

Le pragramme :

Code : Tout sélectionner

Prototype ReturnImage(w,h,d,bkg)
Prototype FreeMemoryDLL(*add)

UsePNGImageDecoder()

OpenLibrary(0, "image.dll")
Global ReturnImage.ReturnImage = GetFunction(0, "ReturnImage")
Global FreeMemoryDLL.FreeMemoryDLL = GetFunction(0, "FreeMemoryDLL")

*this = ReturnImage(256,256,24,#Red)
CatchImage(0, *this)
FreeMemoryDLL(*this)


OpenWindow(0,0,0,ImageWidth(0),ImageHeight(0),"",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ImageGadget(0,0,0,0,0,ImageID(0))
Repeat:Until WaitWindowEvent() = #PB_Event_CloseWindow
Edit : le lien vers le sujet
http://www.purebasic.fr/english/viewtop ... 13&t=61904