Traduction Vb.net > Vb6 (Steam)

ianis24 Messages postés 87 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 13 janvier 2011 - 1 avril 2009 à 22:07
ianis24 Messages postés 87 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 13 janvier 2011 - 12 avril 2009 à 17:30
Bonjour je souhaiterai avoir une traduction la plus complète possible de ce code vb.net ver le visual basic 6.
je bloque pour appeler la fonction ainsi que pour charger la librairie "Steam.dll" externe au dossier d'éxecution.

Imports System.Runtime.InteropServices
Imports System.Text

Module SteamDecrypt

<DllImport("Steam.dll", CallingConvention:=CallingConvention.Cdecl)> _
Public Function SteamDecryptDataForThisMachine(ByVal encryptedData As String, _
ByVal encryptedDataSize As Integer, _
ByVal decryptedBuffer As StringBuilder, _
ByVal decryptedBufferSize As Integer, _
ByRef decryptedDataSize As Integer) As Integer
End Function

Sub Main(ByVal args() As String)

Dim encpwd As String = "91C6109CBA72D1AF587E74E860AB2348DFEBCE61EFC11C80205ECD4E18CDC2FAF200008284B7D6EC411631A03F02" 'string encpwd Dim decryptedDataSize As Integer 0
Dim pwd As New StringBuilder
pwd.Length = encpwd.Length / 2
If SteamDecryptDataForThisMachine(encpwd, encpwd.Length, pwd, pwd.Length, _
decryptedDataSize) = 0 Then
Console.WriteLine(Constants.vbLf & " Password: " & pwd.ToString())
Else
Console.WriteLine("Error decrypting the Steam Password.")
End If
Console.ReadLine()
End Sub
End Module

13 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
2 avril 2009 à 11:18
Public Function SteamDecryptDataForThisMachine Lib "Steam.dll" (ByVal encryptedData As String, ByVal encryptedDataSize As Long, Byval decryptedBuffer As String, ByVal decryptedBufferSize As Long, ByRef decryptedDataSize As Long) As Long
0
ianis24 Messages postés 87 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 13 janvier 2011
2 avril 2009 à 19:56
j'ai déjà essayer cette méthode mais la DLL en question est dans un autre dossier.
J'ai donc besoin de charger la library.
Pa = loadlibrary ("C:\Data\123.dll")

Et la fonction d'entête n'est donc plus utilisable.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
2 avril 2009 à 21:05
déplace la dll, ou renseigne le chemin complet ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
ianis24 Messages postés 87 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 13 janvier 2011
3 avril 2009 à 18:21
La Dll en question peut être dans un dossier variable un disque variable...
je récupère ce dossier via une fonction




Private Function GetSteamDLL() As String
Set WshShell = CreateObject("WScript.Shell")
GetSteamDLL = WshShell.RegRead("HKEY_CURRENT_USER\Software\Valve\Steam\SteamPath")
GetSteamDLL = GetSteamDLL & "/" & "Steam.dll"
End Function




Je ne peut donc pas la déclarer comme sur ton message précédent.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 avril 2009 à 22:52
LoadLibrary
GetProcAddress
FreeLibrary

et

http://www.vbfrance.com/codes/APPELER-FONCTION-DEPUIS-SON-ADRESSE_39481.aspx

et tout ira bien

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
ianis24 Messages postés 87 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 13 janvier 2011
4 avril 2009 à 00:12
Voici ou en est mon code, j'ai une erreur avec le class module ( run-time error )
Comment dois-je récupérer les variables de sortie ?
je suis complètement perdu, ça fait 2 semaine que je boss sur ce projet et je me vois obliger de me remettre a vous. Votre aide me sera très utile.

Si quelqu'un peut complètement traduire le code Vb.net ver Vb6 ce serait formidable.

Excusez moi je j'ai absolument besoin de comprendre le fonctionnement de cette DLL il n'existe aucun code public vb6 fonctionnelle pour cette procédure.




Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private MyFunction As New CDelegate

Private Function GetSteamDLL() As String
Set WshShell = CreateObject("WScript.Shell")
GetSteamDLL = WshShell.RegRead("HKEY_CURRENT_USER\Software\Valve\Steam\SteamPath")
GetSteamDLL = GetSteamDLL & "/" & "Steam.dll"
End Function

Sub Main()

Dim lb As Long, pa As Long

lb = LoadLibrary(GetSteamDLL)

pa = GetProcAddress(lb, "SteamDecryptDataForThisMachine")

FreeLibrary lb

MyFunction.Create "Steam.dll::SteamDecryptDataForThisMachine", vbLong, vbLong, vbString, vbString, vbLong
   
 'a = "encryptedData As String, ByVal encryptedDataSize As Long, Byval decryptedBuffer As String, ByVal decryptedBufferSize As Long, ByRef decryptedDataSize As Long"

End Sub










Ianis
0
ianis24 Messages postés 87 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 13 janvier 2011
4 avril 2009 à 00:17
/*


Je me permet d'ajouter ce code en C trouver sur le net.
by Luigi Auriemma
*/

 
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <windows.h>
 
typedefint(__stdcall *SteamDecryptDataForThisMachine_t)(char*a, int b, char*c, int d, int*e);
 
 
int main(int argc, char*argv[]){
   SteamDecryptDataForThisMachine_t    SteamDecryptDataForThisMachine;
HANDLE  dll;
   int     len;
   char    pwd[100],
           *encpwd;
 
   if(argc <2){
       printf("\n"
           "Usage: %s <encrypted_password>\n"
           "\n", argv[0]);
       exit(1);
   }
   encpwd = argv[1];
 
dll = LoadLibrary("STEAM.DLL");
if(!dll){
       printf("\nError: the file STEAM.DLL has not been found\n");
       exit(1);
   }
   SteamDecryptDataForThisMachine =(void*)GetProcAddress(dll, "SteamDecryptDataForThisMachine");
   if(!SteamDecryptDataForThisMachine){
       printf("\nError: the function SteamDecryptDataForThisMachine has not been found\n");
       exit(1);
   }
 
   if(!SteamDecryptDataForThisMachine(encpwd, strlen(encpwd), pwd, sizeof(pwd), &len)){
       printf("\n  password: %.*s\n", len, pwd);
   }else{
       printf("\nError: you can't decrypt this encrypted password\n");
   }
   FreeLibrary(dll);
   return(0);
}
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 avril 2009 à 07:44
GetSteamDLL = GetSteamDLL & "/" & "Steam.dll"


sur windows, on utilises le backslash...
GetSteamDLL = GetSteamDLL & "" & "Steam.dll"

tu ne peux pas faire:

Voici ou en est mon code, j'ai une erreur avec le class module ( run-time error )
Comment dois-je récupérer les variables de sortie ?
je suis complètement perdu, ça fait 2 semaine que je boss sur ce projet et je me vois obliger de me remettre a vous. Votre aide me sera très utile.

Si quelqu'un peut complètement traduire le code Vb.net ver Vb6 ce serait formidable.

Excusez moi je j'ai absolument besoin de comprendre le fonctionnement de cette DLL il n'existe aucun code public vb6 fonctionnelle pour cette procédure.

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private MyFunction As New CDelegate

Private Function GetSteamDLL() As String
Set WshShell = CreateObject("WScript.Shell")
GetSteamDLL = WshShell.RegRead("HKEY_CURRENT_USER\Software\Valve\Steam\SteamPath")
GetSteamDLL = GetSteamDLL & "/" & "Steam.dll"
End Function

Sub Main()

Dim lb As Long, pa As Long

lb = LoadLibrary(GetSteamDLL)

pa = GetProcAddress(lb, "SteamDecryptDataForThisMachine")

FreeLibrary lb

MyFunction.Create "Steam.dll::SteamDecryptDataForThisMachine", vbLong, vbLong, vbString, vbString, vbLong

Voici ou en est mon code, j'ai une erreur avec le class module ( run-time error )
Comment dois-je récupérer les variables de sortie ?
je suis complètement perdu, ça fait 2 semaine que je boss sur ce projet et je me vois obliger de me remettre a vous. Votre aide me sera très utile.

Si quelqu'un peut complètement traduire le code Vb.net ver Vb6 ce serait formidable.

Excusez moi je j'ai absolument besoin de comprendre le fonctionnement de cette DLL il n'existe aucun code public vb6 fonctionnelle pour cette procédure.

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private MyFunction As New CDelegate

Private Function GetSteamDLL() As String
Set WshShell = CreateObject("WScript.Shell")
GetSteamDLL = WshShell.RegRead("HKEY_CURRENT_USER\Software\Valve\Steam\SteamPath")
GetSteamDLL = GetSteamDLL & "/" & "Steam.dll"
End Function

Sub Main()

Dim lb As Long, pa As Long

lb = LoadLibrary(GetSteamDLL)

pa = GetProcAddress(lb, "SteamDecryptDataForThisMachine")

FreeLibrary lb

MyFunction.Create "Steam.dll::SteamDecryptDataForThisMachine", vbLong, vbLong, vbString, vbString, vbLong

Voici ou en est mon code, j'ai une erreur avec le class module ( run-time error )
Comment dois-je récupérer les variables de sortie ?
je suis complètement perdu, ça fait 2 semaine que je boss sur ce projet et je me vois obliger de me remettre a vous. Votre aide me sera très utile.

Si quelqu'un peut complètement traduire le code Vb.net ver Vb6 ce serait formidable.

Excusez moi je j'ai absolument besoin de comprendre le fonctionnement de cette DLL il n'existe aucun code public vb6 fonctionnelle pour cette procédure.

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private MyFunction As New CDelegate

Private Function GetSteamDLL() As String
Set WshShell = CreateObject("WScript.Shell")
GetSteamDLL = WshShell.RegRead("HKEY_CURRENT_USER\Software\Valve\Steam\SteamPath")
GetSteamDLL = GetSteamDLL & "/" & "Steam.dll"
End Function

Sub Main()

Dim lb As Long, pa As Long

lb = LoadLibrary(GetSteamDLL)

pa = GetProcAddress(lb, "SteamDecryptDataForThisMachine")

FreeLibrary lb

MyFunction.Create "Steam.dll::SteamDecryptDataForThisMachine", vbLong, vbLong, vbString, vbString, vbLong

MyFunction.Create "Steam.dll::SteamDecryptDataForThisMachine", vbLong, vbLong, vbString, vbString, vbLong
puisque steam.dll n'est pas accessible directement...
tu as récupéré son hLib, juste au dessus... utilises le.

les types passés lors de la création du delegué, tu n'utilises pas les même types que dans la declaration d'API...

d'autre part, tu ne fait finallement pas appel a la fonction... (pas de MyFunction.Default.Invoke)

Sub Main()
Dim lb As Long, pa As Long
lb = LoadLibrary(GetSteamDLL)
pa = GetProcAddress(lb, "SteamDecryptDataForThisMachine")

MyFunction.Create pa, vbLong, vbString, vbLong, vbString, vbLong, vbLong
MyFunction.Default.Invoke

FreeLibrary lb
End Sub

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
ianis24 Messages postés 87 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 13 janvier 2011
4 avril 2009 à 13:25
Donc a partir d'ici comment puis je utiliser ce code pour décrypter une chaine ?
(Le classe module ne m'est pas tout a fait claire)
Comment définir le nom des variables de la fonction crée ?

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private MyFunction As New CDelegate

Private Function GetSteamDLL() As String
Set WshShell = CreateObject("WScript.Shell")
GetSteamDLL = WshShell.RegRead("HKEY_CURRENT_USER\Software\Valve\Steam\SteamPath")
GetSteamDLL = GetSteamDLL & "" & "Steam.dll"
End Function

Sub Main()
Dim lb As Long, pa As Long

lb = LoadLibrary(GetSteamDLL)
pa = GetProcAddress(lb, "SteamDecryptDataForThisMachine")

MyFunction.Create pa, vbString, vbLong, vbString, vbLong, vbLong
MyFunction.Default.Invoke

FreeLibrary lb

End Sub
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 avril 2009 à 16:22
tu appelles Invoke, tout bêtement, sans tes parametres ?

MyFunction.Default.Invoke

est ta fonction SteamDecryptDataForThisMachine

tu dois lui transmettre tes parametres
0
ianis24 Messages postés 87 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 13 janvier 2011
7 avril 2009 à 13:30
Je ne sais pas si tu dispose de Steam.dll mais si c'est le cas à tu réussie a faire fonctionner le code correctement.
Ianis
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 avril 2009 à 13:42
je n'ai pas cette dll, non ^^
0
ianis24 Messages postés 87 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 13 janvier 2011
12 avril 2009 à 17:30
Si quelqu'un d'autre trouve une solution..?
0
Rejoignez-nous