Friday, July 31, 2009

How do i find out what computer programming language a windows application is written in?

you need some experience to recognize it,


- Java : from the 'select file dialog box' (it's different with another programming language) and sometimes its extension. (i've never open it with dissasembler)


- VB : big size files and can't work without msvbm60.dll etc.


open with dissasembler : to much jump.


- Delphi : Open the Executable File with some 'Resource editor', you will recognized by its Resource , usually for the icon resource, it have an unique icon likes 'door', 'floppy', 'exit', 'close'.


open with dissasembler : sometimes you see .onClose, .onExit, .onClick procedure. and sometimes their 'Jump' to some specific code before it 'jump' to the right procedure/function


- C++ : open with dissasembler : very clean asm code. 'Jump' exactly to the 'procedure/function'


- ASM : I doubt it's existance in windows


- Net : i never see a software build by .net in my PC (didn't have chance to test it)





maybe there's different method to recognized it by their binary or executable header. try to find it in internet.

How do i find out what computer programming language a windows application is written in?
more than one programming laguage is involved.
Reply:I dont think there is a way to find the application is developed in which computer programming language.
Reply:Most windows applicationa are written using C languages
Reply:Any application in any OS or platform irrespective of any language used ultimately becomes a "machine code", as translated by compilers of the programming language for that platform.





So its impossible to differentiate between two programmes looking at their "machine code" as to which coding language was used for programming them.
Reply:This could be tricky depending on the nature of the program.


Think about what libraries would have been used to produce this program if possible. See what languages these are available in.





It is possible for an experienced programmer to make an educated guess as to such things.





You could test whether you are correct by running the application through a decompiler. If it is possible to decompile with a particular language decompiler then you have probably selected the correct language.





However, the most practical method is to look for hints within the application. If you are not an experienced developer, browse around the programming section of a good bookstore and try to match up features/GUI toolkits with different languages/libraries available.
Reply:You can make some educated guesses based on what is actually being run. .Net stuff is all more or less the same once it goes to MSIL, but you'll be able to tell if it's a .Net assembly, and even things about it by putting it through Ildasm or Reflector.





If it's a native app, you should look to see the libraries it loads. MFC is a fairly good indicator of C++, but if it isn't loaded the app could just be doing things by using win32 calls (which, IMO, are just as good) from any of the supported languages. The thing about native apps, in the end they're just compiled straight down. You may not be able to identify the original language without some work.





Not a lot of experience with (non .Net) VB, but I'd guess you can also tell by inspection of the binary and what gets loaded.





You can normally tell a Java program fairly easily, and there are a number of decompilers out there (or you can convert the bytecode to JASM for easier reading at the low levels). If it decompiles to java, it's a fair bet.





Good luck.





EDIT:





To the above answers, some languages are interpretted, some languages are not, so while ultimately machine code goes through the processor, you may still be able to tell from what's stored, what's loaded, and what's running. If you run it, and the java virtual machine starts up, machine code still goes through but it's a pretty fair bet it's a Java app. For those that are not, remember that while any given opcode does the same thing for the same arguments and conditions, different languages and different compilers will structure the compiled result differently... even given just blobs of binary, it's sometimes possible to tell if you're really willing to go in deep.





But, honestly, is finding out the authoring language all that useful?
Reply:Dont let anybody decieve you, its impossible to determine except if the developers leave some traces.. like for example if the ICON of a Visual basic program is left unchanged by the programmer......... beside that you are unlucky Its funny that people claim that Java alone is used for Network applications but to the contrary i use visual C++ and Vbasic.


No comments:

Post a Comment