Pytanie:
Jak mam się postarać, aby dowiedzieć się, jakiego języka programowania użyto?
asheeshr
2013-03-25 19:41:09 UTC
view on stackexchange narkive permalink

Mam plik wykonywalny i chciałbym dowiedzieć się, w jakim języku programowania został napisany kod źródłowy. Pierwszym krokiem byłoby użycie dezasemblera.

Co należy zrobić później?

Przeczytałem również, że określenie, które biblioteki są używane w czasie wykonywania, byłoby dobrym wskaźnikiem używanego języka programowania. Jak mam określić, które biblioteki są używane?

Prawdopodobnie powiązane: [Jakie wskazówki w kodzie maszynowym mogą wskazać mi kompilator, który został użyty do jego wygenerowania?] (Http://reverseengineering.stackexchange.com/questions/11/what-hints-in-machine-code-can- point-me-to-the-compiler-which-was-used-to-genera) i [What is a FLIRT signature?] (http://reverseengineering.stackexchange.com/questions/175/what-is-a- flirt-podpis /)
Jaki jest cel? Rzeczy mogą się drastycznie zmienić z jednego systemu operacyjnego na inny (a także narzędzi).
@Emmanuel Ubuntu
Możesz użyć innych narzędzi do identyfikowania kompilatorów: Kategoria: Identyfikatory kompilatorów - wspólna biblioteka narzędzi RCE http://www.woodmann.com/collaborative/tools/index.php/Category:Compiler_Identifiers
Dwa odpowiedzi:
cb88
2013-03-25 20:03:31 UTC
view on stackexchange narkive permalink

Właściwie sugerowałbym przeglądanie pliku wykonywalnego za pomocą przeglądarki / edytora hex. W ten sposób możesz od razu zobaczyć, czy kompilator osadził jakiekolwiek ciągi znaków jako wskazówki. Należy również wziąć pod uwagę, że w niektórych językach C jest językiem pośrednim. Przykładem może być f2c kompilator Fortran 77 do C. Wygląda na to, że f2c łączy również bibliotekę obsługi, więc powinieneś jej szukać.

Jeśli chodzi o określenie, które biblioteki są używane w systemie Linux, możesz użyć polecenia ldd dla dynamicznych plików binarnych i nm dla statycznych, aby zrzucić symbole. Jest też powiązane pytanie dotyczące SO.

Oto ciekawy blog innego członka RE o tym, że plik binarny, który posiadasz może nawet nie pochodzić z kompilatora i jak to rozpoznać.

Dobra odpowiedź, zdziwiłbyś się, jak często działa to proste podejście! Pomijając to, nawet w przypadku `f2c` prawdopodobnie można zobaczyć wzorce punktowe używane przez konwerter do reprezentowania koncepcji języka Fortran lub konwersji z konwencji Fortran do języka C.
Mick
2013-03-25 21:04:27 UTC
view on stackexchange narkive permalink

Jest kilka narzędzi, z których korzystałem:

  1. PEiD (PE iDentifier) ​​
  2. Śledziłem także to guide i przekonwertowane podpisy PEiD na podpisy YARA i po prostu użyte YARA
  3. TRiD może również zapewnić inny sposób identyfikacji używanego kompilatora

Warto również wspomnieć, że jeśli prześlesz plik do Virus Total, uruchomi on TRiD dla Twojego pliku binarnego.

Te narzędzia nie zawsze są ostateczne, ale generalnie mogą podać poprawny kompilator (a tym samym język), który był używany.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...