HackPedia - Comunitatea Hackerilor Romani
Hacking, it security, programming, vulnerability, games, newsletter, it and c, programare, ethical hacking, exploits, information security, penetration testing, online security, web hacking,internet, antivirus, security, blocker, firewall
Lista Forumurilor Pe Tematici
HackPedia - Comunitatea Hackerilor Romani | Inregistrare | Login

POZE HACKPEDIA - COMUNITATEA HACKERILOR ROMANI

Nu sunteti logat.
Nou pe simpatie:
andrum94 din Galati
Femeie
24 ani
Galati
cauta Barbat
27 - 80 ani
HackPedia - Comunitatea Hackerilor Romani / Ajutor / File Editor  
Autor
Mesaj Pagini: 1
Fire7
Membru Freak

Inregistrat: acum 16 ani
Postari: 113
Salut. Multi v-ati intrebat cum sa editati anumite fisiere. Sau mai mult, v-ati intrebat cum sa faceti un server editor. Sau cum sa creati anumite executabile in functie de preferintele userului. In acest mic tutorial voi prezenta acest concept pt. un executabil realizat de mine, insa va fi indeajuns de explicit incat sa folositi pentru programele si nevoile voastre. Multe multumiri lui SlicK, fara tine as fi fost un sfert din ceea ce sunt acum. Thnx brotha’.

Sa incepem. Mediu de programare folosit: Dev-C++. Compilati urmatorul cod, care va fi folosit pentru teste:



#include <windows.h>
int main()
{
MessageBox(0, "Acesta este mesajul meu", "Titlu", 0);
return 0;
}


Practic asta va afisa un MessageBox cu titlul: Titlu si mesajul: Acesta este mesajul meu. Se observa foarte usor ca Titlu ocupa 5 bytes. Daca vom suprascrie 6 bytes, atunci titlul va fi reprezentat de: TitluAcesta este mesajul meu, iar mesajul: Acesta este mesajul meu. O sa explic imediat de ce.
Functia API MessageBox (si nu numai; asa sunt delimitate stringurile in sistemul de operare) “gandeste” dupa urmatorul principiu: afla offsetul lui T (de la Titlu) si parcurge in continuare pana cand ajunge la 0×00 (00 in HEX). Cand ajunge la 0×00, atunci citeste in continuare mesajul la fel, pana ajunge la 0×00, apoi le afiseaza. Daca eu scriu 6 bytes, o sa suprascriu acel 0×00, de aceea Titlul va fi reprezentat de Titlu+Mesaj.
Daca suprascriu mai mult de 6 bytes, Titlul va ramane acelasi: Titlu + Mesaj (noul mesaj + noul titlu, evident), iar mesajul se va modifica si va fi afisat noul mesaj.
Poate nu m-am exprimat cel mai corect, insa imaginea urmatoare este edificatoare [Deschideti executabilul cu Hex WorkShop] (click dreapta pe imagine si view imagine pt. a se vedea la dimensiunea normala):



Avem ceva de genul: Titlu.Acesta este mesajul meu. ! Unde . reprezinta 0×00 (sau 00). Deci… Am facut un mic patratel cu rosu in jurul adresei lui T. Deci avem posibilitatea sa scriem in continuare 5 bytes. Nu suprascriem 0×00. Continuam acum cu nr. de bytes din “Acesta este mesajul meu”.

Am facut codul in C care modifica titlul in aaaaa (5 bytes):


    #include <windows.h>
    #include <stdio.h>
    int main()
    {
    FILE * file;
    //Noul titlu
    char buffer[] = { 'a', 'a', 'a', 'a', 'a' };
    //Deschidem
    file = fopen ("msgbox.exe" , "r+" );
    //Ne ducem la adresa la care avem nevoie
    fseek(file, 0x00001000, SEEK_CUR);
    //Scriem
    fwrite(buffer , 1 , sizeof(buffer) , file );
    //Inchidem
    fclose(file);
    return 0;
    }

Cam acelasi lucru se poate face si pt. un trojan, numai ca acolo este recomandabil ca IPul sa fie tinut dinainte intr-un buffer de maxim 15 bytes (ca sa nu irosim memorie degeaba).
Succes in scrierea propriilor server editoare & stuff.

P.S. Trebuie sa stiti ca offseturile intr-un executabil nu sunt dinamice ca in DLLuri, deci conceptul poate fi pus in aplicare fara nicio retinere !

@vladii 2008


pus acum 16 ani
   
Pagini: 1  

Mergi la