2019-04-01から1ヶ月間の記事一覧

PE FORMAT] -5- Section Header

参考: docs.microsoft.com PE FILEを多数のSECTION構造にした時得られる利点→安定性 typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; union { DWORD PhysicalAddress; DWORD VirtualSize; } Misc; DWORD VirtualAddress; DWOR…

PE FORMAT] -4- NT Header (DOS Sign, IMAGE_FILE_HEADER, IMAGE_OPTIONAL_HEADER)

参考: docs.microsoft.com NT Headerの構造体はIMAGE_NT_HEADERS. typedef struct _IMAGE_NT_HEADERS { DWORD Signature; // PE sign (50 45 00 00) IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER32 OptionalHeader; } IMAGE_NT_HEADERS32, *PIMAGE…

PE FORMAT] -3- DOS Stub

DOS Headerの下にはDOS Stubが存在する。 DOS StubはCompileするときにoptionで入れるかどうかが選択できる。 notepad.exeのDOS Stub もしプログラムがDOS環境で実行された時、This program cannot be run in DOS modeを出力してそのまま終了させる部分であ…

PE FORMAT] -2- DOS MZ HEADER

PE HEADERは最初にDOS EXE Headerを拡張させたIMAGE_DOS_HEADER構造体が存在。 typedef struct _IMAGE_DOS_HEADER { WORD e_magic; . . . WORD e_lfanew; } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; *structure size: 40 IMAGE_DOS_HEADER (notepad.exe) <必…

PE FORMAT] -1- 基本構造

[ VA & RVA ] - VA (Virtual Address) : プロセス仮想メモリーの絶対アドレス - RVA (Relative Virtual Address) : プロセス仮想メモリーの相対アドレス ** VA = RVA + ImageBase FILEでのアドレスは offset MEMORYでのアドレスは VA https://resources.info…

C] pointer - &,*

int *imsip; // メモリーaddressを保存するために宣言。 int imsi = 5; // imsiというint型変数に5を入れる。 &imsi; // int型変数は4bit (address ex: 000000 - 000004) ここで&imsiはimsi変数の値が保存されているメモリーaddressの先頭addressが格納され…

C#] yield , IEnumerator , IEnumerable

using System; using System.Text; using System.Collections.Generic; namespace MyPractice { public class MyEnumerator { private int data = { 10, 20, 30, 40, 50 }; public IEnumerator<int> GetEnumerator() //IEnumerator **GetEnumerator { // **IEnume</int>…

C#] Loop

using System; using System.Text; using System.Collections.Generic; namespace MyPractice { class Program { static void Main(string args) { /* * 2019.04.17 * by 4ru4ka */ // for Loop for (int i = 0; i < 10; i++) Console.WriteLine(i); // fore…

C#] if, switch

using System; using System.Text; namespace MyPractice { class Program { static void Main(string[] args) { /* * C# - if, switch * 2019.04.05 * by 4ru4ka */ if (args.Length != 1) { Console.WriteLine("program /option"); return; } bool switch1…

C#] Operator

using System; using System.Text; namespace MyPractice { class Program { static void Main(string[] args) { /* * C# - Operator * 2019.04.01 * by 4ru4ka */ //Shift operator int i = 2; i = i << 5; int j = 3; j = j << 5; Console.WriteLine("{0} …

C#] enum & enum flag

using System; using System.Text; namespace MyPractice { class Program { enum Univ { Meiji, // 0 Aoyama, // 1 Rikkyo, // 2 Chuo, // 3 Hosei = 10 // 10 } [Flags] enum Univf { Meiji = 1, Aoyama = 2, Rikkyo = 4, Chuo = 8, Hosei = 16 } static v…

C#] String & StringBuilder sample

using System; using System.Text; namespace MyPractice { class Program { static void Main(string args) { /* * 2019.04.01 * by 4ru4ka */ // string : Immutable // string -> group of char string str1 = "I am"; string str2 = "Happy"; // char ch…