C 'scrambling'

 ( STP | 2010. január 18., hétfő - 22:09 )

Üdv,

Tud-e valaki csuklóból olyan eszközt, ami egy C forráskódot kipucol? (Megjegyzések kivágása, konstansok behelyettesítése, sorok egyesítése, miegymás.)

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

gcc -E
ha jól emlékszem, így csak a prepocesszort futtatja.

gcc -E csak a preprocesszort futtatja

b+, szólok mindjárt egy havernak, hőgy ő is írja be ide, hogy "gcc -E - csak a preprocesszort futtatja".

Nem lesz mar jo, neki is 21.15-kor kellett volna irnia.
De jo kis egyseges valaszok jottek.

De azért a véletlen milyen érdekes, mi? :D

gcc -E, cepreprocesszor, csak aztat futassa e!

--
NetBSD - Simplicity is prerequisite for reliability

+1 :DD

szerinted is gcc -E, csak a blablabla? :D

de ha a gcc -E -t mar tul sokan mondtak, probald ki a cpp-t, az csak a preprocesszort futtatja:)

Hu ez nem jutott eszembe, de probaltatok mar a preprocesszort ? :)

http://djszapi.homelinux.net

Van a GCC-nek egy kapcsolója, ami csak a preprocesszort futtatja... Majd utánanézek neked, hogy melyik is az!

gcc -E? Mekkora ötlet, erre még senki sem gondolt.

talán ez is érdekes neked:

man indent

INDENT(1) INDENT(1)

NAME
indent - changes the appearance of a C program by inserting or deleting
whitespace.

A kommenteket nem pucolja ki.
--

()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

kommentek? :))))

A sorok egyesiteset sajnos a gcc -E nem csinalja meg, illetve adott esetben tulmukodese van, mivel nem csak a konstans szamokat, hanem minden #define sor altal meghatarozott dolgot felold. Legy ovatos vele.
En elso korben valami awk scriptet csapnek ossze hozza, ami megcsinalja a kommentek kidobasat meg a soregybesitest, a konstans feloldas meg ugyis bonyibb, meg azt nem is biztos hogy erdemes megtenni.
--

()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

plusz minden #include fájlt beszúr.

Ugyanakkor érdemes a Kérdezőnek megnéznie; nem tudom, konkrétan mire kell.

Geci megrendelőnek -szerződés szerint- forráskódot átadni. :)

Deszemét, rendel egy programot, és még a forráskód is kell neki?

Szerintem a változóneveket is cseréld le 30 karakter hosszú random string-ekre.

a random string nem elég szemét húzás... itt lentebb láttam az új ötletet, megfelelő mennyiségű aláhúzásjel:)
régebben olyanról is hallottam, hogy az 1lI (egyes szám, kis l, nagy I) betűkből alkotott stringre kell cserélni a változóneveket, mert az jól összefolyik a monitoron... de főleg az egy és a nagyi.

Végső esetben pedig - ha nincs kikötve a programnyelv - oda lehet adni a generált listafájlt, mint assembly forráskód... :)

http://en.wikipedia.org/wiki/Obfuscated_code ez esetleg hasznos lehet, ha már a gcc -E-s ötletek kifogytak...

Szerk: amikor a változóneveket kezdi obfuszkálni, az már durva, ezért régen ascii art kick járt ircen:)

Én a láthatóan elb..ott forráskódot nem venném át, ha a megrendelőnek lennék... Aztán lehet játszadozni a dologgal, de a teljesítési igazolást csak neki kell alávésnie...

:D

Azután majd jól felszámoltat egy-két fórumtárs:P

+1, s ha a megállapodás úgy szól, hogy a forráskódot is megkapja, akkor meg eleve elég szemét húzás obfuscálni a kódot.
Sőt, a helyében át sem venném, ki sem fizetném, tán még asztalt is borítanék, amiért feleslegesen rabolták az időmet.

Notehát.
A szóban utólag (igen, hiba) megrendelt módosításokat nem akarja kifizetni, de a szerződés szerinti forráskódra igényt tart. A két állapot nem választható szét jelenleg.
És ezt írtam "Megjegyzések kivágása, konstansok behelyettesítése, sorok egyesítése, miegymás".
A miegymást akkor ki is húznám, az ötletek "durvaságát" látván.
Szóval, ha dolgoznunk kellett kvázi ingyen, akkor dolgozzon ö is, ha tovább akar lépni innen!

"a két állapot nem választható szét jelenleg" -- Gondolom verziókövetést csináltál a fejlesztés során, abból meg szépen vissza lehet követni a fejlesztést a vitatott módosítások előttig...

Nem.
A szóban rendelt plusz munka nem a szerződés teljesítés után született, hanem a fejlesztés folyamatában, így nem lehet rollback-elni a svn-ből.

akkor ezt a melót szépen átadod, a szóban elrendelt plusz fejlesztések költségét pedig a "tanulópénz" főkönyvi számlaszámon elkönyveled.

És visszaértünk a topic elejére.
"Tud-e valaki csuklóból olyan eszközt, ami egy C forráskódot kipucol? (Megjegyzések kivágása, konstansok behelyettesítése, sorok egyesítése, miegymás.)"

gcc -E, ami csak a prepocesszort futtatja, nem jó.

Amit, mint gányt a megrendelő, ha van esze, nem vesz át. Vagy pedig átvesz, viszont a fejlesztő a saját rosszhírét szépen meg fogja vele alapozni: "nédda, ilyen gány kódot ad ki a kezéből..."

mondom szépen adod át, nem gányolva. és akkor nem tértünk vissza a topic elejére.

+1
Ha mégis megpróbálkozol vele (mármint STP), akkor néhány jólirányzott sed szkript csodákra képes. Első menetben kigyűjteni (reguláris kifejezés segítségével, pl. sed) az int, double, float, char ... utáni sztringeket a ";", a " ", a "[", és a "=" karakterig (meg amit kihagytam) egy fájlba. Majd a fájl tartalma alapján véletelenszerűen, vagy módszeresen helyettesítő sztringek generálás. És ez alapján a cserék végrehajtása (szintén lehet sed).
Utána minden sor "/*"-al kezdődő részének törlése a sor végéig (lehet sed).
Minden sor "//"-al kezdő részének törlése a sor végéig, utána minden sor törlése a "//" jelig. Ez kicsit macerásabb de sejtésem szerint ez is mehet sed-el (hasonlót még nem csináltam, de emlékeim szerint a doksi szerint lehet), esetleg awk-al.

1. kiegészítés: Az eredeti kódot ne töröld, mert valószínűleg nem fogja elfogadni a megrendelő az "egyszerűsített" változatot :-).

2. kiegészítés: ha nagyon ráérsz, és törvényesen ki akarsz tolni vele, akkor írd át a kódot szerződés szerinti (szóbeli módosítások nélküli) verzióra, és azt add át szépen kommentezve. Ekkor egy szava sem lehet. Legfeljebb legközelebb nem veled dolgoztat, de szerintem ez a veszély már nem áll fenn. Vagy pedig marad a tanulópénz elkönyvelése.

-----
Dropbox tárhely igénylése: https://www.getdropbox.com/referrals/NTI2MzM2MjA5

akkor a módosítások előtti állapotot átadod rendes forráskódban.
a módosítást meg elteszed patch formájában, majd ha fizet, megkapja.

Ez mondjuk jó ötlet.

Persze, nyílván árnyaltabb a kép, én arról az esetről beszéltem, hogy "s ha a megállapodás úgy szól, ... ", akkor blablabla.
Igazságot tenni úgysem tudunk, te tudod hogy mi van a megrendelővel, mi nem, én a gcc -E megoldást ismerem, másról nem tudok.
(Megírni mondjuk nem lenne sok, ami neked kell.)

gcc- E, azthiszem.... Csak a preprocesszort futtatja!

Közben kitaláltam, hogy gcc -S meg assembly kimenetet dob neki, az is forráskód végülis. :D