PIC program visszafejtés

Pic

Linux

Receptek

Írások

Magyar English

pic

PIC program visszafejtés

A minap visszakaptam egy régi PIC progimat, amihez már sajna nincs meg a forrás. Ez már önnmagában is baj, de hogy még ezen módosítsak is, no az már szinte lehetetlen. A gputils és az mplab is tud ugyan visszafordítani, de azt hiszem nem kell ecsetelnem, mennyire használhatatlan. Nos egy kis keresgélés után találtam egy nagyon ígéretesnek tűnő munkát.

unPIC.pl

Egy ügyes magyar programozó (Rudnai Tamás) átírt Perl-re, egy már nem karbantartott programot (Timo Rossi), ami ezáltal platformfüggetlen lett. A kimenete nagyon felhasználóbarát, a segítségével a program szerkezete elég jól megismerhető és kommentelhető. Valamint van egy nagy előnye: a programunk módosítás után, újra le is fordítható.

Használata (linux alatt)

Telepítsük valahova, pl /home/sajat_nev/bin könyvtárba és adjunk rá futtatási jogot. Innentől, már bárhol könnyen használhatjuk.
Ellenkező esetben másoljuk a visszafejtendő program mellé, adjunk rá írásjogot és úgy adjuk ki a parancsot, ekkor ne felejtsük el a parancs elől a "./" karaktereket sem.

Tehát adjuk ki az: unPic.pl p18F819.inc visszafejtendo.hex > forras.asm vagy az ./unPic.pl p18F819.inc visszafejtendo.hex > forras.asm parancsot. A program neve után, meg kell adnunk a használandó processzorhoz tartozó include fájl nevét (ez az információ nincs benne a .hex fájlban, tehát a program nem tudja kitalálni azt), aminek szintén az elérési úton kell lennie. Ha mégsem lenne rajta, egyszerűen másoljuk a visszafejtendó program mellé.

Az aktuális könyvtárban fogjuk megtalálni a forras.asm fájlt, amit ezután akár azonnal le is fordíthatunk, ellenőrizve ezzel a szkript megfelelő működését.

Az újra fordítás után, érdemes leellenőrizni mennyire kapunk hasonló .hex fájlt.
Nem kell megijedni, ha nem lesznek teljesen azonosak a .hex fájlok. Mert lehetnek olyan eltérések, amelyek egy PIC-ből kiolvasott program és egy lefordított program között fennállnak. Ilyen pl. az üres memóriaterület utasítása 0x3fff = addlw 0xff, de ez az utasítás lefordítva: 0x3eff.

Szóval a hasonlítást, mindenképpen kritikusan végezzük el.

A programot letölthetjük a web oldaláról, vagy innen.

Képernyőképek a visszafordított forráskód minőségéről

Fejléc
Fejléc
Szubrutin
Szubrutin
EEPROM adatok
EEPROM adatok
Szimbólum definíciók
Szimbólum definíciók
Utolsó módosítás: 2008.12.07. 01:04:58

Copyright Alex 2007-2015