Rozszyfrowanie działania programu na podstawie starego kodu w C

0

Witam, mam dostęp do kodu który powstał ok. 15 lat temu, jest napisany w C i częściowo w asemblerze. Program jest wgrany do przestarzałego procesora dallas i trzeba będzie go przenieść, rozszerzyć i zmodyfikować na nowocześniejszy układ lecz zasada działania pozostaje podobna. W kodzie brakuje dużej ilości komentarzy co jest dodatkowym utrudnieniem. Mam zadanie przeanalizować cały kod i stworzyć algorytm jego działania. Jak najlepiej do tego podejść? Szukam rad osób które z podobnymi problemami się już spotykały i je z mniejszym lub większym powodzeniem rozwiązywały.

1

Może użyj jakiegoś narzędzia do analizy np. tutaj jest jakieś https://www.sourcetrail.com/ do C++ co prawda (nie korzystałem z tego narzędzia, wrzucam dlatego, że obiecująco wygląda).

Albo jakiegoś innego narzędzia poszukaj, albo sam napisz który albo parsuje kod do drzewka AST (na bogato, ale w tym można się zagrzebać ostro) albo po prostu przelatuje RegExpami (co będzie miało tę zaletę, że szybko napiszesz coś co będzie wystarczająco dobre do masowego zanalizowania takiego kodu).

No i dużo tego kodu jest? (w sensie liczby plików, liczby linijek kodu itp.) Może po prostu będziesz musiał się ręcznie w niego wgryźć.

Szukam rad osób które z podobnymi problemami się już spotykały

na C czy Asm akurat się nie znam, ale wgryzałem się w duże aplikacje JSowe i robiłem narzędzia do analizy JSa, które same przełaziły przez duży projekt i szukały jakichś informacji.

0

Jeśli masz możliwość, dobrym pomysłem może być użycie debuggera. Właśnie w taki sposób rozszyfrowywałem nieco pogmatwany kod w C, jednak był to Linux x86, nie wiem jakie ty masz możliwości, jest tam jakiś system operacyjny? Może coś w guście JTAGa albo emulator?
Jeśli nie ma takiej możliwości, myślę, że podstawą jest wyłonić części kodu zależne od architektury i zaczął od niej, potem rozwikłał to co zależne. Jeśli masz możliwość modyffikowania i uruchamiania na natywnym sprzęcie powinno być w miarę spoko.

0

Problemem jest to, że nie bardzo jest dostęp do tego sprzętu, ponieważ większość rzeczy poginęło. Systemu operacyjnego nie ma. Muszę się opierać tylko na kodzie źródłowym co jest dodatkowym problemem.

0

a jaki model tego dallasa? Może można to emulować? Zwykle stare procki mają emulatory.

3

A tak z ciekawości jak bardzo skomplikowany jest ten program?
Jaka jest jago jakość?
Może całość jest projektu jest tak prosta, że nie warto analizować starego, źle napisanego kodu, ale lepiej pisać od zera.
Jeśli jesteś w stanie odtworzyć wszystkie wymagania systemu, to może się okazać to szybszym lepszym rozwiązaniem.

0
a jaki model tego dallasa?

To jest procesor DS87C520.

A tak z ciekawości jak bardzo skomplikowany jest ten program?

Program jest dość długi, ponad 30 plików, plik główny ponad 3k linijek. Jakość jest średnia i to bardzo utrudnia pracę oraz fakt, że nie bardzo mam w czym go przeglądać bo nie mam żadnego IDE w którym mógłbym odpalić projekt. Praca w notepad++ jest strasznie żmudna bo wszystko trzeba wyszukiwać ręcznie.

0

to że pod IDE nie uruchomisz nie znaczy że nie możesz w nim przeglądać plików

0
to że pod IDE nie uruchomisz nie znaczy że nie możesz w nim przeglądać plików

Ten problem został już dano rozwiązany, problemem jest to, że część kodu jest w asemblerze co utrudnia jego przeglądanie ;)

0

Może jednak wiesz jakie funkcjonalności realizuje urządzenie z tym układem? I lepiej będzie wyjść od funkcjonalności wymaganych, a nie od analizy kodu legacy?

0

Mniej więcej już wiem, analizuję instrukcję na podstawie której próbuje to sobie uporządkować. Lecz instrukcja nie o wszystkim mówi, ale jest to jednak znaczne ułatwienie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1