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...
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.