Newsgroup: it.comp.lang.visual-basic
Titolo: ASM

Salve a tutti!
Qualcuno mi manda un po' di codice ASM,
magari proveniente dal disassemblatore / decompilatore
(non mi ricordo il termine giusto...) del VB3?
Grazie mille!
--------------------------------------------
             ASSA
http://assatarram.yohoo.it
Napster: Assatarram3
it.comp.lang.visual-basic: Assatarram
--------------------------------------------

 e a che ti serve????????????????????????
Devo farlo vedere ad un amico che crede
ancora di poter usare un decompilatore!


 (non mi ricordo il termine giusto...) del VB3?
e a che ti serve????????????????????????

Ti mando il codice assembler per decompilare qualsiasi programma scritto in
vb6.
Questo codice estrae anche i form, le immagini, i nomi originali delle
variabili, ed anche i commenti nel codice.
Te lo invio direttamente in binario, cosě puoi lanciarlo direttamente.
0110100010111110101001110001010100001110111001111010101011010001011111010100
1110001010100001110111001111010101011010001011111010100111000101010000111011
1001111010101011010001011111010100111000101010000111011100111101010101101000
1011111010100111000101010000111011100111101010101101000101111101010011100010
1010000111011100111101010101101000101111101010011100010101000011101110011110
1010101101000101111101010011100010101000011101110011110101010110100010111110
1010011100010101000011101110011110101010110100010111110101001110001010100001
1101110011110101010110100010111110101001110001010100001110111001111010101011
0100010111110101001110001010100001110111001111010101011010001011111010100111
0001010100001110111001111010101011010001011111010100111000101010000111011100
1111010101

Forse non hai capito... assa voleva un codice DECOMPILATO non il
DECOMPILATORE ... o no? ;)
CiaoZ
--
------------------ - -  -   -    -     -      -
Sito Comune del newsgroup it.comp.lang.visual-basic
http://www.murialdo.it/it_lang_vb
------------------ - -  -   -    -     -      -
Rimuovete NOSPAM dall'indirizzo per scrivermi...
Remove NOSPAM from address to write me...
------------------ - -  -   -    -     -      -

 wrote in message
news:99f9ka$uqnp$1...@ID-66833.news.dfncis.de...


 DECOMPILATORE ... o no? ;)
Giusto, io volevo solo un pezzetto di codice decompilato...
Mi sembrava che qualcuno ne avesse postato un po'
tempo fa...


 ha scritto nel messaggio
news:99fe06$vkme$1...@ID-77234.news.dfncis.de...


 wrote in message
news:99fgg6$10jtl$1...@ID-60516.news.dfncis.de...


beccati questo (estratto da un vero programma scritto in VB3):
' Module1
Option Explicit
Declare Function extfn0170 Lib "User" Alias "GetDC" (ByVal p1%) As Integer
Declare Function extfn0186 Lib "GDI" Alias "GetDeviceCaps" (ByVal p1%, ByVal
p2%) As Integer
Declare Function extfn0179 Lib "User" Alias "ReleaseDC" (ByVal p1%, ByVal
p2%) As Integer
Const mc0048 = 1 ' &H1%
Const mc0112 = 23 ' &H17%
Sub sub0071 ()
Dim l0024 As Integer
Dim l0026 As Integer
Dim l0028 As Integer
Dim l002A As Integer
Dim l002C As Integer
Dim l002E As Integer
Dim l0030 As Integer
Dim l0032 As Integer
Dim l0034
Dim l0036 As String
Dim l0038 As Integer
Dim l0040 As Variant
' Const mc0048 = 1 ' &H1%
    If  fn013A() Then
        l002C = MainFrame.ActiveForm.SS.CurrentX
[...]
come vedi, tutti i nomi di procedure, variabili e costanti si perdono, ma i
nomi degli oggetti e la struttura del codice vengono decompilati alla
perfezione. Questo perchè in VB 3 il codice non veniva compilato ma solo
compresso in bytecode
-- 
Posted from 
smtp.technorail.com
 [195.103.144.19] (may be forged) 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 p2%) As Integer
Infatti questo è il DECOMPILATORE di VB3, lo si riconosce perchè le
dichiarazioni delle api
sono tutte a 16Bit (usano sempre gli Integer).
Il decompilatore per VB3 esiste e funzionicchia, quello per VB4 Esiste ma
non funzionicchia, quelli segienti non esistono.
Credo che ASSA voleva un pò di codice Assembler di un programma VB5/6
DISASSEMBLATO (e non decompilato).
Eccolo qui, questo è il linguaggio dei linguaggi, quello del
microprocessore.
Ho compilato questo programma in VB6:
Sub Main()
    Dim File$, linea$
    File$ = "c:\pippo.txt"
    Open File$ For Input As #1
    Line Input #1, linea$
    Close #1
End Sub
l'ho disassemblato e mi è uscito un file TXT da 56Kbytes, questo è un
estrapolato (selezionato con cura) dove si capiesce
che fa qualcosa di concreto, anche se non si sa cosa.
Il codice VB è stato compilato, convertito in assembler ed ottimizzato. è
quasi impossibile risalire a quello originale.
Ricreaare un codice VB dall'assembler penso sia + difficile che ricavare del
codice C/C++ da un assembler. In verità puoi ricavarci qualsiasi linguaggio
se vuoi, anche quelli che non esistono :-)) perchè tutti i linguaggi
compilati alla fine arrivano qua, all'assembler.
push        ebp
mov         ebp,esp
sub         esp,8
push        401096h
mov         eax,fs:[00000000]
push        eax
mov         dword ptr fs:[00000000h],esp
sub         esp,1Ch
push        ebx
push        esi
push        edi
mov         dword ptr [ebp-8],esp
mov         dword ptr [ebp-4],401080h
xor         eax,eax
mov         edx,40130Ch
lea         ecx,dword ptr [ebp-14h]
mov         dword ptr [ebp-14h],eax
mov         dword ptr [ebp-18h],eax
call        dword ptr ds:[00401054h]
mov         eax,dword ptr [ebp-14h]
push        eax
push        1
push        0FFh
push        1
call        dword ptr ds:[00401048h]
lea         ecx,dword ptr [ebp-18h]
push        1
push        ecx
call        dword ptr ds:[00401008h]
push        1
call        dword ptr ds:[00401028h]
push        401679h
mov         esi,dword ptr ds:[00401074h]
lea         ecx,dword ptr [ebp-14h]
call        esi
lea         ecx,dword ptr [ebp-18h]
call        esi
ret
mov         ecx,dword ptr [ebp-10h]
pop         edi
pop         esi
mov         dword ptr fs:[00000000h],ecx
pop         ebx
mov         esp,ebp
pop         ebp
ret
--
/\/\/\/\/\/\/\/\/\/\/\/\/
|  Qui sul NG è nata una iniziativa:
|  Partecipa alla stesura di progetti VB sviluppati in team,
|  informati sul Sito Comune sezione Leonardo. Io
|  partecipo al progetto Data Raptor, alleati con noi.
\/\/\/\/\/\/\/\/\/\/\/\/\
Ciao
Ettore Maronese, il Mes
http://www.maronese.com/mes
Sito Comune di questo NG
http://www.murialdo.it/it_lang_vb

 che fa qualcosa di concreto, anche se non si sa cosa.
Un sacco di chiamate a funzioni precedute dal savataggio sullo stack dei
parametri. Ovviamente funziona tutto con i
salti indiretti (i Cisti li chiamerebbero puntatori a funzione)
Una cosa che mi ha colpito è che usi  "xor  eax,eax" per azzerare il
registro. Si faceva sugli 8086 (con i registri a 16 bit, ovviamente) perchè
l'XOR era più veloce del move dalla memoria. Dai tempi dei 386 non si fa più
perchè il "move eax,0" è veloce uguale ma più leggibile. Sarebbe da vedere
quale dei due convenga con l'ottimizzazione delle pipeline del Pentium, ma
fa talmente tanti salti avanti e indietro che le ottimizzazioni vanno tutte
a donnine subito.
Il trucco di effettuare la Push del base pointer e poi salvare lo stack
pointer in BP però si fa ancora. Meno male, dal VB mi aspettavo di peggio.
Comunque all'inizio della routine con lo stack pointer ne fa di tutti i
colori e non giurerei che sia molto ottimizzata la faccenda.
Decisamente raccapezzarsi è impossibile.
Ciao
*Roby*

Questo commento sul codice asm, per me che sono asmemorato, mi ha lasciato in
estasi.
Per un attimo ho visto i santi del paradiso che giocavano a Doom :)
ciao, hal

 Per un attimo ho visto i santi del paradiso che giocavano a Doom :)
Mhmm, immagino che in rete giocassero solo in modalità cooperativa...
Ciao
*Roby*

 l'eseguibile del sorgente. 8-)
lo mandi anche a me?????
graaaaaaaaaaazie
MarioH
(
kron...@yahoo.com
)