Bine ati venit pe HackTeam Forum !
Aici veti gasi o gama larga de metode de hack atat pe Windows cat si pe platforme Linux/Unix , programe in consecinta ,tutoriale . In acelasi timp aici veti gasi si asistenta help in materie corespunzatoare . Precizam ca tot ce se gaseste pe acest site este doar in scop de dezvoltare iar voi va asumati intreaga raspundere pt actiunile pe care le savarsiti . || SS-TEAM || Va Multumeste pt vizita !
Lista Forumurilor Pe Tematici
Bine ati venit pe HackTeam Forum ! | Reguli | Inregistrare | Login

POZE BINE ATI VENIT PE HACKTEAM FORUM !

Nu sunteti logat.
Nou pe simpatie:
dany_frumusik Profile
Femeie
24 ani
Constanta
cauta Barbat
24 - 56 ani
Bine ati venit pe HackTeam Forum ! / Windows - Hacking ! / Tutorial Hexa  
Autor
Mesaj Pagini: 1
Salieri
Mafioso

Din: Sufragerie
Inregistrat: acum 18 ani
Postari: 469
Vrei sa modifici un executabil, sa faci un crack, un trainer, sau sa faci un troian indetectabil ? M-am gandit la acest lucru si m-am hotarat sa va prezint codul hexazecimal si cum sa lucrezi cu dansul.

Introducere in hexazecimale

Hexa este prescurtarea de la "hexazecimal" care efectiv inseamna un numar in baza 16  . Baza de numarare pe care o folosim de obicei se numeste baza decimala (baza 10). Adica la fiecare 10 subunitati se mareste cu o unitate cifra din stanga. Cum sistemul hexazecimal este in baza 16, are cu 6 simboluri mai mult . In particular, foloseste cifre de la 0 la 9 si litere de la A la F inclusiv pentru a reprezenta (A=10, B=11, C=12, D=13, E=14, F=15)
In sistemul decimal, subunitatile pot doar merge pana la 9. In concluzie, numarul "zece" trebuie sa aiba 2 sloturi pentru cifre(unitati). "1" pe locul zecilor (unitatilor superioare) si "0" pe locul uitatilor. Unitatea superioara zecilor este suta, dupa aia mia, etc. Si pentru ca este un sistem decimal, fiecare slot poate fi reprezentat de o putere a lui 10 (de exemplu caciulitza "^" inseamna "la puterea a ..." - cu alte cuvinte, denota un exponent)
1 = 10^0 sau 1
10 = 10^1 sau 10
100 = 10^2 sau 10*10
1000 = 10^3 sau 10*10*10
10000 = 10^4 sau 10*10*10*10

In sistemul hexazecimal, fiecare unitate poate varia intre 0 si F. Spre deosebire de numarul 10 din sistemul decimal, in sistemul hexazecimal, numarul 10 este reprezentat doar de o singura unitate si anume litera A (ca v-am spus ca de la 10 pana la 15 se ia cu litere) ... numarul 9 din sistemul decimal fiind cam ca "F" din sistemul hexazecimal.
Deci, pentru cei care n-au intzeles: pe cand in baza 10, merge doar de la 0 la 9, in baza 16(sistemul hexazecimal), uite care sunt "cifrele": 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Cat timp unitatea inferioara nu ajunge la 16, nu se adauga o unitate superioara.Astfel, se face urmatoarea conversie:
Baza 10    Baza 16
1=            16^0 (adica 1)
10=          16^1 (adica 16)
100=        16^2 (adica 256)
1000=      16^3 (adica 4096)
10000=     16^4(adica 65536) - limita de int
.........................................
si lista continua la infinit

Deci convertind dupa simboluri, avem urmatoarele:

1 in dec = 1 in hex
10 in dec = A in hex
100 in dec = 64 in hex
1000 in dec = 3E8 in hex

Ca sa fiu sigur ca atzi inteles: luati ultimul exemplu si ganditi-va de ce 3E8 in hexa este 1000 in baza 10. In primul rand, este un 3 in locul lui "doua sute cinzeci si sase". In baza 10, daca ai cifra 3 pe locul sutelor, asta inseamna ca ai trei sute, k ? Prin urmare, in sistemul hexa, un 3 in locul doua sute cinzeci si sase inseamana ca sunt 3 de cate doua sute cinzeci si sase. In alte cuvinte: 3*256 sau 768 (pentru echivalentul in baza 10)
Asta e in locul lui doua sute cinzeci si sase. Acum, in unitatea superioara, "E"-ul. Tinand cont ca in hexa, E inseamana 14, inseamna ca avem saisprezece de cate paisprezece: adica 14*16 (224- pentru echivalentul in baza 10). In final, pentru unitatea cea mai din stanga:8. Ce inseamna 8 ?? In baza 16, 8 inseamna tot 8 
In final, daca adunam toate 3, obtzinem 768+224+8=1000

Cum se converteste un numar din baza 10 in hexazecimal
Procesul e la fel ca mai sus, numai ca e invers de data asta. De exemplu, 289 in  baza 10 inseamna 121 in baza 16 . Sa testam: Incepem prin a afla cea mai mare putere a lui 16 care intra in numarul 289 (din baza 10). 289 se afla intre 16^2(adica 256) si 16^3(adica 4096). Apoi: de cate ori intra 256 in 289 ? Doar o data. Deci numarul pe care il cautam este 1 pentru ca exista doar 1 doua sute cinzeci si sase in 289 (ganditi-va ca 256 in baza hexa inseamna 100 in baza 10). Scazand, ajungem la 289-256=33. Acum trb sa gasim de cate ori incape 16 (adica 10 in baza 10) in ce a mai ramas ->adica in 33. Deci: 33-16*2=1. Acum iar facem scaderea: 33-32=1. Si cat inseamna 1 in baza hexa ? Tot 1.
Acum stii ca ai terminat pentru ca ai ramas cu 0 la urma.
Sa punem numarul cap la cap:
1 de doua sute cinzeci si sase (sau 100 in baza 16)
2 de saisprezece (sau 20 in baza hexa)
Adunandu-le, obtzinem 121.Tineti cont ca toate numerele din hexa functioneaza la fel ca cele din baza 10 doar ca limita este la 16 si nu la 10.
Sper ca ai inteles baza numerotatiei hexazecimale. Acum vine greul: trb sa GANDESTI in sistemul hexazecimal. Cu alte cuvinte, 5+5=A, 4*4=10, B+A+D= 22. Probabil veti folosi un calculator hexazecimal pentru a converti valorile... si chiar va sfatuiesc asta. Dar daca vrei sa te apuci de facut trainere, trebuie sa inveti sa faci calculele rapid in minte in baza 16.

CITESTE BINE PANA AICI ! Daca intelegi pana aici bine, restul e floare la ureche... Daca vreti sa mai continui, trimiteti un raspuns si continui cu integerii, bytii etc... si ajungem la editarea de fisiere in modul hexa . Dar sa-mi spuneti daca ati inteles pana aici. Sper ca am fost destul de explicit.


_______________________________________
void()

pus acum 17 ani
   
Salieri
Mafioso

Din: Sufragerie
Inregistrat: acum 18 ani
Postari: 469
Ok... a venit si timpul pentru partea a II-a a tutorialului...
Deci: dupa ce ai citit ce scrie mai sus stii cum sa aduni, sa scazi, sa inmultesti si sa imparti... in general sa te descurci cu numerele scrise in baza 16, am dreptate? In caz ca nu, intra in Start>Run, scrie 'calc", in fereastra care iti apare da-i la View>Scientific si sa continuam

In partea asta a tutorialului vei avea de-a face cu niste cuvinte pe care hackerii (si nu numai) le folosesc atunci cand vorbesc de hexa. De exemplu: byte sau offset. Toate astea is de fapt niste jargoane  pentru progamare care definesc niste chestii extrem de simple. Si tot ce tre sa faci e sa tii minte aceste definitzii.
Cand deschizi un hex editor (W32dsam) o sa vezi niste chestii de genu

0000 2353 ABC3 0000 9000 B122 000A
ABC3 0000 9000 B122 000A 2353 ABC3
0000 2353 ABC3 0000 9000 B122 000A
9000 B122 000A 2353 ABC3 0000 2353
etc...

si normal ca te gandesti "CPM is cu astea??" .. Ei bine, nu e atat de confuz pe cat pare. Chestia de mai sus nu e decat o serie de numere scrise in hexa. Asa este stocata data in fisiere (sau cel putin asa o vezi tu intr-un editor hexa).Ia un pix si scrie:

Byte - cel mai elementar lucru in hex editing. Pur si  simplu se refera la un numar hexazecimal care are 2 locuri. De ex: 23, B1, 0A sau 00.
Integer/Word/Short Integer - toate se refera la un singur lucru: 2 byti, sau un numar hexazecimal cu 4 locuri. De exemplu: 2353, 000A, B122 sau 0000, toate sunt integer (numere intregi). De obicei, unii folosesc termenul "short" chiar daca nu este universal  . Un short integer variaza intre 0000 si FFFF (0 si 65535 in baza 10)
Long integer/Dword/Double Word - La fel, toate astea inseamna acelasi lucru: 4 biti sau un numar hexazecimal cu 8 locuri. de exemplu: 2353000A, 00009000, ABC30000 sau 9000B122. Un long integer variaza intre 00000000 si FFFFFFFF (sau 0 si 4294967296=65536^2)
Aceste 3 tipuri de variabile sunt baza de la care trebuie sa pornesti in editarea hexa.
In timp ce data apare in valoare hexa, in aplicatie este folosita tot in baza 10.
Sa fac aici o mica paranteza: majoritatea fisierelor pe care le vei edita au data stoata intr-o "zona" numita "Little Endian" sau "Intel Notation". Asta inseamna ca numerele nu sunt in ordinea in care crezi ca sunt. De fapt, fiecare valoare este stocata in sens invers. De exemplu pentru o valoare de 4 byti, "10 00" sa zicem, nu stocheaza valoarea pe care crezi tu (4096) ci de fapt 01 00 ( le intorci pe fiecare in parte) - adica 16. Tine cont ca fiecare pereche de caractere hexazecimale nu se schimba. In alte cuvinte, nu invarti toate numerele. Fiecare in parte. Sa va mai dau inca un exemplu ca sa fiu sigur ca ati intles: 0000 2353 devine 53 23 00 00 (adica 1394802688 in baza 10)

Offset - se refera la locatia unui byte intr-un fisier. In alte cuvinte se refera la numarul unui byte (ce spunea laurxxx la offset-ul din Prorat insemna  modificarea locatia semnaturii si nimic mai complicat).Tine minte!!! Offset-urile incep numararea de la 0 si nu de la 1. De exemplu daca tre sa modifici offset-ul 101 intr-un fisier, du-te la byte-ul 100. Sa zicem ca fisierul tau ar arata in felul urmator:

2353 ABC3 0000 9000 B122 000A

Intrebarea: unde se afla offset-ul cu numarul 6 (decimal) ?

2353 ABC3 0000 <u><b>90</u></b>00 B122 000A

Daca un offset este dat cu 0x in fata (ex 0x2ACD) stii ca este in hex.

Signed si Unsigned - Cateodata mai dai peste chestii de genu "signed long" sau "unsigned short". "Unsigned" inseamna ca byte-ul respectiv este pozitiv pe cand "Signed" inseamna ca poate fi atat pozitiv cat si negativ. Nu va prezint aici metoda prin care sa aflatzi daca un byte este signed sau unsigned deoarece este mai complicata si tre sa stiti ce inseamna "backtracking". Majoritatea variabilelor pe care le intalniti vor fi "unsigned" asa ca nu conteaza.

ASCII - se refera la setul de caractere standard american. ASCII include litere de la a la z (inclusiv majuscule), numere 0-9 si alte simboluri de genul ~`!@#$%^&*()_ etc. Fiecare caracter ASCII este reprezentat de un byte. de exemplu 31 inseamna caracterul 1 ASCII. Un editor hexa va afisa de obicei echivalentul textului ASCII
String - Serie de caractere ASCII. De exemplu: "salieri" este un set de caractere ASCII
Tag - Este de obicei un string care denota inceputul unei sectiuni (ca in HTML)

Sper ca ati inteles si partea asta. Inainte sa continuam, ziceti-mi ce nu ati inteles sau ce nu e in regula

Bafta !


_______________________________________
void()

pus acum 17 ani
   
suri
Membru

Inregistrat: acum 18 ani
Postari: 772
Conversii HEXA <-> zecimal pe numere unsigned.

Conversia HEXA -> zecimal.
Vom discuta pe un exemplu. Fie numarul hexa 12 A4 5B 6F
1. Primul pas este ordinea octetilor.
Daca reprezentarea este "Big indian", se lasa ordinea asa.
Daca reprezentarea este "Little indian", se invereaza ordinea octetilor, numarul devenind 6F 5B A4 12. Sa zicem ca este vorba de "Little indian" si ca ordinea este asta din urma.
2. Al doilea pas este transformarea fiecarei cifre hexa in zecimal. Cele 8 cifre hexa devin: 6, 15,   5, 11,   10, 4,   1, 2.
3. Al treilea pas este calculul. Cel mai bine este o schema Horner. La un calculator "de buzunar" se pune in memorie valoarea 16 si schema merge asa:
((((((6 x 16 + 15)*16 + 5)*16 + 11)*16 + 10)*16 + 4)*16 + 1)*16 + 2 = 1868276754

Conversia zecimal -> HEXA
1. Primul pas este obtinerea resturilor la impartirea cu 16:
1868276754 : 16 = 116767297, rest 2
117422657 : 16 = 7297956, rest 1
7338916 : 16 = 456122, rest 4
458682 : 16 = 28507, rest 10
28667 : 16 = 1781, rest 11
1781 : 16 = 111, rest 5
111 : 16 = 6, rest 15
6 : 16 = 0, rest 6
Catul fiind 0 ne oprim.
2. Al doilea pas: resturile se aranjeaza "de jos in sus": 6, 15, 5, 11, 10, 4, 1, 2
3. Al treilea pas: Resturile se convertesc in hexa: cele 8 cifre devin: 6F 5B A4 12
4. Al patrulea pas: in reprezentarea "Little indian" se inverseaza ordinea octetilor, numarul devenind 12 A4 5B 6F

Dupa ce exemplul este inteles, se pune in "calculator" setat pe "Hex" numarul 6F5BA412 si se apasa pe "Dec" si invers.
Distractie placuta !


pus acum 17 ani
   
Salieri
Mafioso

Din: Sufragerie
Inregistrat: acum 18 ani
Postari: 469
Ca tot zicea Zapacila odata despre faptul ca nu am postat un tutorial ASM, ei bine, va prezint un tutorial pe care recunosc ca l`am citit in totaltiate.

FARA COMENTARII INUTILE PLS !!!


_______________________________________
void()

pus acum 17 ani
   
Pagini: 1  

Mergi la