Tak me tu zase mate :D (to mate radost co?)
mam ted dalsi kriticky (prome) dotaz :)
existuje zpusob, jak v kodu ochranit stringy? abyjste rozumeli.. mam exe aplikaci, a ta kdyz se otevre v hex editoru daji se stringy (treba zpravy co se podilaji do chatu a podobne) prepsat a zmenit, to se mi povedlo zamezit relativne jednoduse - programem Themida kterej umi vnitrek zakodovat a jeste ho ochrani proti pouzivani memory scanneru a podobnych sracek.. a misto example:
pred kryptovanim pomoci Themida:
http://upload.avp2.org/predthemidou.jpg
a po kryptovani:
http://upload.avp2.org/pothemide.jpg
takhle upravenej program proste nejde menit..
a ja chci vedet jestli existuje nejaky sw ktery dokaze takhle zakryptovat a jiny typ souboru (themida umi exe a dll) ale muj projekt je projekt ve formatu LTO (je to nejaky typ dll a tu themida neumi)
a NEBO zda je mozne nejakym zpusobem ty stringy ochranit uz pri tom programovani (VS6 sp5).. aby proste ve vykompilovanym projektu po otevreni v hex editoru nebyli videt.. nebo at jsou rozhazeny nebo co ja vim...
dik.
Fórum › C / C++
Stringy - jak je ochranit?
hmm na to ma napada take riesenie. Nepouzivaj stringy ;) Respektive vsetky stringy ked mozes tak umiestnuj niekde mimo aplikaciu do nejakeho suboru ktory bude zakryptovany nejakym algoritmom. Potom si vytvor nejaku globalnu premennu(pole tych stringov) alebo nejaky singleton ktory na zaciatku aplikacie tiet stringy nahra zo suboru, dekryptuje ich a pristupuj k stringom cez tento singleton alebo cez tu globalnu premennu.
Ivo: skor ako sa zacnes rozculovat skus presnejsie popisat tvoj problem. Alebo potrebujes na to kompletny kod? To ze si zaciatocnik nieje choroba. Ale taktiez to nieje obmedzenie aby si sa nieco naucil. Ked som sa ja ucil programovat, tak som nikdy nemal internet, fora atd.. a naucil som sa to.. bolo to x-krat tazsie ako to mas ty. Nemal som komu napisat: dakujem za "pomoc". Preto zase nemozes cakat ze ti tu clovek hned napise cely kod. Na zaciatku tohto topicu si hladal riesenie. Ja som ti jedno popisal. Vies od ludi na forach nemozes cakat kompletne riesenia. Ja osobne nepatrym k ludom co len pisu nezmysli a neporadia k veci, stale sa snazim pomoct. Lenze vies, ludia tu radia len pre dobry pocit, a forum moze len naviest, nevyriesi za teba urcity problem.To jedine ty sam sa s tym musis popasovat. Mas v tom nejake nejasnosti? Tak sem z nimi. ALe konkretne nejasnosti. Nie ze ja som zaciatocnik. Takze skor ako sa opat rozculis ze ten blbec sn3d ti tu nedal kompletne riesenie, vrat sa k mojemu prvemu prispevku, 4x si ho poriadne precitaj a napis konkretne nejasnosti. Neverim ze tvojimcielom je len kody opisovat z for, urcite sa chces nieco naucit. Tak podme na to ;) Co je nejasne? (verim ze ked tu napises konkretne nejasnosti tak ti hned odpise x-ludi ktory ti budu vediet veci vysvetlit).
Co sa tyka kryptovania tak to nieje zase tematika ktora sa da vyriesit jednym linkom. Predsa len kryptovanie ma svoju vahu. Takze treba sa zamysliet nad tym ake kryptovanie ty osobne potrebujes? Myslim ze nepotrebujes nejake komplikovane. Myslim ze uplne ti principialne postaci aj klasicke kryptovanie z cias Caesara ;) cize.. si vymyslis vlastnu mapu znakov. Kazdy znak je reprezentovany v PC nejakym cislom. PRiklad:
dajme tomu ze mame pismeno 'A'.. to je vlastne 65. A ty mozes urobit taku vec.. ze zoberies 65 a zmenis ho na 33 co je znak '!'. NEviem ci som sa zrozumitelne vyjadril lebo niekedy pisem ako tatar. Taktiez mozes urobit tu funtu ze jeden znak bude reprezentovany 32 bitovym unsigned int cislom a vytvoris si nejaku rovnicu do ktorej budes zahrnat aj na ktorej pozicii v slove sa nachadza.ZAse uvediem priklad. Dajme tomu ze mas slovo 'Ahoj':
A je 65 a je na prvom mieste.. vytvo si nejaku rovnicu (X1 + 20) * 3 + X2. Za X1 dosadis 65 a za X2 dosadis poziociu 1. Tak dostanes vysledok 256.Dalsie pismeno je 'h' = 104 a pozicia je 2. Cize vysledok je 374. Tieto cisla nasledne vies prehodit na znaky. Dajme tomu ze mas cislo 396 na pozicii 3.Z toho vlastne dostnes 111 co je 'o'..
Je to fakt jednoduchy princip ktory ma urcite nevyhody ale msyslim ze tak schovas to co chces..
Já jen k tomu kryptování doplním, že pokud si vytvoříš nějakou vlastní šifru ala XOR, tak ti to nikdo zkoumat nebude. Na rovinu, proč by se stím sral? Pokud vytváříš komerční projekt, tak to asi nebude štastná cesta( včetně Ceaserovy šifry), pokud ne, tak si to klidně jen zaXORuj nějakým tvým "tajným" klíčem. Kryptování je prostě postaveno na algoritmech, o kterých se ví, jak fungují.
To Jura: sorry ale nepochopil som co si chcel povedat. si teda zastancom vymislenych sifier ktorych hlavna sila je v tom ze som ju prave vymislel a nikto je nepozna alebo fandis osvecenim algoritmom?
to all: minule som videl (tusim na spektre bol serial o kryptografii) a bola tam sifra ktora fungovala principe tajneho slova ktore poznal iba adresat a prijemca (iba :) a kaze pismeno spravi bolo posunute o ascii hodnotu pismena v tajnom slove ktore sa opakovalo po celu dlzku spravy. teda:
tajne slovo: cav
sprava: nazdar
C 67
N 78
67+78==145
A 65
A 65
65+65==150
V 86
Z 90
86+90==176
C 67
D 68
68+67==135
A 64
A 64
64+64==128
V 86
R 82
86+82==168
sifrovany kod bude teda pozostavat z ascii kodov 145 150 176 135 128 168
je mozne to rozlustit pri dostatku sifrovaneho materialu s rovnakym tajnym slovom a za pomoci tabulky frekvencie vyskytu znakov danej abecedy (a dostatkom casu samozrejme:)
btw.: mozno je v scitani niekde chybka ale na principe to nic nemeni a navise su prazdnini
To olgo:
Já nejsem zastánce ničeho:). Ne vážně, šifrování není o tom, že si nějaký týpek doma na koleni vymyslí svou tajnou šifru. Prostě se používají známe šifry(BlowFish,AES,RC4 aspol.), u kterých se ví, jak fungují. Ale víc ti k tomu nepovím, chtěl jsem se tomu kdysi věnovat, jenže jaksi nedostatek času udělal své.
To Jura: som na tom asi podobne. ono problem znamich sifier je prave to ze su zname aj ich slabe miesta, na rozdiel od tych na kolene vyrobenych.
Bože :D
olgo šifra kterou popisuješ je tzv. Wignerova šifra. Navíc to nemáš tak docela kompletní - co se stane když sečteš znaky z ord hodnotou např. 178 a 223? ;)
Tvé názory ohledně šifer jsou jinak zcela směšné. Máš vůbec představu jakým způsobem funguje ta frekvenční analýza? Která je btw samozřejmě nepoužitelná pokud je plain text (zdroj) pro daný jazyk nesmyslný?? Je zvykem že se na tomto fóru objevují bludy, ale TOTO :)) Kromě toho se dnes už tato šifra vůbec nepoužívá. K šoučasné špičče patří RSA a 3DES. Jejich "slabé místa" jak píšeš jsou samozřejmě známá ovšem tato znalost je ti k ničemu. Nejmodernější stroje by hrubou silou tuto šifru neprolomily ani za milióny let. Pracuje se na nových metodách (použití neuronových sítí, atd.) které začínají fungovat ovšem k takovým věcem nemá přístup jen tak někdo.
Nepřestává mě fascinovat jak můžeš něco tak zarytě tvrdit a zjevně se vůbec nevyznat v oboru :))
K dotazu - pro své potřeby klidně použij Wignerovu šifru, kdyby to někdo chtěl lámat, je možné že to zvládne ale za ohromné množství času (tzn proč by to dělal?)
olgo šifra kterou popisuješ je tzv. Wignerova šifra.
dik za info
co se stane když sečteš znaky z ord hodnotou např. 178 a 223? ;)
v pripade ze je sucet vecsi ako rozsah abecedy tak to (pola ocakavani) pretecie. teda tvojich 178 + 223 pretecie a vysledok bude 146.
kedze je vecinou na ulozenie jedneho znaku pouzity prave jeden byte nepokladal som za nutne to pisat.
...
btw.: citaj co je napisane. sice moje povedomie o frekvencnej analize je dost plitke, nic to nemeni na veci ze tu na tuto temu nepadlo slovo.
edit: "Nepřestává mě fascinovat jak můžeš něco tak zarytě tvrdit a zjevně se vůbec nevyznat v oboru :))"
ano je to ocividne kedze to pisem v predoslom poste :)
Komentoval jsem hlavně toto ...
ono problem znamich sifier je prave to ze su zname aj ich slabe miesta, na rozdiel od tych na kolene vyrobenych.
...a snažil se naznačit že je to pro prolomení téměř nepodstatné. Tu analýzu jsem jen zmínil ;)
To že se pro jeden znak používá jeden byte je taky dost odvážné tvrzení (např. UNICODE). Pokud ovšem používáš ASCII není problém... Ber to zase jen jako zmínku, abys mohl popř. popřemýšet jak to upravit aby to bylo univerzální.
Hlavně jsem ti chtěl říct že by jsi se neměl s nějákým tvrzením pouštět do debat která zabředávájí k tématům kterým nerozumíš ;)
no je pravda ze moj zaujem o sifri je skor pasiny a vecsia sifier ktore aspom poznam su starsie az stare a vecsinou teda lahko rozlustitelne.
2Ivo: Jeslti chces byt nekdy aspon nejaky programator, tak se musis naucit jedno: cist, ucit se, trenovat, cist, ucit se, trenovat... sn3d ti dal vybornou odpoved - myslis snad ze ti tu napise kod cely? Divim se, ze ma jest tolik trpelivosti ti neco vysvetlovat, ja bych odpovedel neco jako nas*at kdybys misto podekovani na me vyblil vetu typu: "Tak teda dik za 'pomoc'."
Pokud nejsi schopen pochopit, ze toto je uz docela vycerpavajici odpoved(a nikdo nerika, ze se nemuzes ptat dal, jak konkretne mas neco udelat), tak prosimte bez od programovani pryc. Nemas na to.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Jak rozdělit string obsahující \r\n jako separátor slov na stringy o… — založil ProXicT
Disassembling - stringy — založil Matěj Andrle
Prosím o pomoc.. stringy.. — založil Rommie
Custom stringy z TXT souboru - problém — založil Origin
HEREDOC generuje špatně uvozovky. Vyrábí 'stringy" — založil certeon
Moderátoři diskuze