-
X-Received: by 10.31.168.21 with SMTP id r21mr112811vke.6.1505141716251; Mon, 11 Sep
2017 07:55:16 -0700 (PDT)
X-Received: by 10.31.168.21 with SMTP id r21mr112811vke.6.1505141716251; Mon, 11 Sep
2017 07:55:16 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
0.net!peer03.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-medi
a.com!news.highwinds-media.com!127no2247663itw.0!news-out.google.com!j49ni1058q
tc.1!nntp.google.com!b1no1217909qtc.1!postnews.google.com!glegroupsg2000goo.goo
glegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Mon, 11 Sep 2017 07:55:15 -0700 (PDT)
In-Reply-To: <c...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=5.172.255.129;
posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 5.172.255.129
References: <7...@g...com>
<0...@g...com>
<ook8o5$gs1$2@node2.news.atman.pl>
<2...@g...com>
<ookj75$qs8$1@mx1.internetia.pl>
<8...@g...com>
<1...@g...com>
<0...@g...com>
<1...@g...com>
<8...@g...com>
<2...@g...com>
<f...@g...com>
<b...@g...com>
<3...@g...com>
<f...@g...com>
<b...@g...com>
<0...@g...com>
<1...@g...com>
<op1h2k$f9a$1@node1.news.atman.pl>
<1...@g...com>
<c...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d...@g...com>
Subject: Re: [OT] (announce) organic asm
From: fir <p...@g...com>
Injection-Date: Mon, 11 Sep 2017 14:55:16 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 8481
X-Received-Body-CRC: 1747046484
Xref: news-archive.icm.edu.pl pl.comp.programming:211503
[ ukryj nagłówki ]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
Następne wpisy z tego wątku
- 11.09.17 17:03 fir
- 12.09.17 14:57 M.M.
- 12.09.17 16:59 fir
- 13.09.17 23:59 fir
- 14.09.17 21:11 wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU
- 14.09.17 22:08 fir
- 15.09.17 21:43 wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU
- 15.09.17 21:46 wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU
- 15.09.17 22:16 fir
- 22.12.17 12:18 AK
- 22.12.17 12:33 M.M.
- 22.12.17 12:47 AK
- 22.12.17 20:10 Wojciech Muła
- 22.12.17 20:54 AK
- 23.12.17 10:25 M.M.
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-02-01 Śmierć mózgu a narządy do pobrania
- 2025-01-31 A niektórym to naprawdę zależy na ekologi w miastach LPG POWRACA ;-)
- 2025-01-31 Lublin => Programista Delphi <=
- 2025-01-31 Łódź => Programista NodeJS <=
- 2025-01-31 Wrocław => Senior SAP Support Consultant (SD) <=
- 2025-01-31 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2025-01-31 Gdańsk => iOS Developer (Swift experience) <=
- 2025-01-31 Kraków => UX Designer <=
- 2025-01-31 Warszawa => Data Engineer (Tech Leader) <=
- 2025-01-31 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-01-31 Gliwice => Business Development Manager - Network and Network Security
- 2025-01-31 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-01-31 Warszawa => Full Stack .Net Engineer <=
- 2025-01-31 Warszawa => Programista Full Stack (.Net Core) <=
- 2025-01-31 Gdańsk => Programista Full Stack .Net <=