ráadásul a table edit (F7) amivel beállíthatom egy adott részletre, hogy ez táblázat (azaz adat) mindenre azt mondja, hogy "out of program range", pedig nem. vagy valamit nagyon félreértek :)
ahogy elnézem, ez mindent kódnak vesz, aztán állítgathatod kézzel, hogy mi micsoda... nagyon programnál nagyon gáz. bár ki tudja, lehet hogy jobb mintha hülyeséget detektálna...
Egyebkent egyeseknek benazasnak tunhet, hogy teszteltetem az fli rutint, de ertek mar meglepetesek. Volt, hogy nalam mukodott, masnal meg nem. Az NTSC-rol meg nem tudok semmit, csak remelem, hogy egy badlineos sor ott ugyanannyi ciklus mint pal modban.
csak milyen a kimeneti formátuma? :)
közben lementem elszívni 2 cigit, ilyenkor mindig jönnek elő jó gondolatok, de nem mindig örülök nekik. Igy volt ez most is: rájöttem, hogy $8000 felett ram-rom átlapolás van, ami a disassemblert enyhén szólva is megszívathatja :(
megnézem amit bubis ajánl, aztán majd eldöntöm, írok-e saját disasst, vagy mi legyen.
A FRE nemcsak memoria, hanem a CPU es egyeb regiszterek allapota, processzor port, floppy drive RAM es CPU regiszterek satobbi... ELeg lesz szerintem ha a PRG-t tamogatod, de levagod az elso ket byte-ot... Vgya eppen a P00 sem bonyolult (de ugysem fordul elo).
nem ismeri az "illegal" kódokat.
tehát akkor amint időm van, a következő dolgokat csinálom meg az AP4-ben:
- illegal opcode-ok beépítése
- tetszőleges számú entry pointos decompiler, teljes lementett memóriára futtathatóan. (.fre vagy micsoda a memória snapshot, nem?)
Ha sok időm lenne hétvégén (de nem lesz :() akkor meg tudnám csinálni.
mondjuk szerintem senki nem sírná el magát, ha kipackolt binárisokat kellene adni a decompilernek, nem? egy becsomagolt program a decompiler szerint csak pár sor lenne: egy decompiláló rész + egy nagy halom adat.
Nocsak, úgy érzem kapható vagy. :)
Tehát. Amit írsz valós probléma, de nem kell törődnöd vele! Csak fordítsd vissza és kész. Az is nagy fejlődés, ha a régi rutinjaimat nem kell átírnom forrásba, hanem csak visszakonvertálom és esetleg átném/kommentezem, amit jónak látok. Ez elég fontos lenne ahhoz, hogy átálljak crosscompilerre. Nem kell tökéletesnek lennie (majd úgyis írjuk a bugfixeket. :) annyi mondjuk jó lenne, ha csak ott lenne cimke, ahova feltételes és feltétel nélküli ugrás van. Ja, nop2-t miért nem ismeri?
En ertettem elsore, jelentem! :-) A Markoe tud ilyeneket. De a kitomorites az tenyleg gond. Viszont ha felkesz termekrol van szo, akkor velelmezem, hogy a Lemmings meg azert nincs agyonsuritve 3-4 packerrel is? :-)
hát nézzük. egy olyan disasst, ami abból indul ki, hogy minden adat ami nem kód, nem volna nehéz megírni. szerintem egy este alatt meglenne :)
összvissz annyi lenne a működése, hogy megadsz egy entry pointot ahonnan a program elindul, szépen disassemblálja, miközben az összes lehetséges ugrási ágat bejárja. ami ezekből nem derül ki, az a kódok átlag 5-10%-a lehet, kezdetnek ez is jó eredmény szerintem. Esetleg lehetne neki paraméterben átadni kódnak értelmezendő belépési pontokat, és akkor az interruptok és egyebek is visszafordíthatóak lennének kis manuális beavatkozással.
szintén nagy gond, hogy a legtöbb program csomagolva van, és ha máshol nem, hát a packereknél nagyon jellemző, hogy egy kód alapesetben NEM azon a tárterületen van, ahol valójában futni fog (ez az önmódosítás problémaköre), ezt nem tudom még hogyan lehetne áthidalni. Ha rájönnék, lehet hogy csinálnék egy egyszerűbb decompilert.
MSVBVM60.DLL standard resze az XP-nek. Meglehet, Neked nem telepult fel automatice valamiert. Nezz utana az install CD-n. Amugy erdekes nektek milyen problemaitok vannak, mert nekem regisztralas meg egyeb ganyolas nelkul is mokudott "out of the box"? Eleg, ha ugyanabban konyvtarban benne van az OCX mint az EXE.
Disassembler: a Marko Makelanak van egy d65 nevu szimbolikus disassemblere. Igen ugyes algoritmussal, blokkelemzessel meg fekete magiaval allapitja meg, hogy egy adott binaris kod assembly-e vagy adat. Letolheto valahol a Funet-rol, asszem a crossplatform konyvtarban erdemes nezgelodni.
Egy "gond" hogy Linux-os (de GPL-s is!)... Es hasznalja a getopt.h headert, ami Wingyozon (DOS-on) nem standard. Viszont a neten le lehet tolteni azt is. Na szoval a lenyeg, hogy nekem lefordult mar ugy Win alatt is (DevC++), de fagyott, es mar lusta voltam utananezni.
nincs több example. a múltkori fejlesztésemet (szerencsére csak pár sor volt még :))) is sikerült letörölni :)))) de ez gigalámaság volt részemről.
a disassembler valóban jó lenne bele, de ugye az adatok és a kód elkülönítése csak elemzéssel lehetséges, ami viszont tökéletesen nem sikerülhet. önmódosítás útján lefutó vagy csak interruptból hívot kódrészleteket gyakorlatilag elemzéssel nem igazán lehet detektálni :(
vagy valakinek van ötlete? az adatterületeket ugyanígy lehetetlen észlelni...