drasche | Ne criez pas au sacrilège SVP
J'ai créé une DLL dont le code fonctionne très bien en EXE standalone, il s'agit d'une bête fonction de cryptage de mot de passe. Voici la déclaration:
Code :
- Encode proc strPwd:DWORD, strBuf:DWORD, strKey:DWORD, lPwdLen:DWORD, lKeyLen:DWORD, fEncode:BYTE
|
D'abord les pointeurs vers: un password, un buffer de sortie, une clé de cryptage, la longueur du password, la longueur de clé, et finalement un flag qui dit si on crypte ou décrypte. Les pointeurs sont supposés déjà alloués, sachant que la taille de strPwd est identique à la taille de strBuf sinon ça foire
Je me suis basé sur les exemples fournis avec MASM32, le fichier DEF est on ne peut plus simple également:
Code :
- LIBRARY dllcrypt
- EXPORTS Encode
|
Ensuite... la DLL est destinée à être exploitée par une application cliente VB6 dont voici le code complet:
Code :
- Option Explicit
- Private Declare Sub Encode Lib "dllcrypt.dll" ( _
- ByRef strPwd As Any, _
- ByRef strBuf As Any, _
- ByRef strKey As Any, _
- ByVal lPwdLen As Long, _
- ByVal lKeyLen As Long, _
- ByVal fEncode As Byte)
- Public Sub Main()
- Dim strPwd As String
- Dim strKey As String
- Dim strBuf As String
- Dim lPwdLen As Long
- Dim lKeyLen As Long
- ' Initialise strings
- strPwd = "AAAAAAAA"
- strKey = "11111111"
- ' Get string lengths
- lPwdLen = Len(strPwd)
- lKeyLen = Len(strKey)
- ' Initialise output buffer
- strBuf = Space$(lPwdLen)
- ' Encode password
- Call Encode(strPwd, strBuf, strKey, lPwdLen, lKeyLen, 1)
- ' Display buffer
- Debug.Print strBuf
- ' Decode password
- Call Encode(strBuf, strPwd, strKey, lPwdLen, lKeyLen, 0)
- ' Display password
- Debug.Print strPwd
- End Sub
|
Pour le Declare, je me suis inspiré de l'API CopyMemory qui prend n'importe quoi en entrée et sortie vu que ce sont des pointeurs void. J'ai essayé de remplacé le type Any par String mais le résultat est le même : une belle GPF des familles.
Si vous avez des idées (sauf la corde ), merci d'avance ![:) :)](https://forum-images.hardware.fr/icones/smile.gif) Message édité par drasche le 17-04-2003 à 09:25:56 ---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
|