Kezdőoldal » Számítástechnika » Programozás » Forrás-beágyazás, de hogyan?

Forrás-beágyazás, de hogyan?

Figyelt kérdés

Az évek alatt elég sok munkám forrása elveszett, vagy kallódik valahol, valamelyik katalogizálatlan DVD-ROM-on. Ezért azt találtam ki, hogy ezen túl a programok forráskódját beágyazom a futtatható binárisba.

És itt jön a kérdés: Hogyan?

Arra várnék válaszokat, hogy ezt az elgondolást ki hogyan valósítaná meg, ha az lenne a cél, hogy:

- A bináris ne nőjön túl nagyra.

- A binárisból közvetlenül ne lehessen kiolvasni a forrást.

- A binárist egy paraméterrel meghívva, az, a benne foglalt forrást írja ki egy file-ba.


Az értelmes, konstruktív válaszokat előre is köszönöm.



2023. ápr. 6. 19:25
1 2 3 4
 1/31 anonim ***** válasza:
69%

Vannak resource mezői egy exe fájlnak (de azt hiszem az ELF-nél is van hasonló), ide be tudod rakni, pl. bezippelve, és a zip fájlt titkosítva egy kulccsal, vagy akár csak jelszóval, mivel ez is elveszhet. Ha jelszó meg elfelejtődik, akkor pl. base64 kódolást lehet rá alkalmazni, de az meg könnyen visszafordítható. Esetleg a titkosító kulcsot is berakhatod a binárisba, akkor ugyan bárki hozzáfér, de úgy már kevésbé egyértelmű talán.

A resource-okat eléri a program is, így ki tudja írni (ha nem mented le a titkosító kulcsot, akkor ez lenne pl. a paramétere)

2023. ápr. 6. 20:07
Hasznos számodra ez a válasz?
 2/31 A kérdező kommentje:
Köszi, ez indulásnak jó, csak nem elég részletekbe menő.
2023. ápr. 6. 21:03
 3/31 anonim ***** válasza:
69%

Milyen nyelven? Pl c/c++, c#, ezeket mind egyszerű megvalósítani, mert visual studioban csak hozzá adsz egy resource-ot és kész.


Én pedig úgy csinálnám, hogy a forrás kódot átalakítanám egy byte sorozattá (nyelv függő, hogy hogyan lehet, de figyelj arra, hogy maradjon meg minden karakter, pl a new line is!), ezt a byte sorozatot kódolnám valahogy (később kitérek rá, hogy mivel) majd csinálnék egy szimpla bin file-t amit source-ként bele lehetne tenni. Ezek után pedig lehetne a programban valami rész, hogy megadod a kulcsot a decrypthez az pedig csinál egy txt-t a kódodról.


Kódolásra több opciód is van én vagy a xor-t vagy az aes-t ajánlom. A xor-t a legegyszerűbb implementálni és ha nem a legjobbak ellen védenéd a kódod, akkor key lehetne pl a kedvenc ételed neve és az is elég lenne. Ha viszont jó védelem kell, akkor aes-t ajánlanék, csak ne veszítsd el az iv-t és a key-t :D

Sajnos ha teljes biztonságot szeretnél, akkor kénytelen leszel legalább ennire figyelni, hogy ne veszítsd el.


Ha c/c++ vagy c# lenne amiben csinálnád, akkor kérdezz nyugodtan és segítek! De amit leírtam az - szerintem - jó elképzelés és egyesével googlezve találsz remek videókat/leírásokat!:)

2023. ápr. 7. 01:55
Hasznos számodra ez a válasz?
 4/31 anonim ***** válasza:
87%

Háááát....


Első körben titkosítanám a forrást, amit egyszerű bináris összefűzéssel hozzáfűznék a futtatható fájlhoz. Esetleg valami azonosító karaktersort is elhelyeznék a futtatható, és a titkosított forrás között, annak érdekében, hogy a visszafejtő algoritmus azonosítani tudja a titkosított forrás kezdetét. Bár kis babrálással fixen is bele lehet drózotni a forrás méretét. A futtatható fájlt pedig - legalábbis Linuxon, ELF formátum esetén - nem zavarja, ha a végén van még valami, amire soha nem kerül rá a vezérlés. ;-) Windowsos gép most nincs kéznél, hogy azon is leteszteljem.


Egyébként pedig a forráskódokat kinyomtatom, és egy mappába lefűzöm. Így ha netán el is veszne a forrásfájl, kinyomtatva, az összes egy helyen megvan. Ja, tudom, ez nem a legtrendibb, "legdigitálisabb" megoldás, de működik. Amikor először programoztam, még C64-et használtam, és 170 kB-os floppykat. Azóta használtam 1,2 és 1,44 MB-os floppykat, audiókazettát, CD-t, DVD-t, pendrive-ot; fejlesztettem C64-re, VIC-20-ra, Spectrumra, NES-re, Enterprise-ra, TVC-re, CP/M-re, PC-n DOS-ra, 16, 32, és 64 bites Windowsokra, OS/2-re, BeOS-ra, Androidra, Arduinóra, Maximite-ra, és természetesen Linuxra, igazából bajban is lennék, ha mondjuk az egykori C64-es floppymról kellene a forrásfájlt beolvasni, de a kinyomtatott példány ott hever a polcomon, a többivel egyetemben. Amiket pedig PC-n fejlesztettem, azok ott vannak a háttértáramon, egy erre rendszeresített mappában. Tudom, nem kifejezetten erre irányult a kérdés, de szerintem praktikusabb megoldás, mint a mókolás.

Illetve ma már ott vannak olyan rendszerek, mint a Git, vagy a CVS. Ezeknek akkor is van előnyük, ha csak egymaga használja az ember.

2023. ápr. 7. 01:55
Hasznos számodra ez a válasz?
 5/31 anonim ***** válasza:
15%
Kinyomtatom, lol :D jó, hogy nem vésed fel a barlang falára. Amúgy miért nem használtok valamilyen verziókezelőt? Az pont erre van, minden nagy cég így csinálja. Vagy béreltek szervert vagy feltoljátok valami publikusra privát projectként.
2023. ápr. 7. 09:25
Hasznos számodra ez a válasz?
 6/31 A kérdező kommentje:

Kb 12 éve volt egy munkám. Egy biztonsági átjelző rendszert készítettem, amivel állapotot lehetett lekérdezni telefon segítségével, plusz bizonyos feltételek teljesülése esetén magától alarm SMS-t küldött két telefonszámra. Ez a két szám az évek alatt megváltozott. Emiatt kerestek meg most nem régen, hogy írjam át őket, viszont a forrás már nincs meg. Többször jártam már úgy is, hogy egy-egy saját célra fejlesztett programnak elkallódott a forrása, pedig később szükséges lett volna tovább fejleszteni és emiatt aztán, from scratch, újra kellett írni.

Első sorban ezért szeretném ezt az egészet. Attól kíméljetek meg, hogy mit, hogy kellett volna, mert ez engem egyáltalán nem érdekel. Aki válaszolni akar, az inkább a kérdésemre fókuszáljon. Köszönöm.

2023. ápr. 7. 11:43
 7/31 A kérdező kommentje:
Mellékes, de a kinyomtatás egy hobbistánál még lehet arhiválási opció, de 3 000 - 20 000 soros progamok esetén nagyon drága, pazarló és totál kezelhetetlen lenne. Egy A/4-es lap egyik oldalára talán 60 sor ha kifér.
2023. ápr. 7. 14:12
 8/31 anonim ***** válasza:
89%

Most elképzelem, hogy az ügyfél megkér, hogy adott fejlesztést eszközölj a szoftveren, te pedig illedelmesen elkéred tőle a futtatható fájlt... (Az meg eléggé életszerűtlen, hogy a futtatható megvan, a forrás meg nincs.)

Egyébként sem jó ötlet fixen "bedrótozni" változó adatokat a programba. Egy konfig-fájlban tárolod, hogy melyik számra küldje az SMS-t, és ha változik a szám, akkor azt át lehet írni. Egyszeri, saját célú hobbi-feladatoknál még rendben van, ha fixen beírsz valamit a programkódba, de egy profi munkánál ez erősen ellenjavallt.

Ha pedig nálad a forráskódok eltűnése gyakori probléma, akkor inkább az ilyen irányú fegyelmet kéne növelni. Hiába integrálod bele a forrást a binárisba, ha az is elveszik. (Egy megbízásos munka esetén pedig nem nehezebb a forrást is megőrizni, mint csak a binárist. Az ügyféltől visszakunyerálni meg eléggé ciki tud lenni.)


#5: Igen, képzeld, kinyomtatom. Méltatlankodhatsz, de tudod, feltalálták már a nyomtatót, ami fél perc alatt kinyomtatja a forrást, és tetszik vagy sem, a papír még mindig időtállóbb adathordozó, mint bármilyen digitális tároló. Nagyon halkan jegyzem meg, hogy sok komoly cégnél is így csinálják. Nyilván van Git vagy CVS tárolójuk is, de az a biztos, ha a kész munkáról van egy példány lefűzve az irattárban.

2023. ápr. 7. 14:29
Hasznos számodra ez a válasz?
 9/31 anonim ***** válasza:
89%

"a kinyomtatás egy hobbistánál még lehet arhiválási opció, de 3 000 - 20 000 soros progamok esetén nagyon drága"

Bocsánat, nem tudtam, hogy a bevételed a minimálbér 10%-át sem éri el.

Nyilván azt is tudom, hogy te emellett hetente adsz ki a kezeid közül 10-20 ezer soros programokat, mégpedig olyan áron, hogy a borzasztóan drága nyomtatás költsége már nem fér bele.

De számoljunk csak! Eszköztől és technikától függően egy oldal nyomtatása olyan 1 és 10 forint közötti költséget jelent. Számoljunk 5 forinttal! Tízezer sor nagyjából 150 nyomtatott oldalt jelent, ez 5 forinttal számolva 750 forint. De 10 forinttal számolva is 1500 forint. Tudom, a szoftverfejlesztők rendszerint a legcsóróbb emberek, akiket már 1500 forintnyi extra költség is romba dönt...


"pazarló és totál kezelhetetlen lenne"

Nem kezelhetetlenebb, mint nulláról újraírni valamit. Betolod egy lapolvasóba, ráeresztesz egy OCR-t, és ott is van a forrás, kezelhető formában. Kicsivel kevesebb idő, mint újraírni.


De tudod, a helyzet az, hogy van, aki a megoldást keresi, és van, aki a kifogásokat. Te utóbbi kategória vagy.

2023. ápr. 7. 14:43
Hasznos számodra ez a válasz?
 10/31 Időutazó03 ***** válasza:
100%
A Git miért nem opció?
2023. ápr. 7. 14:53
Hasznos számodra ez a válasz?
1 2 3 4

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!