2013-03-03 16 views
8

Pracuję nad programem Ocaml i mam kilka plików binarnych, które muszę wymyślić. Najbliżej, doszedłem do konwersji kodu bajtowego OCaml na skompilowany kod C przy użyciu ocamlcc.Dekompilowanie plików kodu bajtowego OCaml

Nie chcę odtwarzać kodu C, chyba że i dopóki nie będę miał pewności, że nie będę w stanie dekompilować kodu OCaml.

Pytanie: Czy są jakieś tradycyjne sposoby dekompilacji kodu ML dla OCaml?

(Przepraszam, jeśli pytanie jest abstrakcyjne.)

Odpowiedz

6

Możesz również użyć dumpobj z katalogu dystrybucji tools. Jest on zainstalowany na moim Linux Ubuntu pod nazwą ocamldumpobj i drukuje z instrukcjami zawartymi w pliku kodu bajtowego, w formacie jak:

... 
131214 APPLY1 
131215 PUSHCONST1 
131216 LTINT 
131217 BRANCHIF 131225 
131219 ACC2 
131220 BRANCHIFNOT 131225 
131222 ACC3 
... 

Musisz dowiedzieć się o OCaml kodu bajtowego, aby przejść dalej. Nie ma narzędzia do przejścia z kodu bajtowego do plików źródłowych, ponieważ kod bajtowy nie zawiera wystarczających informacji.

4

Próbowano wydrukować lub kodu bajtowego kodu lambda? Możesz użyć opcji -dlambda lub -dinstr OCaml.

Istnieje również naprawdę dobry projekt dla drukarki binarnej: ocamlpp. Może powinieneś rzucić okiem.

+0

nie mogło cię całkowicie zrozumiałe, ale zrobiłem co następuje: - 'Ocaml -dlambda sm.byte' ' Plik "sm.byte", wiersz 2, znaki 1-2: '' Error : Niedozwolona postać (\ 000) ' Domyślam się, że interpreter OCaml nie może zeskanować kodu dalej z powodu nielegalnego korektora" \ 000 ". Czy robię to wszystko źle? – p0lAris

+0

Czy wypróbowałeś 'ocamlpp', który będzie (być może) bardziej przydatny? – cago

+0

Cóż, spróbowałem ocamlpp, ale w ogóle się nie przydałem. – p0lAris

Powiązane problemy