eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › (announce) organic asm
Ilość wypowiedzi w tym wątku: 61

  • 31. Data: 2017-09-07 19:53:15
    Temat: Re: [OT] (announce) organic asm
    Od: fir <p...@g...com>

    W dniu czwartek, 7 września 2017 19:11:28 UTC+2 użytkownik fir napisał:
    > W dniu czwartek, 7 września 2017 17:47:35 UTC+2 użytkownik wloochacz napisał:
    > > W dniu 2017-09-07 o 01:16, Szyk Cech pisze:
    > > >> co do asma to nie widzialem w zyciu jeszcze dobrego programisty ktory
    > > >> by nie znal asma
    > > >
    > > > Z tym się zgodzę. Obecnie po studiach jest masa takich łajz co nie znają
    > > > Asemblera ani nawet C++...
    > > Lepsza łajza, która nie zna asemblera ani "nawet" C++ (tu wpisać dowolny
    > > znany i nieznany język programowania), niż taka, która nie zna OOP i
    > > wzorców projektowych.
    > > Nie wie co to SOLID i KISS.
    > > Nie zna podstaw programowania współbieżnego (prawda, fir?) ani
    > > sieciowego (to też do ciebie, fir).
    > > Nie potrafi zaprojektować systemu, który trzeba utrzymać, a nie tylko
    > > napisać coś, co "działa".
    > >
    >
    > heh, ciekawe pytanie ale nie umiem na nie jasno odpowiedziec (moze za jakis czas)
    >
    >
    > [co do innych kwestii powyzej to nie calkiem jest to prawda (w dwu punktach jest
    prawda ale w trzech nie)]

    pozatym mozna by dodac dosyc oczywiste rzeczy

    1) programiwanie to bardzo rozlegly temat
    i trzeba sie specjalizowac

    2) sam mozna powiedziec nie jestem programista na caly etat, jestem mozna powiedziec
    programista na pol etetu, na pol etetu jestem teoretykiem programowania (i walnalem w
    tej dziedzinie calkiem pokazna robote)

    3) moje programy nie tylko dzialaja ale so tez jako tako dobrze napisane (tj ze
    swiadomoscia niskopoziomową) - co wystarcza mi by iosiagnac pewien poziom zadowolenia
    (z drugiej strony jak mowilem nie jest tak ze potrafie wszystko napisac, daleko do
    tego, costam sie jedynie czasem relatywnie prosteo uda klepnac od czasu do czasu, jak
    nie za trudne i jak mnie zmeczenie (i zly stan zdrowotny) nie przytlacza ;c )


  • 32. Data: 2017-09-07 20:17:27
    Temat: Re: [OT] (announce) organic asm
    Od: wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU <N...@g...pl>

    trafiłes w sedno
    pytanie które ja sobie zadawałem od zawsze to jaki jest sens
    doktoryzowania sie z modeli optymalnych...

    i juz widac - trepów zassało wojsko/policja i płaci im >8000 pln... Ktos
    wie za co?


  • 33. Data: 2017-09-08 01:12:34
    Temat: Re: [OT] (announce) organic asm
    Od: fir <p...@g...com>

    jutro jeszcze (zapewne) opisze jeszcze smutne kwestie multipasow i fixupow (ciekawe
    tylko jesli ktos chce wiedziec jak dziala asm, mi samemu przyda si o tym wspomniec by
    uzyskac wieksza jasnosc jak to dziala a jest to troche zagmatwane

    moze w sumie pare slow juz teraz

    1) na poczatku skanujac zrodlo buduje sekcje importow - oprocz samego binarnego
    bloku tejh sekcji mam tez funkcja podajaca dla danego importu (podawanego po nazwie)
    wartosc relatywnego wskaznika
    wskazujacego miejsce gdzie lezy pointer do tej funkcji (ktory zostanie wypelniony
    przez loader windy)
    Oprocz tego istatna dana jest tez koncowy rozmiar tej sekcji

    2) skanujac zrodlo buduje sekcje data oprocz niej mam funkcje ktora dla danego labelu
    z sekcji data podaje re;atywny wskaznik do adekwatnej komorki w tej sekcji - oprocz
    tego wazna dana jest finalny rozmiar tej sekcji

    3) skanuje zrodlo i asembl;uje mnemoniki,
    oprocz samych mnemonikow w zrodla mozna tam napotkac 4 rzeczy
    l) label okreslajacy miejsce w kodzie (definicja np poczatku procedury)
    c) odwolanie do labelu w kodzie (w przod lub w tyl) (glownie przez skoki)
    d) odwolanie do labelu w danych (glownie przez mov)
    i) odwolanie do importu (glownie przez call)

    o tym co trzeba z tym zrobic moze jutro

    (wlasciwie zadnego z tych labeli nie mozna przetlumaczyc na inta w pierwszym
    podejsciu:
    l) te labele trzeba zrzucic do tablicy razem z ich wartosciami (ktore przynajmniej
    mozna od razu wyznaczyc)
    c) odwolanie trzeba zrzucic do tablicy
    razem z miejscem w kodzie ktore trzeba wypwlnic (ktore to miejsce tez na szczescie
    mozna od razu ustalic)
    d) odwolanie do danych tez trzeba zrzucic do tablicy razem z miejscem w kodzie ktore
    trzeba wypelnic
    i) odwolania do importow trzeba zrzucic do tablicy (azem zmiejscami ktore trzeba
    wypelnic)

    po zasemblowaniu tego otrzymuje sie rozmar sekcji kodu, ktory trzeba wyrownac w gore
    co pozwala uzyskac polozenie sekcji importow, dodanie rozmiary wyrownanego w gore
    rozmiaru sekcji importow daje adres poczatku sekcji data

    teraz z tego co sie orientuje trzeba przeiterowac wszystkie 4 tabele i zarzucic te
    fixupy, w wyniku czego powinnq powstac poprawnie wypelniona sekcja kodu, ktora razem
    z sekcja importow i danych zapisuje sie na dyck
    i zrobione

    niby nie takie trudne ale obraz troche
    komplikuja lekkie subtelnosci, glowni eto ze aligmenty sekcji w ramie sa ine niz w
    pliku a same adresy czasem podaje sie w postaci relatywnych offsetow (zdaje sie ze
    wiekszosc w sekcji importow juz nie pamietam a te w sekcji kodu raczej w postaci
    pelnych absolutnych wskaznikow) idzie sie pogubic

    do tego trzeba jeszcze poustawiac odpowiednie pola w naglowkach pe co tez jest co
    nieco nieczytelee i dziwne

    wiekszosc tego mam zrobione ale polozenie sekcji data i imports wklepalem na sztywno
    (dzieki czemu nie musialem robic tabel fixupow dla danych i importow) i teraz wlasnie
    musze to pewnie w weekend poprawic bytan asm wlasni enie mial ograniczen

    (wogole szczerze mowiac nawet nieco dziwne mozna powiedziec jest to ze jak kodowalem
    tego asma to wiekszosc problemow jakie tu wspomnialem udawalo sie jakos zakodowac
    jakby w transie bez myslania o nich, jest to ciekawa zdolnosc , zdolnosc do
    kodowania nez myslania o czyms o czym wydawaloby sie trzeba pomyslec) (pozniej
    jednak, czyli teraz kapka myslania na te tematy sie przydaje - zeby miec jasnosci i
    nie przeoczyc moze czegos, i moe tez po to by sie troche tego jak to dziala nauczyc
    na pamiec)


  • 34. Data: 2017-09-08 01:27:28
    Temat: Re: [OT] (announce) organic asm
    Od: fir <p...@g...com>

    W dniu piątek, 8 września 2017 01:12:35 UTC+2 użytkownik fir napisał:
    > jutro jeszcze (zapewne) opisze jeszcze smutne kwestie multipasow i fixupow (ciekawe
    tylko jesli ktos chce wiedziec jak dziala asm, mi samemu przyda si o tym wspomniec by
    uzyskac wieksza jasnosc jak to dziala a jest to troche zagmatwane
    >
    > moze w sumie pare slow juz teraz
    >
    > 1) na poczatku skanujac zrodlo buduje sekcje importow - oprocz samego binarnego
    bloku tejh sekcji mam tez funkcja podajaca dla danego importu (podawanego po nazwie)
    wartosc relatywnego wskaznika
    > wskazujacego miejsce gdzie lezy pointer do tej funkcji (ktory zostanie wypelniony
    > przez loader windy)
    > Oprocz tego istatna dana jest tez koncowy rozmiar tej sekcji
    >
    > 2) skanujac zrodlo buduje sekcje data oprocz niej mam funkcje ktora dla danego
    labelu z sekcji data podaje re;atywny wskaznik do adekwatnej komorki w tej sekcji -
    oprocz tego wazna dana jest finalny rozmiar tej sekcji
    >
    > 3) skanuje zrodlo i asembl;uje mnemoniki,
    > oprocz samych mnemonikow w zrodla mozna tam napotkac 4 rzeczy
    > l) label okreslajacy miejsce w kodzie (definicja np poczatku procedury)
    > c) odwolanie do labelu w kodzie (w przod lub w tyl) (glownie przez skoki)
    > d) odwolanie do labelu w danych (glownie przez mov)
    > i) odwolanie do importu (glownie przez call)
    >
    > o tym co trzeba z tym zrobic moze jutro
    >
    > (wlasciwie zadnego z tych labeli nie mozna przetlumaczyc na inta w pierwszym
    podejsciu:
    > l) te labele trzeba zrzucic do tablicy razem z ich wartosciami (ktore przynajmniej
    mozna od razu wyznaczyc)
    > c) odwolanie trzeba zrzucic do tablicy
    > razem z miejscem w kodzie ktore trzeba wypwlnic (ktore to miejsce tez na szczescie
    mozna od razu ustalic)
    > d) odwolanie do danych tez trzeba zrzucic do tablicy razem z miejscem w kodzie
    ktore trzeba wypelnic
    > i) odwolania do importow trzeba zrzucic do tablicy (azem zmiejscami ktore trzeba
    wypelnic)
    >
    > po zasemblowaniu tego otrzymuje sie rozmar sekcji kodu, ktory trzeba wyrownac w
    gore co pozwala uzyskac polozenie sekcji importow, dodanie rozmiary wyrownanego w
    gore rozmiaru sekcji importow daje adres poczatku sekcji data
    >
    > teraz z tego co sie orientuje trzeba przeiterowac wszystkie 4 tabele i zarzucic te
    fixupy, w wyniku czego powinnq powstac poprawnie wypelniona sekcja kodu, ktora razem
    z sekcja importow i danych zapisuje sie na dyck
    > i zrobione
    >
    > niby nie takie trudne ale obraz troche
    > komplikuja lekkie subtelnosci, glowni eto ze aligmenty sekcji w ramie sa ine niz w
    pliku a same adresy czasem podaje sie w postaci relatywnych offsetow (zdaje sie ze
    wiekszosc w sekcji importow juz nie pamietam a te w sekcji kodu raczej w postaci
    pelnych absolutnych wskaznikow) idzie sie pogubic
    >
    > do tego trzeba jeszcze poustawiac odpowiednie pola w naglowkach pe co tez jest co
    nieco nieczytelee i dziwne
    >
    > wiekszosc tego mam zrobione ale polozenie sekcji data i imports wklepalem na
    sztywno (dzieki czemu nie musialem robic tabel fixupow dla danych i importow) i teraz
    wlasnie musze to pewnie w weekend poprawic bytan asm wlasni enie mial ograniczen
    >
    > (wogole szczerze mowiac nawet nieco dziwne mozna powiedziec jest to ze jak
    kodowalem tego asma to wiekszosc problemow jakie tu wspomnialem udawalo sie jakos
    zakodowac jakby w transie bez myslania o nich, jest to ciekawa zdolnosc , zdolnosc
    do kodowania nez myslania o czyms o czym wydawaloby sie trzeba pomyslec) (pozniej
    jednak, czyli teraz kapka myslania na te tematy sie przydaje - zeby miec jasnosci i
    nie przeoczyc moze czegos, i moe tez po to by sie troche tego jak to dziala nauczyc
    na pamiec)

    tak naprawde chyab to jest jeszcze bardziej skomplikowane, mianowicie zawartosc
    sekcji importow zalezy od jej polozenia, a jej polozenie zalezy od rozmiaru sekcji
    kodu - co wymusza inna kolejnosc niz pisalem

    zdaje sie
    - najpierw cod
    - pozniej importy
    - pozniej dane
    - na koniec fixupy

    idzie sie z leka pochlastac (zwlaszcza ze musze to przerabiac w stosunku do wersji z
    polozeniemi sekcji wkodowanymi 'na sztywno')


  • 35. Data: 2017-09-09 00:17:32
    Temat: Re: [OT] (announce) organic asm
    Od: fir <p...@g...com>

    W dniu piątek, 8 września 2017 01:27:29 UTC+2 użytkownik fir napisał:
    > W dniu piątek, 8 września 2017 01:12:35 UTC+2 użytkownik fir napisał:
    > > jutro jeszcze (zapewne) opisze jeszcze smutne kwestie multipasow i fixupow
    (ciekawe tylko jesli ktos chce wiedziec jak dziala asm, mi samemu przyda si o tym
    wspomniec by uzyskac wieksza jasnosc jak to dziala a jest to troche zagmatwane
    > >
    > > moze w sumie pare slow juz teraz
    > >
    > > 1) na poczatku skanujac zrodlo buduje sekcje importow - oprocz samego binarnego
    bloku tejh sekcji mam tez funkcja podajaca dla danego importu (podawanego po nazwie)
    wartosc relatywnego wskaznika
    > > wskazujacego miejsce gdzie lezy pointer do tej funkcji (ktory zostanie wypelniony

    > > przez loader windy)
    > > Oprocz tego istatna dana jest tez koncowy rozmiar tej sekcji
    > >
    > > 2) skanujac zrodlo buduje sekcje data oprocz niej mam funkcje ktora dla danego
    labelu z sekcji data podaje re;atywny wskaznik do adekwatnej komorki w tej sekcji -
    oprocz tego wazna dana jest finalny rozmiar tej sekcji
    > >
    > > 3) skanuje zrodlo i asembl;uje mnemoniki,
    > > oprocz samych mnemonikow w zrodla mozna tam napotkac 4 rzeczy
    > > l) label okreslajacy miejsce w kodzie (definicja np poczatku procedury)
    > > c) odwolanie do labelu w kodzie (w przod lub w tyl) (glownie przez skoki)
    > > d) odwolanie do labelu w danych (glownie przez mov)
    > > i) odwolanie do importu (glownie przez call)
    > >
    > > o tym co trzeba z tym zrobic moze jutro
    > >
    > > (wlasciwie zadnego z tych labeli nie mozna przetlumaczyc na inta w pierwszym
    podejsciu:
    > > l) te labele trzeba zrzucic do tablicy razem z ich wartosciami (ktore
    przynajmniej mozna od razu wyznaczyc)
    > > c) odwolanie trzeba zrzucic do tablicy
    > > razem z miejscem w kodzie ktore trzeba wypwlnic (ktore to miejsce tez na
    szczescie mozna od razu ustalic)
    > > d) odwolanie do danych tez trzeba zrzucic do tablicy razem z miejscem w kodzie
    ktore trzeba wypelnic
    > > i) odwolania do importow trzeba zrzucic do tablicy (azem zmiejscami ktore trzeba
    wypelnic)
    > >
    > > po zasemblowaniu tego otrzymuje sie rozmar sekcji kodu, ktory trzeba wyrownac w
    gore co pozwala uzyskac polozenie sekcji importow, dodanie rozmiary wyrownanego w
    gore rozmiaru sekcji importow daje adres poczatku sekcji data
    > >
    > > teraz z tego co sie orientuje trzeba przeiterowac wszystkie 4 tabele i zarzucic
    te fixupy, w wyniku czego powinnq powstac poprawnie wypelniona sekcja kodu, ktora
    razem z sekcja importow i danych zapisuje sie na dyck
    > > i zrobione
    > >
    > > niby nie takie trudne ale obraz troche
    > > komplikuja lekkie subtelnosci, glowni eto ze aligmenty sekcji w ramie sa ine niz
    w pliku a same adresy czasem podaje sie w postaci relatywnych offsetow (zdaje sie ze
    wiekszosc w sekcji importow juz nie pamietam a te w sekcji kodu raczej w postaci
    pelnych absolutnych wskaznikow) idzie sie pogubic
    > >
    > > do tego trzeba jeszcze poustawiac odpowiednie pola w naglowkach pe co tez jest co
    nieco nieczytelee i dziwne
    > >
    > > wiekszosc tego mam zrobione ale polozenie sekcji data i imports wklepalem na
    sztywno (dzieki czemu nie musialem robic tabel fixupow dla danych i importow) i teraz
    wlasnie musze to pewnie w weekend poprawic bytan asm wlasni enie mial ograniczen
    > >
    > > (wogole szczerze mowiac nawet nieco dziwne mozna powiedziec jest to ze jak
    kodowalem tego asma to wiekszosc problemow jakie tu wspomnialem udawalo sie jakos
    zakodowac jakby w transie bez myslania o nich, jest to ciekawa zdolnosc , zdolnosc
    do kodowania nez myslania o czyms o czym wydawaloby sie trzeba pomyslec) (pozniej
    jednak, czyli teraz kapka myslania na te tematy sie przydaje - zeby miec jasnosci i
    nie przeoczyc moze czegos, i moe tez po to by sie troche tego jak to dziala nauczyc
    na pamiec)
    >
    > tak naprawde chyab to jest jeszcze bardziej skomplikowane, mianowicie zawartosc
    sekcji importow zalezy od jej polozenia, a jej polozenie zalezy od rozmiaru sekcji
    kodu - co wymusza inna kolejnosc niz pisalem
    >
    > zdaje sie
    > - najpierw cod
    > - pozniej importy
    > - pozniej dane
    > - na koniec fixupy
    >
    > idzie sie z leka pochlastac (zwlaszcza ze musze to przerabiac w stosunku do wersji
    z polozeniemi sekcji wkodowanymi 'na sztywno')

    nowsza wersja

    minddetonator.htw.pl/organic8.zip

    wiekszosc constraintow usunieta - jeszcze cos tam zostalo i asm pewnie wywali sie na
    zbyt duzej asemblacji ale jestem zbyt 'sterany' by to dzis poprawic, ale jako ze
    zdaje sie wiekszosc roboty zrobiona spokojnie poprawi sie to jutro i asm juz bedzie w
    koncu 'limitless' (jeszcze mi tylko zostanie wtedy doklepac reszte opkodow)


  • 36. Data: 2017-09-09 14:20:28
    Temat: Re: [OT] (announce) organic asm
    Od: fir <p...@g...com>

    W dniu sobota, 9 września 2017 00:17:34 UTC+2 użytkownik fir napisał:
    >
    > minddetonator.htw.pl/organic8.zip
    >
    > wiekszosc constraintow usunieta - jeszcze cos tam zostalo i asm pewnie wywali sie
    na zbyt duzej asemblacji ale jestem zbyt 'sterany' by to dzis poprawic, ale jako ze
    zdaje sie wiekszosc roboty zrobiona spokojnie poprawi sie to jutro i asm juz bedzie w
    koncu 'limitless' (jeszcze mi tylko zostanie wtedy doklepac reszte opkodow)

    minddetonator.htw.pl/organic9.zip

    wynikowy exe prawdopodobnie nadal sie wywali jesli ktoras z sekcji przekroczy
    rozmiarem aligment sekcji (domyslnie 64 kb choc mozna ustawic pewnie i na 100 MB)
    ale jednak poprawie to troche poziej (bo wymaga lekkiego ogarniecia) - w kazdym razie
    juz tylko o krok od limitless / w pewlni ogolnego asemblowania


  • 37. Data: 2017-09-09 21:57:00
    Temat: Re: [OT] (announce) organic asm
    Od: wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU <N...@g...pl>

    w czym to piszesz? :O)


  • 38. Data: 2017-09-10 01:50:53
    Temat: Re: [OT] (announce) organic asm
    Od: fir <p...@g...com>

    W dniu sobota, 9 września 2017 21:57:10 UTC+2 użytkownik wół, wół roboczy, wół dojno
    roboczo obronny 'POPIS/EU napisał:
    > w czym to piszesz? :O)

    w c, 120 kb (czyli 6 tys linijek) zrodla (z czego 20 kb to moja biblioteczka do
    tekstow, 45 kb asmowy switch a 55 kb to reszta kodu) z api to potzebne jest fread
    fwrite printf i niewiele wiecej

    strasznie sie wlasnie nameczylem nad tymi fixupami (ktore wynikaja z tego ze wartosci
    w sekcjach zaleza od polozen sekcji ktore zaleza od ich rozmiarow i sie robi kaszana)
    i chyba dziala ale bedzie terzeba porzadnie testowac a z mojej satysfakci z kodu
    zrobila sie troche kaszana

    no ale skoro dziala to jest chyba ok ;c (tak naprawde nie wiem na ile fakt dzialania
    mozna uznac za fakt bezblednosci - ale jest przynajmniej jakis spory procent szansy
    ze jest ok, w nastepnych dniach sie potestuje)


  • 39. Data: 2017-09-10 11:33:14
    Temat: Re: [OT] (announce) organic asm
    Od: fir <p...@g...com>

    minddetonator.htw.pl/organic10.zip

    no dobra jak dziala to chyba nie jest tak zle,
    te fixupy mnie strasznie denerwowaly, ale jak dziala to chyba jest ok, (jeszcze musze
    dodac sekcje .bb bo nie dodalem ale to sie chyba da zrobic prosto)
    pozatym trzebedzie potestowac piszac rozne asemblerowe example, polampic sie wewnatrz
    kodu czy nie dostrzege jakichs beldow i troche zrefaktoryzowac na czytelniejsze, no i
    mozna by doklepac reszte mnemonikow

    na razie jednak trzeba pewnie odpoczac bo jestem w tej fazie w ktorej koduje 7 razy
    wolniej a to nie jest za dobre


  • 40. Data: 2017-09-11 16:55:15
    Temat: Re: [OT] (announce) organic asm
    Od: fir <p...@g...com>

    ok bss ez dodalem, (wystarczy sekcje data zadeklarowac jako o rezerwe wiekszą a
    rozmiar w pliku podac jako tylko tym z wypelnionymi danymi i po prostu uzywac tej
    resztki jako ststycznego bss-ramu

    w sumie pewnie moge wkleiic ten kod ktory nagywa header exe na dysk - u mnie to sa
    tylko minimalne pola tkniete ale dziala



    void BuildAndSavePE(char* filename)
    {
    FILE *file = fopen(filename, "wb");

    ////////////////////////////////////////////////////
    ////////////////////// pe headers /////////////////////////////

    IMAGE_DOS_HEADER dosHeader= {0};
    dosHeader.e_magic = 0x5a4d; // MZ
    dosHeader.e_lfanew = 0x00000040; //pe header offset in file

    //0x40
    IMAGE_NT_HEADERS ntHeader= {0};
    ntHeader.Signature = 0x00004550; //PE 0 0

    IMAGE_FILE_HEADER header= {0};
    header.Machine = 0x014c; //i386
    header.NumberOfSections = 3;
    header.SizeOfOptionalHeader = 0x00e0; //not sure
    header.Characteristics = 0x0002 + 0x0100; //executable + 32bit_machine
    //0x58
    IMAGE_OPTIONAL_HEADER opHeader= {0}; //Optional Header of PE files present in
    NT Header structure
    opHeader.Magic = 0x010b;
    opHeader.AddressOfEntryPoint = Give_CodeSection_RamOffset();
    opHeader.ImageBase = pe_base_ram_adr;
    opHeader.SectionAlignment = ram_section_alignment;
    opHeader.FileAlignment = file_section_alignment;
    opHeader.MajorSubsystemVersion = 4;
    opHeader.SizeOfImage = GiveRamImageSize(bss_reserve);
    opHeader.SizeOfHeaders = file_section_alignment;

    if(show_console)
    opHeader.Subsystem = 3; //2-gui, 3 - console
    else
    opHeader.Subsystem = 2; //2-gui, 3 - console

    opHeader.NumberOfRvaAndSizes = 16;

    //0x0138
    opHeader.DataDirectory[1].VirtualAddress = Give_ImportsSection_RamOffset();

    ////////////////////////////////////////////////////
    /////
    ////////////////////////////////////////////////////
    ///////////////

    IMAGE_SECTION_HEADER secHeaderCode= {0};

    secHeaderCode.Name[0] = '.';
    secHeaderCode.Name[1] = 'c';
    secHeaderCode.Name[2] = 'o';
    secHeaderCode.Name[3] = 'd';
    secHeaderCode.Name[4] = 'e';

    secHeaderCode.Misc.VirtualSize = AlignNumberUp( Give_Code_UnalignedSize() ,
    ram_section_alignment);
    secHeaderCode.VirtualAddress = Give_CodeSection_RamOffset();

    secHeaderCode.SizeOfRawData = AlignNumberUp( Give_Code_UnalignedSize() ,
    file_section_alignment);

    secHeaderCode.PointerToRawData = Give_CodeSection_FileOffset();

    secHeaderCode.Characteristics = 0x00000020 + 0x20000000 + 0x40000000;

    /////
    IMAGE_SECTION_HEADER secHeaderImports= {0};

    secHeaderImports.Name[0] = '.';
    secHeaderImports.Name[1] = 'i';
    secHeaderImports.Name[2] = 'm';
    secHeaderImports.Name[3] = 'p';
    secHeaderImports.Name[4] = 'o';
    secHeaderImports.Name[5] = 'r';
    secHeaderImports.Name[6] = 't';
    secHeaderImports.Name[7] = 's';

    secHeaderImports.Misc.VirtualSize = AlignNumberUp( Give_Imports_UnalignedSize()
    , ram_section_alignment);
    secHeaderImports.VirtualAddress = Give_ImportsSection_RamOffset();
    secHeaderImports.SizeOfRawData = AlignNumberUp( Give_Imports_UnalignedSize() ,
    file_section_alignment);;
    secHeaderImports.PointerToRawData = Give_ImportsSection_FileOffset();
    secHeaderImports.Characteristics = 0x00000040 + 0x40000000;


    //////
    IMAGE_SECTION_HEADER secHeaderData= {0};

    secHeaderData.Name[0] = '.';
    secHeaderData.Name[1] = 'd';
    secHeaderData.Name[2] = 'a';
    secHeaderData.Name[3] = 't';
    secHeaderData.Name[4] = 'a';


    secHeaderData.Misc.VirtualSize = AlignNumberUp( Give_Data_UnalignedSize() ,
    ram_section_alignment)
    + AlignNumberUp( bss_reserve ,
    ram_section_alignment) ;
    secHeaderData.VirtualAddress = Give_DataSection_RamOffset() ;
    secHeaderData.SizeOfRawData = AlignNumberUp( Give_Data_UnalignedSize() ,
    file_section_alignment);
    secHeaderData.PointerToRawData = Give_DataSection_FileOffset();
    secHeaderData.Characteristics = 0x00000040 + 0x40000000 +0x80000000 ;

    ////////

    fwrite((char*)&dosHeader, 1, sizeof(dosHeader), file);

    fwrite((char*)&ntHeader, 1, 4, file);
    fwrite((char*)&header, 1, sizeof(header), file);
    fwrite((char*)&opHeader, 1, sizeof(opHeader), file);
    fwrite((char*)&secHeaderCode, 1, sizeof(secHeaderCode), file);
    fwrite((char*)&secHeaderImports, 1, sizeof(secHeaderImports), file);
    fwrite((char*)&secHeaderData, 1, sizeof(secHeaderData), file);


    int header_size = + sizeof(dosHeader)
    + 4
    + sizeof(header)
    + sizeof(opHeader)
    + sizeof(secHeaderCode)
    + sizeof(secHeaderImports)
    + sizeof(secHeaderData);

    ////////////////////////////////////////////////////
    ////////////////////// code /////////////////////////////
    fseek( file, Give_CodeSection_FileOffset(), SEEK_SET );
    fwrite(code, 1, AlignNumberUp( Give_Code_UnalignedSize() ,
    file_section_alignment), file);

    fseek( file, Give_ImportsSection_FileOffset(), SEEK_SET );
    fwrite((char*)idata, 1, AlignNumberUp( Give_Imports_UnalignedSize() ,
    file_section_alignment), file);

    fseek( file, Give_DataSection_FileOffset(), SEEK_SET );
    fwrite(data, 1, AlignNumberUp( Give_Data_UnalignedSize() ,
    file_section_alignment), file);

    ///// /// save last byte and exit
    char zero =0;
    fseek( file, GiveFileSize() - 1, SEEK_SET );
    fwrite((char*)&zero, 1, 1, file);
    fclose(file);

    }


    dobrze ze ten asmik dziala i w sumie nie wykluczone ze napisze jeszcze pare tekstow
    na ten temat
    1) bo to ciekawsze niz hallo worldy a rownoczesnie nie jakos strasznie duze
    spokojnie daloby sie omowic nawet na grupie w calosci (big hallo world)
    2) jest dobrym krokiem wyjscia do innych ciekawych tematow

strony : 1 ... 3 . [ 4 ] . 5 ... 7


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: