Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Igen, tulajdonképen mindig ezt csinálod... Csak sokkal könnyebb, ha van kiegészítő információd: a memória helyek cimkéje vagy neve...
MpLab: Config, típus kiválasztása, File import hex, Debugger Select toot, MpLab Sim. Máris kezdődhet a felfedezés. A töréspont is mőködik.
Értem, közben sikerült is rájönnöm.
Több órányi munkával sikerült nagyon durván elrejtenem a hex-ben az LCD-re küldendő karaktersorozatokat, így már a szavakban szereplő karakterek ASCII kódjára rákeresve elképesztően nehéz átírni a szövegeket. De ha lehet debuggolni (márpedig lehet) akkor sokkal kevesebbet ér a dolog, bár így sem leányálom a visszafordító feladata. Hogyan lehetne hát a lehető legjobban elrejteni egy karaktersorozat LCD-re való kiküldésének kódját? Itt pont te írtál ilyesmiről: Bővebben: Link De ez egyenlőre nekem nem világos.
Egyszerűen bekapcsolod a kódvédelmet, és ágyő...
Nem is értem, miért is kell ennél több??
Azért, mert Attila elérhetővé szokta tenni a kódjait .hex formátumban a honlapján. A kódvédelmet hiába kapcsolná be, az csak a beprogramozás után él. Gondolom a plágium elkerülése a cél.
Szerintem ha a kiírandó kódokhoz ( ASCII ) hozzáadsz egy értéket a letárolásnál és a kiírás előtt ugyanezt kivonod, akkor rákereséssel nehéz lesz értelmes szavakat találni a visszafordításban ( így már csak a program megértése után lenne lehetőség módosítani )!
Steve
Az előbb már nem tudtam hozzáírni, de ugyanilyen jó lehet az XOR művelet ( és akkor mindig ugyanazt kel csinálni!):
pl. 'A' (41H) XOR 30H --> 71H ('q') vissza: 'q' (71H) XOR 30H --> 41H ('A') A 30H helyett lehet más is (csak egy példa volt) ! Steve
Ezek nem igazan nehez dolgok tekintve, hogy egy ilyen XOR muvelet tul egyszeru titkositasnak. A legegyszerubb egy un. nyilt kulcsos tamadassal feltorni (majdnem olyan gyorsan lehet vele a szoveget megtalalni mintha el sem lenne titkositva). Egy regebbi blogomban irtam errol reszletesen, ugyan picit mas temaval kapcsolatosan, de ugyanugy alkalmazhato ebben az esetben is. Akit erdekel a matematikaja annak ime:
Crypto-Analysis in Shellcode Detection A nyilt kulcsos tamadas amugy ennel sokkal bpnyolultabb titkositasoknal is alkalmazhato (pl. DES eseteben). Ha igazi vedelem kell akkor mar kicsit osszetettebb algoritmust kell valasztani, pl az XTEA-t. Csak ezzel is az a baj, hogy szimmetrikus kulcsu es a kulcs ugye ott lesz a kododban, kulonben magad sem tudnad kinyerni az uzenetet. Valoszinuleg a legjobb megoldas persze az lenne ha a chip-et a sajat bootloadereddel elore felprogramozottan forgalmaznad (ami le is van vedve tehat mas nem tudja meg a kulcsot es az algoritmust amit alkalmazol), es az kodolja ki a ra kuldott firmware-t -- igy a HEX helyett egy mar eleve eltitkositott adathalmazt tudsz atadni a delikvenseknek. Idézet: Ez nem járható út, mert ha a HEX állomány csak az Attila által forgalmazott chip-be tölthető, akkor már nincs értelem a HEX állományt külön közzétenni. Akkor egyszerűbb gyári kódvédelmet használva, az alkalmazást tartalmazó mikrovezérlőt forgalmazni. „Valoszinuleg a legjobb megoldas persze az lenne ha a chip-et a sajat bootloadereddel elore felprogramozottan forgalmaznad” Idézet: „ha a HEX állomány csak az Attila által forgalmazott chip-be tölthető, akkor már nincs értelem a HEX állományt külön közzétenni.” Dehogynem, egy ilyen titkositos bootloaderrel firmware update-eket is kuldhet a felhasznaloknak lecsokkentve annak kockazatat, hogy a kodot visszafejtik. Ugy tudom eleg sokan alkalmazzak ezt a fajta modszert. Idézet: Igazad van, de update-ről eddig nem esett szó, ezért kiesett a megfontolásaimból. „Dehogynem, egy ilyen titkositos bootloaderrel firmware update-eket is kuldhet a felhasznaloknak” A DIOLAN honlapján egyébként van ilyen készen (nyíltforrású projekt, USB HID bootloadert valósít meg, titkosítással).
Szia!
Nem tudom, hogy Attila mi ellen akarja védeni a programját, én úgy gondoltam, hogy az egyszerű "kiolvasom-módosítom" ellen, szerintem arra elég az XOR, de tanulmányozni fogom a leírásokat, fogok belőle új dolgokat megtudni, Attila meg eldönti milyen szintű védelmet akar ! Steve
Lehet, hogy ez már szőrszál hasogatás: Ha nyílt kódú, akkor letölthető a forrás és a hex is. Ha van forrás, akkor már csak a kulcs ismeretlen. De a forrás nyomkövetésével a kulcs megszerzése már csak idő kérdése, a kulcs valahol benne van a dekódolóban...
Ha a forrás és a hex nem érhető el, akkor csak előre felprogramozott kontrollert lehet venni... Idézet: Ennél rosszabba helyzet, mert a kulcsot megkapja a delikvens a HEX mellé (nem a bootloader tartalmazza!). „Ha nyílt kódú, akkor letölthető a forrás és a hex is. Ha van forrás, akkor már csak a kulcs ismeretlen.” Viszont a dolgon ott lehet csavarni egyet, hogy a forráskódban a dekódolás megváltoztatható. - legegyszerűbb esetben az iterációk számának megnövelésével. Ezzel a titkosítás egyedivé tehető, s mivel bootloader elvileg olvasásvédetté tehető, így már elég reménytelen lesz a visszafejtés. A DIOLAN rendszere három komponensből áll: enkóder (amit a végfelhasználóhoz nem jut el), a letöltőprogram, és a bootloader (ez a dekóder). Nyilván a titkosítás megváltoztatásakor az enkódert és a dekódert tartalmazó bootloadert egymással szinkronban kell változtatni, egyedivé tenni. Idézet: „Nyilván a titkosítás megváltoztatásakor az enkódert és a dekódert tartalmazó bootloadert egymással szinkronban kell változtatni, egyedivé tenni.” Hozza tennem a titkositasi algoritmuson nem erdemes valtoztatni, azt az elejen kell jol megvalasztani. A kulcsot pedig lehet dinamikusan is valtoztatni (tehat minden update-nel a kovetkezo update-hez tartozo kulcsot is letolti pl -- nyilvan ezt is a titkositott csatornan keresztul). Idézet: Már hogy is ne tartalmazná! Ismernie kell a dekódolási eljárást. A felhasználónak nem kell a kódoló kulcs, elég a dekódoló, azzal is meg tudja szerezni az eredeti (nem titkosított) program kódot, azt meg titkosítás nélkül beprogramozhatja. A dekódolási eljárást más processzorral (PC) is elvégezheti.„...mert a kulcsot megkapja a delikvens a HEX mellé (nem a bootloader tartalmazza!)” Ha nem a kontrollerrel együtt (felprogramozva, kiolvasásvédve) jut el a felhasználóhoz, hanem hex állományben, akkor a kulcs visszafejthető marad. Hiába van a hex -ben a kiolvasásvédelem, az pár mozdulattal kivehető. Ha letöltés után módosít a kulcson, akkor még egy debuggolás / szimulálás és meg is van az új kulcs... Az meg már hab a tortán, hogy az update -nek valahogy ellenőriznie kell mit is módosít. Ekkor a boot loader valahogy elküldi a program egy részletét. Ha már debuggolom, akkor ez a funkció nagyon jól jön, vele a teljes programtartalom felküldhető... De ez már más topik témája is lehetne.
Köszönöm a válaszokat, nagyon érdekes dolgokat mondtatok itt és e-mailben is!
A kódvédelmet használtam de csak addig amíg a fejlesztésbe ölt pénz vissza nem térült a felprogramozott, kódvédett PIC-ek árusításával. Utána feltettem a hex-et (mert nem akarok nyerészkedni) és a problémám az hogy ebben át lehet írni a LCD-re kimenő karaktersorozatokat. Kissi által említett megoldásra gondoltam én is, csak sokkal brutálisabban és többszörösen egymásba ágyazva, véletlenszerűen hogy semmiféle rendszer ne legyen felfedezhető benne ami elárulná a kérdéses kódrészlet helyét. De ha valaki debuggolja és szépen lépteti akkor egyszer csak látni fogja hogy megjelenik az LCD-n az adott szöveg és akkor ott elkezdi figyelni a kódot. A jelenlegi megoldásom ezt a módszert is igencsak megnehezíti de nem eléggé. Nekem 17 karakter elrejtése több mint 3 órámba telt, visszafejteni sokkal-sokkal több és nagyon higgadtnak kell hozzá lenni... De ha egyszer csak megjelenik a karakter, majd a következő... Esetleg lekapcsolt kijelzőre kellene elküldeni a karaktereket majd kiküldeni egy kijelző bekapcs parancsot.
Miért kell hozzá debugger? Betöltöm a fejlesztőbe, a kapcsolási rajzról a fejlesztő logikai analizátorába felveszen az LCD jeleit. Még be sem kell kapcsolnom a tápját... Az alatt az n óra alatt egy másik project készülhetne - kódvédett kontrollerrel...
Jó végülis mindegy, az eredmény, a helyzet és a problémám ugyan az.
Nyugi, készül más projekt is gőzerővel, csak ez most kicsit bosszant. Tudtam eddig is hogy átírható, csak úgy gondoltam hogy áááá... úgyse értenek ehhez sokan meg biztos tiszteletben tartják több hónapi munkámat.
Nem akarok örökké kódvédett PIC-eket árulni mert nem akarok nyerészkedni az egyébként is vékony pénztárcájú hobbista kollégákon. Meg persze szeretném hogy a munkám gyümölcsét minél többen élvezhessék és ha ez nem 500Ft-nyira és egy átutalásnyira van hanem csak egy linkre való kattintásnyira akkor erre sokkal nagyobb az esély.
Nulla Forintért egyébként sem fogok kétnaponta Chipcadbe meg postára szaladgálni hogy az 1000Ft-os PIC-et 1000Ft-ért adjam tovább felprogramozva csak azért hogy a hex ne kerüljök ki a kezeim közül. No meg hex nélkül nem tehetném fel az áramköröket ide a HE-re. De nem tudom, lehet aztán hogy marad a kódvédett PIC az ez után következő áramköreimben. Abba tuti nem nyúl bele senki. Idézet: „Nekem 17 karakter elrejtése több mint 3 órámba telt, visszafejteni sokkal-sokkal több és nagyon higgadtnak kell hozzá lenni...” Nem ketelkedem ebben, de az koztudott, hogy nemely jatek szoftver fejleszto (sot uzleti szoftver fejlesztok is) dollar milliokat olnek abba, hogy levodjek a termekeiket -- a hackerek meg nehany ora alatt feltorik azokat. Ha valaki tudja hogyan kell ilyesmit csinalni akkor az ellen nem nagyon lehet mit csinalni. Az nyilvan valo, hogy az egyugyu HEX masolgatokkal szemben a megoldasod jo lesz.
Ezt még OFF-ba írom aztán tényleg vége:
Persze, igazad van. Aki nálamnál kevesebb vagy hasonló hobbista "mértékű" programozói tudással rendelkezik, annak tuti hogy nagyon komoly fejfájást okoz a megfejtése és ha sikerül is, az jó pár napba telik. Nekem csak ennyi a célom. Hiszen aki vérprofi, az inkább fogja és azt amit én 9 hónapig programoztam assembly-ben, ő újraírja a nulláról C-ben pár nap alatt. Szóval a kínos kódrészek védelmét csak annyira akarom megerősíteni hogy a megfejtésének ideje annyi legyen mint a teljes program újraírása.
Elég szomorú, hogy itt tartunk, hogy egyes emberek nem tudják megbecsülni mások szellemi munkáját. Ha valaki nem tudja elviselni az "1-2 perces logót", az meg sem érdemli a programot, de akkor meg mi értelme közreadni? Sajnos ez a 22-es csapdája.
Szia! Nem a logoval van baj. Ha kihagyják egye fene. Az a baj, hogy itt a He-n is volt olyan program, amit valaki a sajátjaként mutatott be, aztán kiderült a turpisság. A kódba a saját adatait írta, átírva a fejlesztőét. Na ez a piszokság! Meg más szabad kódú programját saját név alatt pénzért árulni beégetve. Megértem Attilát.
Basszus... nekem eddig csak a nyákjaimat árulták (erről tudok). Lehet hogy a továbbiakban tényleg inkább maradt a kódvédett, pénzért árult PIC.
Igen, a Szilva fele PicKit2 klont is arulta valaki a Vateran penzert, es meg csak meg sem emlitette ki tervezte...
Igen erős dillemma ez, hogy vajon kompenzálja-e az a tudat hogy adtál valamit a közösségnek, azt hogy valaki meg lenyúlja a munkádat.
Amúgy ha csak a neved lett volna benne a programban, az nem zavart volna senkit szerintem. Viszont a hittérítés az már más, az lehet zavaró. Több kompromiszzum is létezhet itt, pl adhatod a felprogizott kontrollert üres árában, vagy nem sokkal drágábban, vagy valami szolídabb bejelentkező kép, ami kevésbé bosszantja a tulajt is megoldás lehet.
Na mostmár kíváncsi lettem, mi volt ez a hittérítés?
Hála a Gooooogle fordítónak, egyre többen olvassák a "Nagy Vilából" a magyar nyelvű fórumokat. Saját, ide feltöltött programjaimról kérdeztek már Amerikából és Angliából is.
Idézet: „Több kompromiszzum is létezhet itt, pl adhatod a felprogizott kontrollert üres árában, vagy nem sokkal drágábban, vagy valami szolídabb bejelentkező kép, ami kevésbé bosszantja a tulajt is megoldás lehet.” Ha jol ertem a baj nem azzal van, hogy egy hobbysta otthon sajat maganak lecsereli a szoveget vagy kigyomlalja a bejelentkezo kepet. Hanem azzal, ha valaki ezt sajatjakent kezdi el arusitani! Szerintem megoldas lehet a megfelelo szoftver licensz (GPL vagy Apache stb) amivel jogilag levedheto, hogy az eredeti szerzo nevet megvaltoztathassak illetve hogy zart kodu programkent aruljak penzert azt amit ingyen kellene nyilt forraskodban. Ha ezt megserti az illeto akkor beperelheto es ugy mar nem biztos, hogy megeri a kockazat... |
Bejelentkezés
Hirdetés |