Jeg analyserer noen Visual Basic 6.0-skadelig programvare (før .NET), og jeg har flere spørsmål angående den interne strukturen i formatet. Prøvene jeg har er både p-code
eller native code
kompilert (avhenger av malwareversjonen). I løpet av de siste par dagene har jeg lest Alex Ionescus papir, samt et annet papir om emnet, og jeg har et par spørsmål angående formatet. Hvis du har flere ressurser der jeg kan få ytterligere informasjon om Visual Basic-strukturen, kan du legge dem ut her.
Så spørsmålene er:
-
I
ProjectInformation
strukturen er det et felt ved offset0x20
kaltlpNativeCode
. Basert på Alexs papir sier beskrivelsenPointer to .DATA seksjon
. Da jeg analyserte prøvene mine, la jeg merke til at følgende felt er0x0
forp-code
kompilerte prøver og inneholder en adresse fornative code
kompilerte prøver. Så spørsmålet mitt er: Er det trygt å bruke følgende felt for å avgjøre om prøven erp-code
ellernative-code
kompilert? -
Inne i
ObjectInfo
strukturen er det felt med forskyvninger0x20
og0x24
kaltwMethodCount
oglpMethods
. Forp-code
kompilerte prøver la jeg merke til atlpMethods
-feltet peker på en rekke metoder for det objektet. Det jeg ikke forstår er nullbyte som vises før selve metoden adresserer i matrisen. For å gjøre det mer tydelig inkluderte jeg følgende bilder:
Det første bildet er en dumpvisning av en ObjectInfo
-struktur, mens det andre bildet er metodefeltet som lpMethods
-feltet peker på. Legg merke til 8 null byte før den faktiske metoden adresserer (på noen andre eksempler er det mer enn 8 null byte, så det er ikke alltid det tallet). Det jeg vil vite er hva er disse null byte?
-
Og til slutt mitt siste spørsmål. I
PublicObjectDescriptor
strukturen er det et felt ved offset0x1C
kaltdwMethodCount
med en beskrivelse avAntall metoder i Object
. I strukturenObjectInfo
er det også et felt kaltwMethodCount
, og iOptionalObjectInfo
er det felt som heterwEventCount
ogdwControlCount
. Det jeg ønsker å vite er hva forholdet er mellom disse feltene.Jeg la merke til at for
p-kode
kompilerte prøver erPublicObjectDescriptor.dwMethodCount
likObjectInfo.wMethodCount
, mens fornative-code
kompilerte prøver følgende forhold står ikke.