Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Avoir la source asm de votre projet vb

5/5 (26 avis)

Vue 7 117 fois - Téléchargée 379 fois

Description

Ceci permet de créer des fichiers contenant la source ASM de votre programme lors de la compilation. Pour ce faire :
1- dans votre dossier de vb, renommer c2.exe par c2_.exe
2- copier l'éxécutable c2.exe (qui est dans le dossier de ma source) dans le dossier de vb.
3- cour désinstaller, supprimer mon éxécutable (le c2.exe (CELUI EN VB!)) et renommer le c2_.exe (c2.exe original) en en c2.exe
4- créer un fichier appellé c2.cfg dans le dossier de VB
5- dans ce fichier, vous mettez les paramètres que vous voulez envoyer à c2. VOUS AVEZ LE CONTRÔLE DE C2! Pour générer la source ASM, voici le fichier de configuration :

##début du fichier (ne pas inscrire :-)
-Fa"$filename$_VB.asm"
##fin du fichier (ne pas inscrire :-)
C'est simple non? paramètre, CRLF, paramètre CRLF...
Voici la liste des variables :
$filename$ > Nom du fichier qui se fait compiler
$filepath$ > Dossier du fichier qui se fait compiler
$vbpath$ > Dossier de VB (celui dans lequel est l'EXE de mon prog)

CES VARIABLES SONT CASE SENSITIVE!!!

Je ne sais pas quels paramètres sont pris en charge par c2. Par contre, j'ai mit le fichier cl.txt qui contient les paramètres de cl.exe , le compilateur c++ (il y en a sûrement en commun)

Source / Exemple :


'Voici un exemple de la conversion :
'Projet VB : Une feuille (form1) avec un bouton (command1) :

Option Explicit

Private Sub Command1_Click()
Dim strMess As String
strMess = InputBox("Quel est le mot de passe?")
If StrComp(strMess, "allo", vbTextCompare) <> 0 Then
MsgBox "MAUVAIS MOT DE PASSE!", vbCritical + vbOKOnly
Else
MsgBox "Mot de passe accepté!", vbInformation + vbOKOnly
End If
End Sub

'Maintenant, le résultat en ASM (ESSAYEZ DE TROUVENT COMMENT LE CRACKER):
	TITLE	E:\Programmes\Microsoft Visual Studio\VB98\test asm\Form1.frm
	.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
_DATA	SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA	ENDS
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
_BSS	SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS	ENDS
_TLS	SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS	ENDS
text$1	SEGMENT PARA USE32 PUBLIC ''
text$1	ENDS
;	COMDAT ?Command1_Click@Form1@@AAGXXZ
text$1	SEGMENT PARA USE32 PUBLIC ''
text$1	ENDS
FLAT	GROUP _DATA, CONST, _BSS
	ASSUME	CS: FLAT, DS: FLAT, SS: FLAT
endif
PUBLIC	?Command1_Click@Form1@@AAGXXZ			; Form1::Command1_Click
EXTRN	__imp_@__vbaStrMove:NEAR
EXTRN	__imp____vba@00617CA8:NEAR
EXTRN	__imp_@__vbaVarDup:NEAR
EXTRN	___vba@0060DC2C:BYTE
EXTRN	__imp____vbaFreeVarList:NEAR
EXTRN	__imp____vbaStrComp:NEAR
EXTRN	___vba@0060DC68:BYTE
EXTRN	__imp____vba@00618D04:NEAR
EXTRN	___vba@00618C40:BYTE
EXTRN	___vba@00618C74:BYTE
EXTRN	__imp_@__vbaFreeStr:NEAR
EXTRN	___vbaExceptHandler:NEAR
EXTRN	__except_list:DWORD
;	COMDAT CONST
; File E:\Programmes\Microsoft Visual Studio\VB98\test asm\Form1.frm
CONST	SEGMENT
$S40	DB	07H, 00H
	DB	08H, 00H
	DD	FLAT:$L39
	DD	FLAT:$L37
	DD	FLAT:$L38
CONST	ENDS
;	COMDAT ?Command1_Click@Form1@@AAGXXZ
text$1	SEGMENT
_Me$ = 8
_strMess$ = -24
_unnamed_var1$ = -40
_unnamed_var1$ = -56
_unnamed_var1$ = -72
_unnamed_var1$ = -88
_unnamed_var1$ = -104
_unnamed_var1$ = -120
_unnamed_var1$ = -136
_unnamed_var1$ = -152
__$SEHRec$ = -20
?Command1_Click@Form1@@AAGXXZ PROC NEAR			; Form1::Command1_Click, COMDAT
; File E:\Programmes\Microsoft Visual Studio\VB98\test asm\Form1.frm
; Line 28
	push	ebp
	mov	ebp, esp
	sub	esp, 12					; 0000000cH
	push	OFFSET FLAT:___vbaExceptHandler
	mov	eax, DWORD PTR fs:__except_list
	push	eax
	mov	DWORD PTR fs:__except_list, esp
	sub	esp, 236				; 000000ecH
	push	ebx
	push	esi
	push	edi
	mov	DWORD PTR __$SEHRec$[ebp+8], esp
	mov	DWORD PTR __$SEHRec$[ebp+12], OFFSET FLAT:$S40
	mov	eax, DWORD PTR _Me$[ebp]
	mov	ecx, eax
	and	ecx, 1
	mov	DWORD PTR __$SEHRec$[ebp+16], ecx
	and	al, -2					; fffffffeH
	push	eax
	mov	DWORD PTR _Me$[ebp], eax
	mov	edx, DWORD PTR [eax]
	call	DWORD PTR [edx+4]
	xor	ebx, ebx
; Line 30
	mov	edi, -2147352572			; 80020004H
	mov	esi, 10					; 0000000aH
	mov	DWORD PTR _unnamed_var1$[ebp], ebx
	mov	DWORD PTR _unnamed_var1$[ebp], ebx
	mov	DWORD PTR _unnamed_var1$[ebp], ebx
	mov	DWORD PTR _unnamed_var1$[ebp], ebx
	mov	DWORD PTR _unnamed_var1$[ebp], ebx
	mov	DWORD PTR _unnamed_var1$[ebp], ebx
	mov	DWORD PTR _unnamed_var1$[ebp], ebx
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	mov	DWORD PTR _strMess$[ebp], ebx
	mov	DWORD PTR _unnamed_var1$[ebp], ebx
	mov	DWORD PTR _unnamed_var1$[ebp+8], edi
	mov	DWORD PTR _unnamed_var1$[ebp], esi
	mov	DWORD PTR _unnamed_var1$[ebp+8], edi
	mov	DWORD PTR _unnamed_var1$[ebp], esi
	mov	DWORD PTR _unnamed_var1$[ebp+8], edi
	mov	DWORD PTR _unnamed_var1$[ebp], esi
	mov	DWORD PTR _unnamed_var1$[ebp+8], edi
	mov	DWORD PTR _unnamed_var1$[ebp], esi
	mov	DWORD PTR _unnamed_var1$[ebp+8], edi
	mov	DWORD PTR _unnamed_var1$[ebp], esi
	mov	DWORD PTR _unnamed_var1$[ebp+8], edi
	mov	DWORD PTR _unnamed_var1$[ebp], esi
	mov	DWORD PTR _unnamed_var1$[ebp+8], OFFSET FLAT:___vba@0060DC2C
	mov	DWORD PTR _unnamed_var1$[ebp], 8
	call	DWORD PTR __imp_@__vbaVarDup
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	push	eax
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	push	ecx
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	push	edx
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	push	eax
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	push	ecx
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	push	edx
	push	eax
	call	DWORD PTR __imp____vba@00617CA8
	mov	edx, eax
	lea	ecx, DWORD PTR _strMess$[ebp]
	call	DWORD PTR __imp_@__vbaStrMove
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	push	ecx
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	push	edx
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	push	eax
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	push	ecx
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	push	edx
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	push	eax
	push	ecx
	push	7
	call	DWORD PTR __imp____vbaFreeVarList
; Line 31
	mov	edx, DWORD PTR _strMess$[ebp]
	add	esp, 32					; 00000020H
	push	edx
	push	OFFSET FLAT:___vba@0060DC68
	push	1
	call	DWORD PTR __imp____vbaStrComp
	test	ax, ax
; Line 32
	mov	DWORD PTR _unnamed_var1$[ebp+8], edi
	mov	DWORD PTR _unnamed_var1$[ebp], esi
	mov	DWORD PTR _unnamed_var1$[ebp+8], edi
	mov	DWORD PTR _unnamed_var1$[ebp], esi
	mov	DWORD PTR _unnamed_var1$[ebp+8], edi
	mov	DWORD PTR _unnamed_var1$[ebp], esi
	je	SHORT $L46
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	mov	DWORD PTR _unnamed_var1$[ebp+8], OFFSET FLAT:___vba@00618C40
	mov	DWORD PTR _unnamed_var1$[ebp], 8
	call	DWORD PTR __imp_@__vbaVarDup
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	push	eax
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	push	ecx
	push	edx
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	push	16					; 00000010H
	push	eax
	call	DWORD PTR __imp____vba@00618D04
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	push	ecx
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	push	edx
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	push	eax
	push	ecx
; Line 33
	jmp	SHORT $L74
$L46:
; Line 34
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	mov	DWORD PTR _unnamed_var1$[ebp+8], OFFSET FLAT:___vba@00618C74
	mov	DWORD PTR _unnamed_var1$[ebp], 8
	call	DWORD PTR __imp_@__vbaVarDup
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	push	edx
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	push	eax
	push	ecx
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	push	64					; 00000040H
	push	edx
	call	DWORD PTR __imp____vba@00618D04
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	push	eax
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	push	ecx
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	push	edx
	push	eax
$L74:
	push	4
	call	DWORD PTR __imp____vbaFreeVarList
	add	esp, 20					; 00000014H
; Line 36
	mov	DWORD PTR __$SEHRec$[ebp+16], ebx
$L39:
	push	$L70
	jmp	SHORT $L65
$L38:
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	push	ecx
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	push	edx
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	push	eax
	lea	edx, DWORD PTR _unnamed_var1$[ebp]
	push	ecx
	lea	eax, DWORD PTR _unnamed_var1$[ebp]
	push	edx
	lea	ecx, DWORD PTR _unnamed_var1$[ebp]
	push	eax
	push	ecx
	push	7
	call	DWORD PTR __imp____vbaFreeVarList
	add	esp, 32					; 00000020H
	ret	0
$L65:
$L37:
	lea	ecx, DWORD PTR _strMess$[ebp]
	call	DWORD PTR __imp_@__vbaFreeStr
$L68:
	ret	0
$L70:
	mov	eax, DWORD PTR _Me$[ebp]
	push	eax
	mov	edx, DWORD PTR [eax]
	call	DWORD PTR [edx+8]
	mov	eax, DWORD PTR __$SEHRec$[ebp+16]
	mov	ecx, DWORD PTR __$SEHRec$[ebp]
	pop	edi
	pop	esi
	mov	DWORD PTR fs:__except_list, ecx
	pop	ebx
	mov	esp, ebp
	pop	ebp
	ret	4
?Command1_Click@Form1@@AAGXXZ ENDP			; Form1::Command1_Click
text$1	ENDS
END

Conclusion :


Je ne mit connais pas en ASM mais je sais qu'il est valide car toute les procédures y sont. Ceci va sûrement interressé plusieurs...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.