Er det en måte å fortelle hva Språk ble brukt til et program?

stemmer
14

Jeg har en stasjonær program jeg lastet ned og installert. Den går fra en .exe-fil.

Er det noen måte fra EXE-filen for å fortelle hva som programmeringsspråk ble brukt til å skrive programmet?

Er det noen verktøy som kan hjelpe med dette?

Hvilke språk kan bestemmes og hvilke som ikke kan?


Ok her er to av de slags ting jeg ser etter:

  1. Tips for å finne ut om en app som er skrevet i Delphi eller ikke

  2. Denne IsDelphi program av Bruce McGee vil finne alle applikasjoner bygget med Delphi, Delphi for Net eller C ++ Builder som er på harddisken din.

Publisert på 30/12/2009 klokken 01:08
kilden bruker
På andre språk...                            


11 svar

stemmer
3

En god disassembler , pluss selvfølgelig en god forståelse av de underliggende CPU-arkitektur, kan ofte hjelpe deg med å identifisere de kjøretidsbiblioteker som er i spill. Med mindre exe har blitt nøye "strippet" av symboler og / eller på annen måte maskert, vil navnene på symboler sett i runtime bibliotekene ofte gi deg programmeringsspråk hint, fordi ulike språk standarder spesifiserer forskjellige navn, og leverandørene av kompilatorer og medfølgende kjøretidsbiblioteker vanligvis respektere disse standardene ganske tett.

Selvfølgelig vil du ikke komme dit uten kunnskap om de ulike mulige språk og deres bibliotek standarder - og hvis koden forfatter var innstilt til å maskere den informasjonen, det er ikke for vanskelig for dem å gjøre, heller.

Svarte 30/12/2009 kl. 01:15
kilden bruker

stemmer
1

Start med ulike alternativer for å dumpbin. Symbol navn, om ikke nøye slettet, vil gi deg alle slags hint om hvorvidt det er C, C ++, CLR, eller noe annet.

Svarte 30/12/2009 kl. 01:15
kilden bruker

stemmer
4

Først ser for å se hva kjøretidsbiblioteker den leser. AC programmet vil normalt ikke laste Visual Basic bibliotek.

Også undersøke kjørbare for avslørende strenger. I de fleste kjørbare, er dette nær slutten. Hvis programmet bruker string konstanter, kan det være en ledetråd i hvordan de er lagret.

Svarte 30/12/2009 kl. 01:18
kilden bruker

stemmer
3

Hvis du har tilgjengelig et stort sett med prøver fra kjente kompilatorer, bør jeg tror dette vil være et utmerket program for maskinlæring. Jeg tror såkalte "overvåket læring" er relevant her. Dessverre vet jeg nesten ingenting om emnet-bare at jeg har hørt noen imponerende resultater presentert på konferanser.

Du kan grave gjennom forhandlingene i Working Conference on Reverse Engineering for å se om noen andre er interessert i dette problemet.

Svarte 30/12/2009 kl. 22:40
kilden bruker

stemmer
2

Antar dette er et program for Windows ...

Betyr Reflektor gjenkjenne den som en NET montering? Da er det MSIL, 99% enten VB eller C #, men du vil sannsynligvis aldri vite, som heller ikke saken.

Betyr det trenger en intrepreter (som Java?)? Da er det Java (eller hva tolken er.)

Sjekk hva runtime DLLs det krever.

Betyr det krever VB runtime DLLer? Gratulerer, VB fra Visual Studio 6.0 eller tidligere.

Krever det Delphi DLL-filer? Gratulerer, Delphi.

Visste du gjøre det så langt? C / C ++. Anta C ++ med mindre det krever MSYS eller cygwin DLLer, og da C har kanskje en 25% sjanse.

Gratulerer, dette bør komme ut riktig for de aller fleste Windows-programvare. Dette sannsynligvis ikke faktisk hjelpe deg selv, som mange av de samme tingene som kan gjøres i alle disse språkene.

Svarte 30/12/2009 kl. 22:57
kilden bruker

stemmer
2

IDA Pro Free ( http://www.hex-rays.com/idapro/idadownfreeware.htm ) kan være nyttig. Selv om du ikke forstår assembly, hvis du laster EXE inn IDA Pro deretter sin innledende fremgang utgang kan (om det er noen kjennetegn) har sin beste gjetning som kompilatoren ble brukt.

Svarte 02/01/2010 kl. 22:29
kilden bruker

stemmer
1

Andre verktøy bruker signaturer for å identifisere kompilatoren brukes til å lage kjørbare, som PEiD, CFF Explorer og andre.

De normalt skanne inngangspunkt for den kjør vs signaturen.

Signatur Explorer fra CFF Explorer kan gi deg en forståelse av hvordan en signatur er konstruert.

Svarte 05/01/2010 kl. 06:02
kilden bruker

stemmer
8

Jeg bruker WinDowse (et lite freeware program skrevet i Delphi) for å spionere vinduene i programmet .. for eksempel hvis du ser på "Class" TabSheet du kan oppdage "Class" Navn på kontroll ..

For eksempel:

  • TFormXX, TEditYY, TPanelZZZ for Delphi apps
  • WindowsForms10.XXXX.yyy, for NET apps
  • wxWindowsXXX for wxWindows apps
  • AfxWndXX for MFC / VC ++ apps (tror jeg)

Jeg tror dette er den raskeste måten (selv om ikke den mest nøyaktige ) for å finne informasjon om programmer ..

Svarte 05/01/2010 kl. 07:45
kilden bruker

stemmer
4

Jeg forstår din nysgjerrighet.

Du kan identifisere Delphi og C ++ Builder apps og deres SKU ved å se etter et par spesifikke ressurser som linker legger. Spesielt RC Data \ DVCLAL og RC DATA \ PACKAGEINFO. Den XN Resource Editor gjør dette mye enklere, men det kan kvele på komprimerte EXEs.

EXE kompressorer komplisere ting litt. De kan skjule eller forvrenge innholdet av ressursene. Programmer komprimert med UPX er lett å identifisere seg med en HEX editor fordi de 2 første avsnittene i PE header er oppkalt UPX0 og UPX1. Du kan bruke programmet til å dekomprimere disse.

Søknader kompilert med Net er ikke vanskelig å oppdage. Nyere versjoner av Delphi selv ta en IsAssembly funksjon, eller du kan gjøre en liten hule i PE spissen. Sjekk ut IsManaged funksjon i IsDelphi.

Telling som .Net språket ble brukt er vanskeligere. Som standard inkluderer VB.Net en referanse til Microsoft.VisualBasic, og VCL.Net applikasjoner inkludert Borland spesifikke referanser. Imidlertid er VCL.Net nedlagt til fordel for Delphi Prism, og du kan legge til en referanse til VB forsamlingen til et klart språk.

Jeg har ikke sett på noen av de apps som bruker signaturer for å identifisere kompilatoren, så jeg vet ikke hvor godt de fungerer.

Jeg håper dette hjelper.

Svarte 06/01/2010 kl. 00:49
kilden bruker

stemmer
0

Det ser ut som VC ++ linker fra V6 opp legger til en signatur til PE header som youcan parse.

Svarte 06/01/2010 kl. 09:32
kilden bruker

stemmer
0

Jeg foreslår PEiD (program, lukket kilde). Har alle Delphi for Win32 signaturer, også kan fortelle deg som var pakning brukes (hvis noen).

Svarte 08/01/2010 kl. 00:34
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more