├── .gitattributes ├── .gitignore ├── EXE2DLL.exe ├── EXE2DLL.sln ├── EXE2DLL ├── AssemblyInfo.cpp ├── EXE2DLL.cpp ├── EXE2DLL.h ├── EXE2DLL.vcxproj ├── EXE2DLL.vcxproj.filters ├── ExeToDll.cpp ├── ExeToDll.h ├── MyForm.cpp ├── MyForm.h ├── MyForm.resx ├── PE_INFO.cpp ├── PE_INFO.h ├── Resource.h ├── add_export_function.cpp ├── add_export_function.h ├── add_section.h ├── addsection.cpp ├── app.ico ├── app.rc ├── frm_Directory.h ├── frm_Directory.resx ├── frm_PEInfo.h ├── frm_PEInfo.resx ├── frm_Section.cpp ├── frm_Section.h ├── frm_Section.resx ├── frm_modify.cpp ├── frm_modify.h ├── frm_modify.resx ├── icon.bmp ├── icon.ico ├── icon.jpg ├── icon.png ├── pch.cpp ├── pch.h ├── read_export_list.cpp └── read_export_list.h └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Dd]ebugPublic/ 19 | [Rr]elease/ 20 | [Rr]eleases/ 21 | x64/ 22 | x86/ 23 | [Aa][Rr][Mm]/ 24 | [Aa][Rr][Mm]64/ 25 | bld/ 26 | [Bb]in/ 27 | [Oo]bj/ 28 | [Ll]og/ 29 | 30 | # Visual Studio 2015/2017 cache/options directory 31 | .vs/ 32 | # Uncomment if you have tasks that create the project's static files in wwwroot 33 | #wwwroot/ 34 | 35 | # Visual Studio 2017 auto generated files 36 | Generated\ Files/ 37 | 38 | # MSTest test Results 39 | [Tt]est[Rr]esult*/ 40 | [Bb]uild[Ll]og.* 41 | 42 | # NUNIT 43 | *.VisualState.xml 44 | TestResult.xml 45 | 46 | # Build Results of an ATL Project 47 | [Dd]ebugPS/ 48 | [Rr]eleasePS/ 49 | dlldata.c 50 | 51 | # Benchmark Results 52 | BenchmarkDotNet.Artifacts/ 53 | 54 | # .NET Core 55 | project.lock.json 56 | project.fragment.lock.json 57 | artifacts/ 58 | 59 | # StyleCop 60 | StyleCopReport.xml 61 | 62 | # Files built by Visual Studio 63 | *_i.c 64 | *_p.c 65 | *_h.h 66 | *.ilk 67 | *.meta 68 | *.obj 69 | *.iobj 70 | *.pch 71 | *.pdb 72 | *.ipdb 73 | *.pgc 74 | *.pgd 75 | *.rsp 76 | *.sbr 77 | *.tlb 78 | *.tli 79 | *.tlh 80 | *.tmp 81 | *.tmp_proj 82 | *_wpftmp.csproj 83 | *.log 84 | *.vspscc 85 | *.vssscc 86 | .builds 87 | *.pidb 88 | *.svclog 89 | *.scc 90 | 91 | # Chutzpah Test files 92 | _Chutzpah* 93 | 94 | # Visual C++ cache files 95 | ipch/ 96 | *.aps 97 | *.ncb 98 | *.opendb 99 | *.opensdf 100 | *.sdf 101 | *.cachefile 102 | *.VC.db 103 | *.VC.VC.opendb 104 | 105 | # Visual Studio profiler 106 | *.psess 107 | *.vsp 108 | *.vspx 109 | *.sap 110 | 111 | # Visual Studio Trace Files 112 | *.e2e 113 | 114 | # TFS 2012 Local Workspace 115 | $tf/ 116 | 117 | # Guidance Automation Toolkit 118 | *.gpState 119 | 120 | # ReSharper is a .NET coding add-in 121 | _ReSharper*/ 122 | *.[Rr]e[Ss]harper 123 | *.DotSettings.user 124 | 125 | # JustCode is a .NET coding add-in 126 | .JustCode 127 | 128 | # TeamCity is a build add-in 129 | _TeamCity* 130 | 131 | # DotCover is a Code Coverage Tool 132 | *.dotCover 133 | 134 | # AxoCover is a Code Coverage Tool 135 | .axoCover/* 136 | !.axoCover/settings.json 137 | 138 | # Visual Studio code coverage results 139 | *.coverage 140 | *.coveragexml 141 | 142 | # NCrunch 143 | _NCrunch_* 144 | .*crunch*.local.xml 145 | nCrunchTemp_* 146 | 147 | # MightyMoose 148 | *.mm.* 149 | AutoTest.Net/ 150 | 151 | # Web workbench (sass) 152 | .sass-cache/ 153 | 154 | # Installshield output folder 155 | [Ee]xpress/ 156 | 157 | # DocProject is a documentation generator add-in 158 | DocProject/buildhelp/ 159 | DocProject/Help/*.HxT 160 | DocProject/Help/*.HxC 161 | DocProject/Help/*.hhc 162 | DocProject/Help/*.hhk 163 | DocProject/Help/*.hhp 164 | DocProject/Help/Html2 165 | DocProject/Help/html 166 | 167 | # Click-Once directory 168 | publish/ 169 | 170 | # Publish Web Output 171 | *.[Pp]ublish.xml 172 | *.azurePubxml 173 | # Note: Comment the next line if you want to checkin your web deploy settings, 174 | # but database connection strings (with potential passwords) will be unencrypted 175 | *.pubxml 176 | *.publishproj 177 | 178 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 179 | # checkin your Azure Web App publish settings, but sensitive information contained 180 | # in these scripts will be unencrypted 181 | PublishScripts/ 182 | 183 | # NuGet Packages 184 | *.nupkg 185 | # The packages folder can be ignored because of Package Restore 186 | **/[Pp]ackages/* 187 | # except build/, which is used as an MSBuild target. 188 | !**/[Pp]ackages/build/ 189 | # Uncomment if necessary however generally it will be regenerated when needed 190 | #!**/[Pp]ackages/repositories.config 191 | # NuGet v3's project.json files produces more ignorable files 192 | *.nuget.props 193 | *.nuget.targets 194 | 195 | # Microsoft Azure Build Output 196 | csx/ 197 | *.build.csdef 198 | 199 | # Microsoft Azure Emulator 200 | ecf/ 201 | rcf/ 202 | 203 | # Windows Store app package directories and files 204 | AppPackages/ 205 | BundleArtifacts/ 206 | Package.StoreAssociation.xml 207 | _pkginfo.txt 208 | *.appx 209 | 210 | # Visual Studio cache files 211 | # files ending in .cache can be ignored 212 | *.[Cc]ache 213 | # but keep track of directories ending in .cache 214 | !?*.[Cc]ache/ 215 | 216 | # Others 217 | ClientBin/ 218 | ~$* 219 | *~ 220 | *.dbmdl 221 | *.dbproj.schemaview 222 | *.jfm 223 | *.pfx 224 | *.publishsettings 225 | orleans.codegen.cs 226 | 227 | # Including strong name files can present a security risk 228 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 229 | #*.snk 230 | 231 | # Since there are multiple workflows, uncomment next line to ignore bower_components 232 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 233 | #bower_components/ 234 | 235 | # RIA/Silverlight projects 236 | Generated_Code/ 237 | 238 | # Backup & report files from converting an old project file 239 | # to a newer Visual Studio version. Backup files are not needed, 240 | # because we have git ;-) 241 | _UpgradeReport_Files/ 242 | Backup*/ 243 | UpgradeLog*.XML 244 | UpgradeLog*.htm 245 | ServiceFabricBackup/ 246 | *.rptproj.bak 247 | 248 | # SQL Server files 249 | *.mdf 250 | *.ldf 251 | *.ndf 252 | 253 | # Business Intelligence projects 254 | *.rdl.data 255 | *.bim.layout 256 | *.bim_*.settings 257 | *.rptproj.rsuser 258 | *- Backup*.rdl 259 | 260 | # Microsoft Fakes 261 | FakesAssemblies/ 262 | 263 | # GhostDoc plugin setting file 264 | *.GhostDoc.xml 265 | 266 | # Node.js Tools for Visual Studio 267 | .ntvs_analysis.dat 268 | node_modules/ 269 | 270 | # Visual Studio 6 build log 271 | *.plg 272 | 273 | # Visual Studio 6 workspace options file 274 | *.opt 275 | 276 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 277 | *.vbw 278 | 279 | # Visual Studio LightSwitch build output 280 | **/*.HTMLClient/GeneratedArtifacts 281 | **/*.DesktopClient/GeneratedArtifacts 282 | **/*.DesktopClient/ModelManifest.xml 283 | **/*.Server/GeneratedArtifacts 284 | **/*.Server/ModelManifest.xml 285 | _Pvt_Extensions 286 | 287 | # Paket dependency manager 288 | .paket/paket.exe 289 | paket-files/ 290 | 291 | # FAKE - F# Make 292 | .fake/ 293 | 294 | # JetBrains Rider 295 | .idea/ 296 | *.sln.iml 297 | 298 | # CodeRush personal settings 299 | .cr/personal 300 | 301 | # Python Tools for Visual Studio (PTVS) 302 | __pycache__/ 303 | *.pyc 304 | 305 | # Cake - Uncomment if you are using it 306 | # tools/** 307 | # !tools/packages.config 308 | 309 | # Tabs Studio 310 | *.tss 311 | 312 | # Telerik's JustMock configuration file 313 | *.jmconfig 314 | 315 | # BizTalk build output 316 | *.btp.cs 317 | *.btm.cs 318 | *.odx.cs 319 | *.xsd.cs 320 | 321 | # OpenCover UI analysis results 322 | OpenCover/ 323 | 324 | # Azure Stream Analytics local run output 325 | ASALocalRun/ 326 | 327 | # MSBuild Binary and Structured Log 328 | *.binlog 329 | 330 | # NVidia Nsight GPU debugger configuration file 331 | *.nvuser 332 | 333 | # MFractors (Xamarin productivity tool) working folder 334 | .mfractor/ 335 | 336 | # Local History for Visual Studio 337 | .localhistory/ 338 | 339 | # BeatPulse healthcheck temp database 340 | healthchecksdb -------------------------------------------------------------------------------- /EXE2DLL.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomms/EXE2DLL_CLR/0e02f89cd3fc5c2aaa0336d194c6aedff3cffc0a/EXE2DLL.exe -------------------------------------------------------------------------------- /EXE2DLL.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30320.27 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EXE2DLL", "EXE2DLL\EXE2DLL.vcxproj", "{0A51A643-2C9D-4DAD-B5A7-A1A74433B147}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {0A51A643-2C9D-4DAD-B5A7-A1A74433B147}.Debug|x64.ActiveCfg = Debug|x64 17 | {0A51A643-2C9D-4DAD-B5A7-A1A74433B147}.Debug|x64.Build.0 = Debug|x64 18 | {0A51A643-2C9D-4DAD-B5A7-A1A74433B147}.Debug|x86.ActiveCfg = Debug|Win32 19 | {0A51A643-2C9D-4DAD-B5A7-A1A74433B147}.Debug|x86.Build.0 = Debug|Win32 20 | {0A51A643-2C9D-4DAD-B5A7-A1A74433B147}.Release|x64.ActiveCfg = Release|x64 21 | {0A51A643-2C9D-4DAD-B5A7-A1A74433B147}.Release|x64.Build.0 = Release|x64 22 | {0A51A643-2C9D-4DAD-B5A7-A1A74433B147}.Release|x86.ActiveCfg = Release|Win32 23 | {0A51A643-2C9D-4DAD-B5A7-A1A74433B147}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {FF7BA705-DFE5-4CD2-8CEC-E7E108FA9851} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /EXE2DLL/AssemblyInfo.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | 3 | using namespace System; 4 | using namespace System::Reflection; 5 | using namespace System::Runtime::CompilerServices; 6 | using namespace System::Runtime::InteropServices; 7 | using namespace System::Security::Permissions; 8 | 9 | [assembly:AssemblyTitleAttribute(L"EXE2DLL")]; 10 | [assembly:AssemblyDescriptionAttribute(L"")]; 11 | [assembly:AssemblyConfigurationAttribute(L"")]; 12 | [assembly:AssemblyCompanyAttribute(L"")]; 13 | [assembly:AssemblyProductAttribute(L"EXE2DLL")]; 14 | [assembly:AssemblyCopyrightAttribute(L"Copyright (c) 2020")]; 15 | [assembly:AssemblyTrademarkAttribute(L"")]; 16 | [assembly:AssemblyCultureAttribute(L"")]; 17 | 18 | [assembly:AssemblyVersionAttribute("1.0.*")]; 19 | 20 | [assembly:ComVisible(false)]; 21 | 22 | [assembly:CLSCompliantAttribute(true)]; 23 | -------------------------------------------------------------------------------- /EXE2DLL/EXE2DLL.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | #include "EXE2DLL.h" 3 | #include "MyForm.h" 4 | 5 | 6 | 7 | #include "dbghelp.h" 8 | #pragma comment(lib, "dbghelp.lib") 9 | 10 | //extern char* __unDName(char*, const char*, int, void*, void*, int); 11 | 12 | using namespace EXE2DLL; 13 | 14 | using namespace System; 15 | using namespace System::Windows::Forms; 16 | 17 | //[System::STAThread] 18 | [STAThreadAttribute] 19 | int main(cli::array^ args) 20 | { 21 | Application::EnableVisualStyles(); 22 | Application::SetCompatibleTextRenderingDefault(false); 23 | MyForm MainForm; 24 | Application::Run(% MainForm); 25 | } 26 | 27 | 28 | 29 | void updatecontrol() 30 | { 31 | PElist.clear(); 32 | DataDirectory.clear(); 33 | Sectionlist.clear(); 34 | funlist.clear(); 35 | EXE2DLL::section_name = ""; 36 | 37 | try 38 | { 39 | EXE2DLL::MyForm::TheInstance->listView1->Items->Clear(); 40 | EXE2DLL::MyForm::TheInstance->listView2->Items->Clear(); 41 | } 42 | catch(exception e) 43 | { 44 | 45 | } 46 | 47 | 48 | if (EXE2DLL::section_name.empty() == true && EXE2DLL::EXETODLL::FilePath != nullptr) 49 | { 50 | HANDLE hFile = CreateFileA((const char*)(void*)Marshal::StringToHGlobalAnsi(EXE2DLL::EXETODLL::FilePath), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 51 | //获取文件大小 52 | DWORD dwFileSize = GetFileSize(hFile, NULL); 53 | CHAR* pFileBuf = new CHAR[dwFileSize]; 54 | //将文件读取到内存 55 | DWORD ReadSize = 0; 56 | ReadFile(hFile, pFileBuf, dwFileSize, &ReadSize, NULL); 57 | PIMAGE_SECTION_HEADER last_section = get_last_section((PBYTE)pFileBuf, dwFileSize, true); 58 | for (DWORD i = 0; i < IMAGE_SIZEOF_SHORT_NAME; i++) 59 | { 60 | char name[62]; 61 | sprintf_s(name, "%c", last_section->Name[i]); 62 | EXE2DLL::section_name += name; 63 | } 64 | CloseHandle(hFile); 65 | } 66 | 67 | int hRes = GetPeInfo((const char*)(void*)Marshal::StringToHGlobalAnsi(EXE2DLL::EXETODLL::FilePath), PElist, DataDirectory, Sectionlist); 68 | if (hRes == 0) 69 | { 70 | EXE2DLL::MyForm::TheInstance->listView1->BeginUpdate(); 71 | for (int i = 0; i < Sectionlist.size(); ++i) 72 | { 73 | String^ str = gcnew String(Sectionlist[i].c_str()); 74 | ListViewItem^ lvi = gcnew ListViewItem(); 75 | lvi->Text = (i + 1).ToString(); 76 | lvi->SubItems->Add(str->Split('#')[0]->ToString()); 77 | lvi->SubItems->Add(str->Split('#')[1]->ToString()); 78 | lvi->SubItems->Add(str->Split('#')[2]->ToString()); 79 | lvi->SubItems->Add(str->Split('#')[3]->ToString()); 80 | lvi->SubItems->Add(str->Split('#')[4]->ToString()); 81 | lvi->SubItems->Add(str->Split('#')[5]->ToString()); 82 | EXE2DLL::MyForm::TheInstance->listView1->Items->Add(lvi); 83 | } 84 | EXE2DLL::MyForm::TheInstance->listView1->EndUpdate(); 85 | } 86 | 87 | int res = GetExpTableList((const char*)(void*)Marshal::StringToHGlobalAnsi(EXE2DLL::EXETODLL::FilePath), funlist); 88 | if (res == 0) 89 | { 90 | EXE2DLL::MyForm::TheInstance->listView2->BeginUpdate(); 91 | for (int i = 0; i < funlist.size(); ++i) 92 | { 93 | String^ str = gcnew String(funlist[i].c_str()); 94 | ListViewItem^ lvi = gcnew ListViewItem(); 95 | lvi->Text = (i + 1).ToString(); 96 | lvi->SubItems->Add(str->Split('#')[0]->ToString()); 97 | lvi->SubItems->Add(str->Split('#')[1]->ToString()); 98 | lvi->SubItems->Add(str->Split('#')[2]->ToString()); 99 | lvi->SubItems->Add(str->Split('#')[3]->ToString()); 100 | lvi->SubItems->Add(gcnew String(EXE2DLL::section_name.c_str())); 101 | EXE2DLL::MyForm::TheInstance->listView2->Items->Add(lvi); 102 | } 103 | EXE2DLL::MyForm::TheInstance->listView2->EndUpdate(); 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /EXE2DLL/EXE2DLL.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "add_export_function.h" 4 | //#include "MyForm.h" 5 | 6 | #ifdef _WIN64 7 | typedef unsigned __int64 size_t; 8 | #else 9 | typedef unsigned int size_t; 10 | #endif 11 | 12 | 13 | void updatecontrol(); 14 | 15 | namespace EXE2DLL 16 | { 17 | using namespace System; 18 | using namespace System::ComponentModel; 19 | using namespace System::Collections; 20 | using namespace System::Windows::Forms; 21 | using namespace System::Data; 22 | using namespace System::Drawing; 23 | using namespace System::Net; 24 | using namespace System::Threading; 25 | using namespace System::IO; 26 | using namespace System::Runtime::InteropServices; 27 | 28 | 29 | static std::vector PElist; 30 | static std::vector DataDirectory; 31 | static std::vector Sectionlist; 32 | static std::vector funlist; 33 | static bool modifyflag; 34 | static std::string section_name; 35 | static std::string fun_name; 36 | 37 | public ref class EXETODLL 38 | { 39 | public: static String^FilePath; 40 | 41 | public: 42 | static size_t AddSection(String^ path, String^ wc_section_name, DWORD VirtualSize, String^ str_Characteristics, size_t^% RvaRawData) 43 | { 44 | return add_section((const char*)(void*)Marshal::StringToHGlobalAnsi(path), (const char*)(void*)Marshal::StringToHGlobalAnsi(wc_section_name), VirtualSize, (const char*)(void*)Marshal::StringToHGlobalAnsi(str_Characteristics), (size_t)RvaRawData); 45 | } 46 | static BOOL AddExtportFuncton(String^ file_name, String^ section_name, String^ FuncName, size_t FuncRva) 47 | { 48 | return add_export_table((const char*)(void*)Marshal::StringToHGlobalAnsi(file_name), (const char*)(void*)Marshal::StringToHGlobalAnsi(section_name), (const char*)(void*)Marshal::StringToHGlobalAnsi(FuncName), FuncRva); 49 | } 50 | static BOOL ModifyExtportFuncton(String^ file_name, String^ old_func_name, String^ FuncName, size_t FuncRva) 51 | { 52 | return modify_export_table((const char*)(void*)Marshal::StringToHGlobalAnsi(file_name), (const char*)(void*)Marshal::StringToHGlobalAnsi(old_func_name), (const char*)(void*)Marshal::StringToHGlobalAnsi(FuncName), FuncRva); 53 | } 54 | static BOOL DeleteExtportFuncton(String^ file_name, String^ FuncName, size_t FuncRva) 55 | { 56 | return delete_export_table((const char*)(void*)Marshal::StringToHGlobalAnsi(file_name), (const char*)(void*)Marshal::StringToHGlobalAnsi(FuncName), FuncRva); 57 | } 58 | }; 59 | 60 | }; -------------------------------------------------------------------------------- /EXE2DLL/EXE2DLL.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 16.0 23 | {0A51A643-2C9D-4DAD-B5A7-A1A74433B147} 24 | v4.5 25 | ManagedCProj 26 | EXE2DLL 27 | 10.0 28 | 29 | 30 | 31 | Application 32 | true 33 | v142 34 | true 35 | Unicode 36 | 37 | 38 | Application 39 | false 40 | v142 41 | true 42 | Unicode 43 | 44 | 45 | Application 46 | true 47 | v142 48 | true 49 | Unicode 50 | 51 | 52 | Application 53 | false 54 | v142 55 | true 56 | Unicode 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | Use 80 | pch.h 81 | Level3 82 | WIN32;_DEBUG;%(PreprocessorDefinitions) 83 | stdcpp17 84 | /utf-8 %(AdditionalOptions) 85 | MultiThreadedDebugDLL 86 | 87 | 88 | 89 | Windows 90 | main 91 | AsInvoker 92 | 93 | 94 | 95 | 96 | Use 97 | pch.h 98 | Level3 99 | _DEBUG;%(PreprocessorDefinitions) 100 | /utf-8 %(AdditionalOptions) 101 | 102 | 103 | 104 | Windows 105 | main 106 | 107 | 108 | 109 | 110 | Use 111 | pch.h 112 | Level3 113 | WIN32;NDEBUG;%(PreprocessorDefinitions) 114 | /utf-8 %(AdditionalOptions) 115 | MultiThreadedDLL 116 | 117 | 118 | 119 | Windows 120 | main 121 | 122 | 123 | 124 | 125 | Use 126 | pch.h 127 | Level3 128 | NDEBUG;%(PreprocessorDefinitions) 129 | 130 | 131 | 132 | Console 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | CppForm 144 | 145 | 146 | CppForm 147 | 148 | 149 | CppForm 150 | 151 | 152 | CppForm 153 | 154 | 155 | CppForm 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | Create 168 | Create 169 | Create 170 | Create 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | frm_Directory.h 187 | 188 | 189 | frm_modify.h 190 | 191 | 192 | frm_PEInfo.h 193 | 194 | 195 | frm_Section.h 196 | 197 | 198 | MyForm.h 199 | 200 | 201 | 202 | 203 | 204 | -------------------------------------------------------------------------------- /EXE2DLL/EXE2DLL.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Resource Files 20 | 21 | 22 | 23 | 24 | Header Files 25 | 26 | 27 | Header Files 28 | 29 | 30 | Header Files 31 | 32 | 33 | Header Files 34 | 35 | 36 | Header Files 37 | 38 | 39 | Header Files 40 | 41 | 42 | Header Files 43 | 44 | 45 | Header Files 46 | 47 | 48 | Header Files 49 | 50 | 51 | Header Files 52 | 53 | 54 | Header Files 55 | 56 | 57 | 58 | 59 | Source Files 60 | 61 | 62 | Source Files 63 | 64 | 65 | Source Files 66 | 67 | 68 | Source Files 69 | 70 | 71 | Source Files 72 | 73 | 74 | Source Files 75 | 76 | 77 | 78 | 79 | Resource Files 80 | 81 | 82 | -------------------------------------------------------------------------------- /EXE2DLL/ExeToDll.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | int exe2dll(const char* filename, const char* outfile); 5 | bool validate_ptr(IN const void* buffer_bgn, IN SIZE_T buffer_size, IN const void* field_bgn, IN SIZE_T field_size); 6 | PIMAGE_SECTION_HEADER get_section_hdr(IN const BYTE* payload, IN const size_t buffer_size, IN size_t section_num); 7 | bool is64bit(IN const BYTE* pe_buffer); 8 | const IMAGE_FILE_HEADER* get_file_hdr(IN const BYTE* payload, IN const size_t buffer_size); 9 | PIMAGE_SECTION_HEADER get_section_hdr(IN const BYTE* payload, IN const size_t buffer_size, IN size_t section_num); 10 | size_t get_sections_count(IN const BYTE* payload, IN const size_t buffer_size); 11 | 12 | namespace EXE2DLL{ 13 | 14 | class RelocBlockCallback 15 | { 16 | public: 17 | RelocBlockCallback(bool _is64bit) 18 | : is64bit(_is64bit) 19 | { 20 | } 21 | 22 | virtual bool processRelocField(ULONG_PTR relocField) = 0; 23 | 24 | protected: 25 | bool is64bit; 26 | }; 27 | 28 | 29 | } 30 | 31 | -------------------------------------------------------------------------------- /EXE2DLL/MyForm.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | #include "MyForm.h" 3 | 4 | -------------------------------------------------------------------------------- /EXE2DLL/MyForm.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | //#pragma comment(lib, "shell32.lib") 3 | //#pragma comment(lib, "user32.lib") 4 | //#using 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include "frm_Section.h" 10 | #include "frm_modify.h" 11 | #include "add_export_function.h" 12 | #include "EXE2DLL.h" 13 | #include "PE_INFO.h" 14 | #include "frm_PEInfo.h" 15 | #include "frm_Directory.h" 16 | #include "ExeToDll.h" 17 | 18 | #include "dbghelp.h" 19 | #pragma comment(lib, "dbghelp.lib") 20 | 21 | 22 | namespace EXE2DLL 23 | { 24 | 25 | using namespace System; 26 | using namespace System::ComponentModel; 27 | using namespace System::Collections; 28 | using namespace System::Windows::Forms; 29 | using namespace System::Data; 30 | using namespace System::Drawing; 31 | using namespace msclr::interop; 32 | using namespace System::Net; 33 | using namespace System::Threading; 34 | using namespace System::IO; 35 | using namespace msclr::interop; 36 | using namespace System::Runtime::InteropServices; 37 | 38 | /// 39 | /// Summary for MyForm 40 | /// 41 | 42 | 43 | public ref class MyForm : public System::Windows::Forms::Form 44 | { 45 | 46 | 47 | public: 48 | static MyForm^ TheInstance; 49 | MyForm(void) 50 | { 51 | InitializeComponent(); 52 | TheInstance = this; 53 | } 54 | 55 | protected: 56 | /// 57 | /// Clean up any resources being used. 58 | /// 59 | ~MyForm() 60 | { 61 | if (components) 62 | { 63 | delete components; 64 | } 65 | } 66 | private: System::Windows::Forms::Button^ button1; 67 | public: System::Windows::Forms::TextBox^ textBox1; 68 | private: 69 | protected: 70 | 71 | 72 | private: System::Windows::Forms::GroupBox^ groupBox1; 73 | private: System::Windows::Forms::Button^ button2; 74 | private: System::Windows::Forms::Label^ label1; 75 | private: System::Windows::Forms::OpenFileDialog^ openFileDialog1; 76 | private: System::Windows::Forms::ContextMenuStrip^ contextMenuStrip1; 77 | 78 | 79 | 80 | private: System::Windows::Forms::ToolTip^ toolTip1; 81 | 82 | private: System::Windows::Forms::TabControl^ tabControl1; 83 | private: System::Windows::Forms::TabPage^ tabPage1; 84 | private: System::Windows::Forms::TabPage^ tabPage2; 85 | public: System::Windows::Forms::ListView^ listView1; 86 | private: 87 | public: System::Windows::Forms::ListView^ listView2; 88 | 89 | 90 | 91 | private: System::Windows::Forms::ContextMenuStrip^ contextMenuStrip2; 92 | private: System::Windows::Forms::ToolStripMenuItem^ AddSectionMenu; 93 | private: System::Windows::Forms::ToolStripMenuItem^ AddExporFuncMenuI; 94 | private: System::Windows::Forms::ToolStripMenuItem^ ModifyExportFuncMenu; 95 | private: System::Windows::Forms::ToolStripMenuItem^ DeletExoprtFuncMenu; 96 | private: System::Windows::Forms::ToolStripMenuItem^ pEInfoMenu; 97 | private: System::Windows::Forms::ToolStripMenuItem^ dataDirectoryMenu; 98 | private: System::Windows::Forms::SaveFileDialog^ saveFileDialog1; 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | private: System::ComponentModel::IContainer^ components; 110 | 111 | 112 | private: 113 | /// 114 | /// Required designer variable. 115 | /// 116 | 117 | 118 | #pragma region Windows Form Designer generated code 119 | /// 120 | /// Required method for Designer support - do not modify 121 | /// the contents of this method with the code editor. 122 | /// 123 | void InitializeComponent(void) 124 | { 125 | this->components = (gcnew System::ComponentModel::Container()); 126 | System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(MyForm::typeid)); 127 | this->button1 = (gcnew System::Windows::Forms::Button()); 128 | this->textBox1 = (gcnew System::Windows::Forms::TextBox()); 129 | this->contextMenuStrip1 = (gcnew System::Windows::Forms::ContextMenuStrip(this->components)); 130 | this->pEInfoMenu = (gcnew System::Windows::Forms::ToolStripMenuItem()); 131 | this->dataDirectoryMenu = (gcnew System::Windows::Forms::ToolStripMenuItem()); 132 | this->groupBox1 = (gcnew System::Windows::Forms::GroupBox()); 133 | this->button2 = (gcnew System::Windows::Forms::Button()); 134 | this->label1 = (gcnew System::Windows::Forms::Label()); 135 | this->openFileDialog1 = (gcnew System::Windows::Forms::OpenFileDialog()); 136 | this->toolTip1 = (gcnew System::Windows::Forms::ToolTip(this->components)); 137 | this->tabControl1 = (gcnew System::Windows::Forms::TabControl()); 138 | this->tabPage1 = (gcnew System::Windows::Forms::TabPage()); 139 | this->listView1 = (gcnew System::Windows::Forms::ListView()); 140 | this->tabPage2 = (gcnew System::Windows::Forms::TabPage()); 141 | this->listView2 = (gcnew System::Windows::Forms::ListView()); 142 | this->contextMenuStrip2 = (gcnew System::Windows::Forms::ContextMenuStrip(this->components)); 143 | this->AddExporFuncMenuI = (gcnew System::Windows::Forms::ToolStripMenuItem()); 144 | this->ModifyExportFuncMenu = (gcnew System::Windows::Forms::ToolStripMenuItem()); 145 | this->DeletExoprtFuncMenu = (gcnew System::Windows::Forms::ToolStripMenuItem()); 146 | this->AddSectionMenu = (gcnew System::Windows::Forms::ToolStripMenuItem()); 147 | this->saveFileDialog1 = (gcnew System::Windows::Forms::SaveFileDialog()); 148 | this->contextMenuStrip1->SuspendLayout(); 149 | this->groupBox1->SuspendLayout(); 150 | this->tabControl1->SuspendLayout(); 151 | this->tabPage1->SuspendLayout(); 152 | this->tabPage2->SuspendLayout(); 153 | this->contextMenuStrip2->SuspendLayout(); 154 | this->SuspendLayout(); 155 | // 156 | // button1 157 | // 158 | this->button1->Location = System::Drawing::Point(460, 13); 159 | this->button1->Name = L"button1"; 160 | this->button1->Size = System::Drawing::Size(58, 29); 161 | this->button1->TabIndex = 0; 162 | this->button1->Text = L"Open"; 163 | this->button1->UseVisualStyleBackColor = true; 164 | this->button1->Click += gcnew System::EventHandler(this, &MyForm::button1_Click); 165 | // 166 | // textBox1 167 | // 168 | this->textBox1->Location = System::Drawing::Point(10, 18); 169 | this->textBox1->Name = L"textBox1"; 170 | this->textBox1->Size = System::Drawing::Size(441, 20); 171 | this->textBox1->TabIndex = 1; 172 | this->textBox1->Text = L"Drag or Open Exe File"; 173 | this->textBox1->DragEnter += gcnew System::Windows::Forms::DragEventHandler(this, &MyForm::textBox1_DragEnter); 174 | // 175 | // contextMenuStrip1 176 | // 177 | this->contextMenuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) { 178 | this->pEInfoMenu, 179 | this->dataDirectoryMenu 180 | }); 181 | this->contextMenuStrip1->Name = L"contextMenuStrip1"; 182 | this->contextMenuStrip1->Size = System::Drawing::Size(168, 48); 183 | // 184 | // pEInfoMenu 185 | // 186 | this->pEInfoMenu->Name = L"pEInfoMenu"; 187 | this->pEInfoMenu->Size = System::Drawing::Size(167, 22); 188 | this->pEInfoMenu->Text = L"PE Info"; 189 | this->pEInfoMenu->Click += gcnew System::EventHandler(this, &MyForm::pEInfoMenu_Click); 190 | // 191 | // dataDirectoryMenu 192 | // 193 | this->dataDirectoryMenu->Name = L"dataDirectoryMenu"; 194 | this->dataDirectoryMenu->Size = System::Drawing::Size(167, 22); 195 | this->dataDirectoryMenu->Text = L"DataDirectory List"; 196 | this->dataDirectoryMenu->Click += gcnew System::EventHandler(this, &MyForm::dataDirectoryMenu_Click); 197 | // 198 | // groupBox1 199 | // 200 | this->groupBox1->Controls->Add(this->button2); 201 | this->groupBox1->Controls->Add(this->textBox1); 202 | this->groupBox1->Controls->Add(this->button1); 203 | this->groupBox1->Location = System::Drawing::Point(6, 1); 204 | this->groupBox1->Name = L"groupBox1"; 205 | this->groupBox1->Size = System::Drawing::Size(594, 48); 206 | this->groupBox1->TabIndex = 3; 207 | this->groupBox1->TabStop = false; 208 | // 209 | // button2 210 | // 211 | this->button2->Location = System::Drawing::Point(527, 13); 212 | this->button2->Name = L"button2"; 213 | this->button2->Size = System::Drawing::Size(58, 29); 214 | this->button2->TabIndex = 2; 215 | this->button2->Text = L"Save"; 216 | this->button2->UseVisualStyleBackColor = true; 217 | this->button2->Click += gcnew System::EventHandler(this, &MyForm::button2_Click); 218 | // 219 | // label1 220 | // 221 | this->label1->Location = System::Drawing::Point(7, 256); 222 | this->label1->Name = L"label1"; 223 | this->label1->Size = System::Drawing::Size(592, 32); 224 | this->label1->TabIndex = 4; 225 | this->label1->Text = L"Right click operation export table"; 226 | this->label1->TextAlign = System::Drawing::ContentAlignment::MiddleCenter; 227 | // 228 | // openFileDialog1 229 | // 230 | this->openFileDialog1->FileName = L"openFileDialog1"; 231 | // 232 | // tabControl1 233 | // 234 | this->tabControl1->Controls->Add(this->tabPage1); 235 | this->tabControl1->Controls->Add(this->tabPage2); 236 | this->tabControl1->Location = System::Drawing::Point(6, 55); 237 | this->tabControl1->Name = L"tabControl1"; 238 | this->tabControl1->SelectedIndex = 0; 239 | this->tabControl1->Size = System::Drawing::Size(593, 206); 240 | this->tabControl1->TabIndex = 3; 241 | // 242 | // tabPage1 243 | // 244 | this->tabPage1->Controls->Add(this->listView1); 245 | this->tabPage1->Location = System::Drawing::Point(4, 22); 246 | this->tabPage1->Name = L"tabPage1"; 247 | this->tabPage1->Padding = System::Windows::Forms::Padding(3); 248 | this->tabPage1->Size = System::Drawing::Size(585, 180); 249 | this->tabPage1->TabIndex = 0; 250 | this->tabPage1->Text = L"Section List"; 251 | this->tabPage1->UseVisualStyleBackColor = true; 252 | // 253 | // listView1 254 | // 255 | this->listView1->ContextMenuStrip = this->contextMenuStrip1; 256 | this->listView1->FullRowSelect = true; 257 | this->listView1->GridLines = true; 258 | this->listView1->HideSelection = false; 259 | this->listView1->Location = System::Drawing::Point(1, 2); 260 | this->listView1->Name = L"listView1"; 261 | this->listView1->Size = System::Drawing::Size(589, 178); 262 | this->listView1->TabIndex = 4; 263 | this->listView1->UseCompatibleStateImageBehavior = false; 264 | this->listView1->SelectedIndexChanged += gcnew System::EventHandler(this, &MyForm::listView1_SelectedIndexChanged); 265 | // 266 | // tabPage2 267 | // 268 | this->tabPage2->Controls->Add(this->listView2); 269 | this->tabPage2->Location = System::Drawing::Point(4, 22); 270 | this->tabPage2->Name = L"tabPage2"; 271 | this->tabPage2->Padding = System::Windows::Forms::Padding(3); 272 | this->tabPage2->Size = System::Drawing::Size(585, 180); 273 | this->tabPage2->TabIndex = 1; 274 | this->tabPage2->Text = L"Export List"; 275 | this->tabPage2->UseVisualStyleBackColor = true; 276 | // 277 | // listView2 278 | // 279 | this->listView2->ContextMenuStrip = this->contextMenuStrip2; 280 | this->listView2->FullRowSelect = true; 281 | this->listView2->GridLines = true; 282 | this->listView2->HideSelection = false; 283 | this->listView2->Location = System::Drawing::Point(1, 2); 284 | this->listView2->Name = L"listView2"; 285 | this->listView2->Size = System::Drawing::Size(589, 177); 286 | this->listView2->TabIndex = 3; 287 | this->listView2->UseCompatibleStateImageBehavior = false; 288 | this->listView2->Click += gcnew System::EventHandler(this, &MyForm::listView2_Click); 289 | // 290 | // contextMenuStrip2 291 | // 292 | this->contextMenuStrip2->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(4) { 293 | this->AddExporFuncMenuI, 294 | this->ModifyExportFuncMenu, this->DeletExoprtFuncMenu, this->AddSectionMenu 295 | }); 296 | this->contextMenuStrip2->Name = L"contextMenuStrip1"; 297 | this->contextMenuStrip2->Size = System::Drawing::Size(173, 92); 298 | // 299 | // AddExporFuncMenuI 300 | // 301 | this->AddExporFuncMenuI->Name = L"AddExporFuncMenuI"; 302 | this->AddExporFuncMenuI->Size = System::Drawing::Size(172, 22); 303 | this->AddExporFuncMenuI->Text = L"AddExporFunc"; 304 | this->AddExporFuncMenuI->Click += gcnew System::EventHandler(this, &MyForm::AddExporFuncMenuI_Click); 305 | // 306 | // ModifyExportFuncMenu 307 | // 308 | this->ModifyExportFuncMenu->Name = L"ModifyExportFuncMenu"; 309 | this->ModifyExportFuncMenu->Size = System::Drawing::Size(172, 22); 310 | this->ModifyExportFuncMenu->Text = L"ModifyExportFunc"; 311 | this->ModifyExportFuncMenu->Click += gcnew System::EventHandler(this, &MyForm::ModifyExportFuncMenu_Click); 312 | // 313 | // DeletExoprtFuncMenu 314 | // 315 | this->DeletExoprtFuncMenu->Name = L"DeletExoprtFuncMenu"; 316 | this->DeletExoprtFuncMenu->Size = System::Drawing::Size(172, 22); 317 | this->DeletExoprtFuncMenu->Text = L"DeletExoprtFunc"; 318 | this->DeletExoprtFuncMenu->Click += gcnew System::EventHandler(this, &MyForm::DeletExoprtFuncMenu_Click); 319 | // 320 | // AddSectionMenu 321 | // 322 | this->AddSectionMenu->Name = L"AddSectionMenu"; 323 | this->AddSectionMenu->Size = System::Drawing::Size(172, 22); 324 | this->AddSectionMenu->Text = L"AddSection"; 325 | this->AddSectionMenu->Click += gcnew System::EventHandler(this, &MyForm::toolStripMenuItem1_Click); 326 | // 327 | // MyForm 328 | // 329 | this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); 330 | this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; 331 | this->ClientSize = System::Drawing::Size(612, 290); 332 | this->Controls->Add(this->tabControl1); 333 | this->Controls->Add(this->label1); 334 | this->Controls->Add(this->groupBox1); 335 | this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedToolWindow; 336 | this->Icon = (cli::safe_cast(resources->GetObject(L"$this.Icon"))); 337 | this->Name = L"MyForm"; 338 | this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; 339 | this->Text = L"EXE2DLL V1.0"; 340 | this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load); 341 | this->contextMenuStrip1->ResumeLayout(false); 342 | this->groupBox1->ResumeLayout(false); 343 | this->groupBox1->PerformLayout(); 344 | this->tabControl1->ResumeLayout(false); 345 | this->tabPage1->ResumeLayout(false); 346 | this->tabPage2->ResumeLayout(false); 347 | this->contextMenuStrip2->ResumeLayout(false); 348 | this->ResumeLayout(false); 349 | 350 | } 351 | #pragma endregion 352 | 353 | private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) 354 | { 355 | this->AllowDrop = true; 356 | this->textBox1->AllowDrop = true; 357 | this->listView1->View = View::Details; 358 | this->listView1->Columns->Add("NO.", 40, HorizontalAlignment::Center); 359 | this->listView1->Columns->Add("Name", 60, HorizontalAlignment::Center); 360 | this->listView1->Columns->Add("RawAddr", 100, HorizontalAlignment::Center); 361 | this->listView1->Columns->Add("RawSize",100, HorizontalAlignment::Center); 362 | this->listView1->Columns->Add("VirtualAddr", 100, HorizontalAlignment::Center); 363 | this->listView1->Columns->Add("VirtualSize", 100, HorizontalAlignment::Center); 364 | this->listView1->Columns->Add("Characteristics", 90, HorizontalAlignment::Center); 365 | 366 | 367 | this->listView2->View = View::Details; 368 | this->listView2->Columns->Add("NO.", 40, HorizontalAlignment::Center); 369 | this->listView2->Columns->Add("Offset", 100, HorizontalAlignment::Center); 370 | this->listView2->Columns->Add("FuncRVA.", 100, HorizontalAlignment::Center); 371 | this->listView2->Columns->Add("NameRVA", 100, HorizontalAlignment::Center); 372 | this->listView2->Columns->Add("FuncName", 100, HorizontalAlignment::Center); 373 | this->listView2->Columns->Add("Section", 80, HorizontalAlignment::Center); 374 | this->listView2->Columns->Add("Undname", 300, HorizontalAlignment::Center); 375 | } 376 | 377 | private: System::Void textBox1_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) 378 | { 379 | cli::array^ items = (cli::array^)e->Data->GetData(DataFormats::FileDrop); 380 | 381 | if (items->Length > 0) 382 | { 383 | textBox1->Text = Convert::ToString(((cli::array^)e->Data->GetData(DataFormats::FileDrop))[0]); 384 | EXE2DLL::EXETODLL::FilePath = textBox1->Text; 385 | 386 | PElist.clear(); 387 | DataDirectory.clear(); 388 | Sectionlist.clear(); 389 | funlist.clear(); 390 | EXE2DLL::section_name = ""; 391 | this->listView1->Items->Clear(); 392 | this->listView2->Items->Clear(); 393 | 394 | int hRes = GetPeInfo((const char*)(void*)Marshal::StringToHGlobalAnsi(textBox1->Text), PElist, DataDirectory, Sectionlist); 395 | if (hRes == 0) 396 | { 397 | 398 | this->listView1->BeginUpdate(); 399 | for (int i = 0; i < Sectionlist.size(); ++i) 400 | { 401 | String^ str = gcnew String(Sectionlist[i].c_str()); 402 | ListViewItem^ lvi = gcnew ListViewItem(); 403 | lvi->Text = (i + 1).ToString(); 404 | lvi->SubItems->Add(str->Split('#')[0]->ToString()); 405 | lvi->SubItems->Add(str->Split('#')[1]->ToString()); 406 | lvi->SubItems->Add(str->Split('#')[2]->ToString()); 407 | lvi->SubItems->Add(str->Split('#')[3]->ToString()); 408 | lvi->SubItems->Add(str->Split('#')[4]->ToString()); 409 | lvi->SubItems->Add(str->Split('#')[5]->ToString()); 410 | listView1->Items->Add(lvi); 411 | } 412 | this->listView1->EndUpdate(); 413 | } 414 | 415 | int res = GetExpTableList((const char*)(void*)Marshal::StringToHGlobalAnsi(textBox1->Text), funlist); 416 | if (res == 0) { 417 | this->listView2->BeginUpdate(); 418 | for (int i = 0; i < funlist.size(); ++i) 419 | { 420 | String^ str = gcnew String(funlist[i].c_str()); 421 | ListViewItem^ lvi = gcnew ListViewItem(); 422 | lvi->Text = (i+1).ToString(); 423 | lvi->SubItems->Add(str->Split('#')[0]->ToString()); 424 | lvi->SubItems->Add(str->Split('#')[1]->ToString()); 425 | lvi->SubItems->Add(str->Split('#')[2]->ToString()); 426 | lvi->SubItems->Add(str->Split('#')[3]->ToString()); 427 | lvi->SubItems->Add(str->Split('#')[4]->ToString()); 428 | const char* decorated_name = (char*)(void*)Marshal::StringToHGlobalAnsi(str->Split('#')[3]->ToString()); 429 | char undecorated_name[1024]; 430 | if (UnDecorateSymbolName(decorated_name, undecorated_name, sizeof(undecorated_name) / sizeof(*undecorated_name), UNDNAME_COMPLETE)) 431 | { 432 | lvi->SubItems->Add(gcnew String(undecorated_name)); 433 | } 434 | listView2->Items->Add(lvi); 435 | } 436 | this->listView2->EndUpdate(); 437 | } 438 | } 439 | } 440 | 441 | 442 | private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 443 | { 444 | Stream^ myStream; 445 | OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog; 446 | 447 | openFileDialog1->InitialDirectory = Application::StartupPath; 448 | openFileDialog1->Filter = "exe files (*.exe)|*.exe|All files (*.*)|*.*"; 449 | openFileDialog1->FilterIndex = 2; 450 | openFileDialog1->RestoreDirectory = true; 451 | 452 | if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) 453 | { 454 | textBox1->Text = openFileDialog1->FileName; 455 | EXE2DLL::EXETODLL::FilePath= openFileDialog1->FileName; 456 | std::string filepath = marshal_as(textBox1->Text); 457 | 458 | PElist.clear(); 459 | DataDirectory.clear(); 460 | Sectionlist.clear(); 461 | funlist.clear(); 462 | EXE2DLL::section_name = ""; 463 | this->listView1->Items->Clear(); 464 | this->listView2->Items->Clear(); 465 | 466 | int hRes=GetPeInfo((const char*)(void*)Marshal::StringToHGlobalAnsi(textBox1->Text), PElist, DataDirectory, Sectionlist); 467 | if (hRes == 0) 468 | { 469 | this->listView1->BeginUpdate(); 470 | for (int i = 0; i < Sectionlist.size(); ++i) 471 | { 472 | String^ str = gcnew String(Sectionlist[i].c_str()); 473 | ListViewItem^ lvi = gcnew ListViewItem(); 474 | lvi->Text = (i + 1).ToString(); 475 | lvi->SubItems->Add(str->Split('#')[0]->ToString()); 476 | lvi->SubItems->Add(str->Split('#')[1]->ToString()); 477 | lvi->SubItems->Add(str->Split('#')[2]->ToString()); 478 | lvi->SubItems->Add(str->Split('#')[3]->ToString()); 479 | lvi->SubItems->Add(str->Split('#')[4]->ToString()); 480 | lvi->SubItems->Add(str->Split('#')[5]->ToString()); 481 | listView1->Items->Add(lvi); 482 | } 483 | this->listView1->EndUpdate(); 484 | } 485 | 486 | int res= GetExpTableList((const char*)(void*)Marshal::StringToHGlobalAnsi(textBox1->Text), funlist); 487 | if (res == 0) 488 | { 489 | this->listView2->BeginUpdate(); 490 | for (int i = 0; i < funlist.size(); ++i) 491 | { 492 | String^ str = gcnew String(funlist[i].c_str()); 493 | ListViewItem^ lvi = gcnew ListViewItem(); 494 | lvi->Text = (i + 1).ToString(); 495 | lvi->SubItems->Add(str->Split('#')[0]->ToString()); 496 | lvi->SubItems->Add(str->Split('#')[1]->ToString()); 497 | lvi->SubItems->Add(str->Split('#')[2]->ToString()); 498 | lvi->SubItems->Add(str->Split('#')[3]->ToString()); 499 | lvi->SubItems->Add(str->Split('#')[4]->ToString()); 500 | const char* decorated_name = (char*)(void*)Marshal::StringToHGlobalAnsi(str->Split('#')[3]->ToString()); 501 | char undecorated_name[1024]; 502 | if (UnDecorateSymbolName(decorated_name, undecorated_name, sizeof(undecorated_name) / sizeof(*undecorated_name), UNDNAME_COMPLETE)) 503 | { 504 | lvi->SubItems->Add(gcnew String(undecorated_name)); 505 | } 506 | listView2->Items->Add(lvi); 507 | } 508 | this->listView2->EndUpdate(); 509 | } 510 | } 511 | } 512 | private: System::Void toolStripMenuItem1_Click(System::Object^ sender, System::EventArgs^ e) 513 | { 514 | modifyflag = false; 515 | frm_section^ stForm = gcnew frm_section; 516 | stForm->Show(); 517 | } 518 | 519 | private: System::Void AddExporFuncMenuI_Click(System::Object^ sender, System::EventArgs^ e) 520 | { 521 | modifyflag = false; 522 | frm_modify^ mfForm = gcnew frm_modify(); 523 | mfForm->Show(); 524 | //frm_modify::MyInstance->textBox2->Enabled = false; 525 | frm_modify::MyInstance->textBox3->Enabled = false; 526 | if (EXE2DLL::section_name.empty()==true && EXE2DLL::EXETODLL::FilePath != nullptr ) 527 | { 528 | HANDLE hFile = CreateFileA((const char*)(void*)Marshal::StringToHGlobalAnsi(EXE2DLL::EXETODLL::FilePath), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 529 | //获取文件大小 530 | DWORD dwFileSize = GetFileSize(hFile, NULL); 531 | CHAR* pFileBuf = new CHAR[dwFileSize]; 532 | //将文件读取到内存 533 | DWORD ReadSize = 0; 534 | ReadFile(hFile, pFileBuf, dwFileSize, &ReadSize, NULL); 535 | PIMAGE_SECTION_HEADER last_section=get_last_section((PBYTE)pFileBuf, dwFileSize, true); 536 | for (DWORD i = 0; i < IMAGE_SIZEOF_SHORT_NAME; i++) 537 | { 538 | char name[62]; 539 | sprintf_s(name, "%c", last_section->Name[i]); 540 | EXE2DLL::section_name += name; 541 | } 542 | CloseHandle(hFile); 543 | } 544 | frm_modify::MyInstance->textBox3->Text = gcnew String( EXE2DLL::section_name.c_str()); 545 | 546 | } 547 | 548 | 549 | 550 | 551 | private: System::Void pEInfoMenu_Click(System::Object^ sender, System::EventArgs^ e) 552 | { 553 | frm_PEInfo^ frm = gcnew frm_PEInfo; 554 | frm->Show(); 555 | 556 | } 557 | private: System::Void dataDirectoryMenu_Click(System::Object^ sender, System::EventArgs^ e) 558 | { 559 | frm_Directory^ frm = gcnew frm_Directory; 560 | frm->Show(); 561 | } 562 | private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) 563 | { 564 | if (EXE2DLL::EXETODLL::FilePath == nullptr) return; 565 | Stream^ myStream; 566 | SaveFileDialog^ saveFileDialog1 = gcnew SaveFileDialog; 567 | saveFileDialog1->Filter = "dll files (*.dll)|*.dll|All files (*.*)|*.*"; 568 | saveFileDialog1->FilterIndex = 1; 569 | saveFileDialog1->RestoreDirectory = true; 570 | saveFileDialog1->FileName= System::IO::Path::GetFileName(EXE2DLL::EXETODLL::FilePath)->Replace("exe","dll"); 571 | if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) 572 | { 573 | exe2dll((const char*)(void*)Marshal::StringToHGlobalAnsi(EXE2DLL::EXETODLL::FilePath), (const char*)(void*)Marshal::StringToHGlobalAnsi(saveFileDialog1->FileName)); 574 | } 575 | } 576 | private: System::Void ModifyExportFuncMenu_Click(System::Object^ sender, System::EventArgs^ e) 577 | { 578 | modifyflag = true; 579 | frm_modify^ mfForm = gcnew frm_modify(); 580 | mfForm->Show(); 581 | //frm_modify::MyInstance->textBox2->Enabled = false; 582 | frm_modify::MyInstance->textBox3->Enabled = false; 583 | if (listView2->SelectedItems->Count > 0) 584 | { 585 | EXE2DLL::fun_name= marshal_as(listView2->SelectedItems[0]->SubItems[4]->Text); 586 | frm_modify::MyInstance->textBox1->Text = listView2->SelectedItems[0]->SubItems[4]->Text; 587 | frm_modify::MyInstance->textBox2->Text = listView2->SelectedItems[0]->SubItems[2]->Text; 588 | frm_modify::MyInstance->textBox3->Text = listView2->SelectedItems[0]->SubItems[5]->Text; 589 | } 590 | } 591 | 592 | private: System::Void DeletExoprtFuncMenu_Click(System::Object^ sender, System::EventArgs^ e) 593 | { 594 | if (listView2->SelectedItems->Count > 0) { 595 | EXE2DLL::fun_name = marshal_as(listView2->SelectedItems[0]->SubItems[4]->Text); 596 | String^ func_rva= listView2->SelectedItems[0]->SubItems[5]->Text; 597 | int funcrva; 598 | sscanf((marshal_as(func_rva)).c_str(), "%x", &funcrva); 599 | EXETODLL::DeleteExtportFuncton(EXE2DLL::EXETODLL::FilePath, gcnew String(EXE2DLL::fun_name.c_str()), funcrva); 600 | updatecontrol(); 601 | } 602 | } 603 | 604 | 605 | private: System::Void listView2_Click(System::Object^ sender, System::EventArgs^ e) 606 | { 607 | if (listView2->SelectedItems->Count > 0) 608 | { 609 | EXE2DLL::fun_name = marshal_as(listView2->SelectedItems[0]->SubItems[2]->Text); 610 | 611 | } 612 | } 613 | private: System::Void listView1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { 614 | } 615 | }; 616 | } 617 | -------------------------------------------------------------------------------- /EXE2DLL/PE_INFO.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | using namespace std; 8 | 9 | 10 | int GetPeInfo(const char* file_name, std::vector& PElist, std::vector& DataDirectory, std::vector& Sectionlist) 11 | { 12 | //获取文件句柄 13 | HANDLE hFile = CreateFileA(file_name,GENERIC_READ,0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 14 | //获取文件大小 15 | DWORD dwFileSize = GetFileSize(hFile, NULL); 16 | CHAR* pFileBuf = new CHAR[dwFileSize]; 17 | //将文件读取到内存 18 | DWORD ReadSize = 0; 19 | ReadFile(hFile, pFileBuf, dwFileSize, &ReadSize, NULL); 20 | 21 | //判断是否为PE文件 22 | PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)pFileBuf; 23 | if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) 24 | { 25 | //不是PE 26 | printf("不是PE文件\n"); 27 | system("pause"); 28 | CloseHandle(hFile); 29 | return 2; 30 | } 31 | 32 | PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)(pFileBuf + pDosHeader->e_lfanew); 33 | if (pNtHeader->Signature != IMAGE_NT_SIGNATURE) 34 | { 35 | //不是PE文件 36 | printf("不是PE文件\n"); 37 | system("pause"); 38 | CloseHandle(hFile); 39 | return 2; 40 | } 41 | 42 | //获取基本PE头信息 43 | //获取信息所用到的两个结构体指针 (这两个结构体都属于NT头) 44 | PIMAGE_FILE_HEADER pFileHeader = &(pNtHeader->FileHeader); 45 | PIMAGE_OPTIONAL_HEADER pOptionalHeader = &(pNtHeader->OptionalHeader); 46 | //输出PE头信息 47 | char data[32]; 48 | sprintf_s(data, "%08X", pOptionalHeader->AddressOfEntryPoint); 49 | PElist.push_back(data); 50 | memset(data, 0, 32); 51 | sprintf_s(data, "%04X", pOptionalHeader->Subsystem); 52 | PElist.push_back(data); 53 | memset(data, 0, 32); 54 | sprintf_s(data, "%08X", pOptionalHeader->ImageBase); 55 | PElist.push_back(data); 56 | memset(data, 0, 32); 57 | sprintf_s(data, "%04X", pFileHeader->NumberOfSections); 58 | PElist.push_back(data); 59 | memset(data, 0, 32); 60 | sprintf_s(data, "%08X", pOptionalHeader->SizeOfImage); 61 | PElist.push_back(data); 62 | memset(data, 0, 32); 63 | sprintf_s(data, "%08X", pFileHeader->TimeDateStamp); 64 | PElist.push_back(data); 65 | memset(data, 0, 32); 66 | sprintf_s(data, "%08X", pOptionalHeader->BaseOfCode); 67 | PElist.push_back(data); 68 | memset(data, 0, 32); 69 | sprintf_s(data, "%08X", pOptionalHeader->SizeOfHeaders); 70 | PElist.push_back(data); 71 | memset(data, 0, 32); 72 | sprintf_s(data, "%08X", pOptionalHeader->BaseOfData); 73 | PElist.push_back(data); 74 | memset(data, 0, 32); 75 | sprintf_s(data, "%04X", pFileHeader->Characteristics); 76 | PElist.push_back(data); 77 | memset(data, 0, 32); 78 | sprintf_s(data, "%08X", pOptionalHeader->SectionAlignment); 79 | PElist.push_back(data); 80 | memset(data, 0, 32); 81 | sprintf_s(data, "%08X", pOptionalHeader->CheckSum); 82 | PElist.push_back(data); 83 | memset(data, 0, 32); 84 | sprintf_s(data, "%08X", pOptionalHeader->FileAlignment); 85 | PElist.push_back(data); 86 | memset(data, 0, 32); 87 | sprintf_s(data, "%04X", pFileHeader->SizeOfOptionalHeader); 88 | PElist.push_back(data); 89 | memset(data, 0, 32); 90 | sprintf_s(data, "%04X", pOptionalHeader->Magic); 91 | PElist.push_back(data); 92 | memset(data, 0, 32); 93 | sprintf_s(data, "%08X", pOptionalHeader->NumberOfRvaAndSizes); 94 | PElist.push_back(data); 95 | memset(data, 0, 32); 96 | 97 | 98 | //获取目录表头指针 99 | PIMAGE_DATA_DIRECTORY pDataDirectory = pOptionalHeader->DataDirectory; 100 | for (DWORD i = 0; i < IMAGE_NUMBEROF_DIRECTORY_ENTRIES; i++) 101 | { 102 | char size[32]; 103 | sprintf_s(data, "%08X", pDataDirectory[i].VirtualAddress); 104 | std::string sdata(data); 105 | sprintf_s(size, "%08X", pDataDirectory[i].Size); 106 | std::string ssize(size); 107 | std::string items = sdata + "#" + ssize; 108 | DataDirectory.push_back(items); 109 | memset(data, 0, 32); 110 | } 111 | 112 | //printf("======================= 区 段 表 =======================\n"); 113 | //获取区段表头指针 114 | PIMAGE_SECTION_HEADER pSectionHeader = IMAGE_FIRST_SECTION(pNtHeader); 115 | //获取区段个数 116 | DWORD dwSectionNum = pFileHeader->NumberOfSections; 117 | //根据区段个数遍历区段信息 118 | for (DWORD i = 0; i < dwSectionNum; i++, pSectionHeader++) 119 | { 120 | 121 | 122 | char address[32]; 123 | char size[32]; 124 | char rawdata[32]; 125 | char rawsize[32]; 126 | char feature[32]; 127 | string sname; 128 | for (DWORD j = 0; j < IMAGE_SIZEOF_SHORT_NAME; j++) 129 | { 130 | char name[62]; 131 | sprintf_s(name, "%c", pSectionHeader->Name[j]); 132 | sname += name; 133 | } 134 | sprintf_s(address, "%08X", pSectionHeader->VirtualAddress); 135 | std::string saddress(address); 136 | sprintf_s(size, "%08X", pSectionHeader->Misc.VirtualSize); 137 | std::string ssize(size); 138 | sprintf_s(rawdata, "%08X", pSectionHeader->PointerToRawData); 139 | std::string srawdata(rawdata); 140 | sprintf_s(rawsize, "%08X", pSectionHeader->SizeOfRawData); 141 | std::string srawsize(rawsize); 142 | sprintf_s(feature, "%08X", pSectionHeader->Characteristics); 143 | std::string sfeature(feature); 144 | std::string items = sname + "#" + saddress + "#" + ssize + "#" + srawdata + "#" + srawsize + "#" + sfeature; 145 | Sectionlist.push_back(items); 146 | } 147 | CloseHandle(hFile); 148 | return 0; 149 | } -------------------------------------------------------------------------------- /EXE2DLL/PE_INFO.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | int GetPeInfo(const char* file_name, std::vector& PElist, std::vector& DataDirectory, std::vector& Sectionlist); -------------------------------------------------------------------------------- /EXE2DLL/Resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by app.rc 4 | -------------------------------------------------------------------------------- /EXE2DLL/add_export_function.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | #include 6 | using namespace std; 7 | 8 | BOOL add_export_table(const char* file_name, const char* section_name, const char* FuncName, size_t FuncRva); 9 | BOOL modify_export_table(const char* file_name, const char* old_name, const char* FuncName, size_t FuncRva); 10 | BOOL delete_export_table(const char* file_name, const char* func_name, size_t FuncRva); 11 | 12 | int GetExpTableList(const char* file_name, std::vector& funlist); 13 | size_t add_section(const char* path, const char* wc_section_name, DWORD VirtualSize, const char* str_Characteristics, size_t RvaRawData); 14 | PIMAGE_SECTION_HEADER get_last_section(IN const PBYTE pe_buffer, IN size_t pe_size, IN bool is_raw); -------------------------------------------------------------------------------- /EXE2DLL/add_section.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | size_t add_section(const char* path, const char* wc_section_name, DWORD VirtualSize, const char* str_Characteristics, size_t RvaRawData); 5 | -------------------------------------------------------------------------------- /EXE2DLL/addsection.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | #include 3 | #include 4 | #include "add_section.h" 5 | #include 6 | #include 7 | 8 | using namespace std; 9 | 10 | // Macros 11 | 12 | 13 | // align x down to the nearest multiple of align. align must be a power of 2. 14 | #define P2ALIGNDOWN(x, align) ((x) & -(align)) 15 | // align x up to the nearest multiple of align. align must be a power of 2. 16 | #define P2ALIGNUP(x, align) (-(-(x) & -(align))) 17 | 18 | 19 | 20 | /*USAGE: addscn.exe
21 | 22 | VirtualSize can be in decimal(ex : 5021) or in hex(ex. 0x12c) 23 | Characteristics can either be a hex DWORD like this : 0xC0000040 24 | or the strings "text", "data" or "rdata" which mean : 25 | 26 | text: 0x60000020 : IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ 27 | data : 0xC0000040 : IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE 28 | rdata : 0x40000040 : IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ*/ 29 | size_t add_section(const char* path, const char* section_name, DWORD VirtualSize, const char* str_Characteristics, size_t RvaRawData)//target_file.exe .mySection 0x231 rdata 30 | { 31 | DWORD SectionRVA = 0; 32 | std::string file_path = path; 33 | size_t found_indx = file_path.find_last_of("."); 34 | std::string ext = file_path.substr(found_indx + 1); 35 | std::string name = file_path.substr(0, found_indx); 36 | std::string newspath = file_path + ".bake." + ext; 37 | DWORD Characteristics = 0; 38 | if (strcmp(str_Characteristics, "text") == 0) { 39 | Characteristics = IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ; 40 | } 41 | else if (strcmp(str_Characteristics, "data") == 0) { 42 | Characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE; 43 | } 44 | else if (strcmp(str_Characteristics, "rdata") == 0) { 45 | Characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ; 46 | } 47 | else { 48 | Characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ; 49 | } 50 | 51 | HANDLE hFile = CreateFileA(path, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 52 | 53 | if (hFile == INVALID_HANDLE_VALUE) { 54 | wcout << L"Cannot open file (0x" << hex << GetLastError() << L")" << endl; 55 | return 0; 56 | } 57 | 58 | HANDLE hNewFile = CreateFileA(newspath.c_str(), GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL); 59 | if (hNewFile == INVALID_HANDLE_VALUE) 60 | { 61 | printf("backup file has already exsit.\n"); 62 | CloseHandle(hNewFile); 63 | } 64 | else 65 | { 66 | char buff[4096]; 67 | DWORD dwBytesWritten = 0; 68 | DWORD dwBytesRead = 0; 69 | while (ReadFile(hFile, buff, sizeof(buff), &dwBytesRead, NULL)) 70 | { 71 | if (dwBytesRead == 0) 72 | break; 73 | if (!WriteFile(hNewFile, buff, sizeof(buff), &dwBytesWritten, NULL)) { 74 | printf("Target file not written to. Error %u", GetLastError()); 75 | break; 76 | } 77 | } 78 | CloseHandle(hNewFile); 79 | } 80 | 81 | LPDWORD dwFileSizeHigh = 0; 82 | DWORD dwFileSizeLow = 0; 83 | dwFileSizeLow = GetFileSize(hFile, dwFileSizeHigh); 84 | if (dwFileSizeHigh != NULL) { 85 | CloseHandle(hFile); 86 | wcout << L"Big files not supported." << endl; 87 | return 0; 88 | } 89 | wcout << L"File size in bytes: " << dwFileSizeLow << endl; 90 | 91 | // Mapping the file read-only 92 | HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL); 93 | if (hFileMapping == INVALID_HANDLE_VALUE) return 0; 94 | PBYTE pView = (PBYTE)MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0); 95 | if (pView == NULL) { 96 | wcout << L"Error in MapFileReadOnly (" << GetLastError() << L")" << endl; 97 | return 0; 98 | } 99 | // Checking the file. 100 | PIMAGE_DOS_HEADER dosHeader = (PIMAGE_DOS_HEADER)pView; 101 | if (dosHeader->e_magic != IMAGE_DOS_SIGNATURE) { 102 | wcout << L"Invalid PE file" << endl; 103 | UnmapViewOfFile((PVOID)pView); 104 | CloseHandle(hFileMapping); 105 | CloseHandle(hFile); 106 | return 0; 107 | } 108 | 109 | PIMAGE_NT_HEADERS ntHeaders = (PIMAGE_NT_HEADERS)((UINT_PTR)pView + dosHeader->e_lfanew); 110 | 111 | 112 | #ifdef _WIN64 113 | #define MACHINE IMAGE_FILE_MACHINE_AMD64 114 | #else 115 | #define MACHINE IMAGE_FILE_MACHINE_I386 116 | #endif 117 | 118 | if (ntHeaders->Signature != IMAGE_NT_SIGNATURE || ntHeaders->FileHeader.Machine != MACHINE) { 119 | wcout << L"Invalid PE file" << endl; 120 | UnmapViewOfFile((PVOID)pView); 121 | CloseHandle(hFileMapping); 122 | CloseHandle(hFile); 123 | return 0; 124 | } 125 | 126 | // Extracting data for some global variables that will be used later. 127 | WORD numberOfSections = ntHeaders->FileHeader.NumberOfSections; 128 | DWORD sectionAlignment = ntHeaders->OptionalHeader.SectionAlignment; 129 | DWORD fileAlignment = ntHeaders->OptionalHeader.FileAlignment; 130 | 131 | 132 | CHAR str_section_name[9] = { 0 }; 133 | std::memcpy(str_section_name, section_name, sizeof(str_section_name) - 1); 134 | 135 | IMAGE_SECTION_HEADER* section = IMAGE_FIRST_SECTION(ntHeaders); 136 | for (int i = 0; i < numberOfSections; i++, section++) 137 | { 138 | if (strncmp((char*)section->Name, (char*)str_section_name, 8) == 0) 139 | { 140 | wcout << L"Section name has already Exist." << endl; 141 | wcout << L"The raw section offset is 0x" << hex << section->PointerToRawData 142 | << L" The section size is 0x" << hex << section->Misc.VirtualSize << endl 143 | << L"The section at RVA 0x" << hex << section->VirtualAddress << endl; 144 | RvaRawData = section->PointerToRawData; 145 | SectionRVA = section->VirtualAddress; 146 | UnmapViewOfFile((PVOID)pView); 147 | CloseHandle(hFileMapping); 148 | CloseHandle(hFile); 149 | return SectionRVA; 150 | } 151 | } 152 | PIMAGE_FILE_HEADER fileHeader = &(ntHeaders->FileHeader); 153 | WORD sizeOfOptionalHeader = ntHeaders->FileHeader.SizeOfOptionalHeader; 154 | PIMAGE_SECTION_HEADER firstSectionHeader = (PIMAGE_SECTION_HEADER)(((UINT_PTR)fileHeader) + sizeof(IMAGE_FILE_HEADER) + sizeOfOptionalHeader); 155 | PIMAGE_SECTION_HEADER newSectionHeader = &firstSectionHeader[numberOfSections]; // Right after last section header. 156 | PBYTE firstByteOfSectionData = (PBYTE)(((DWORD)firstSectionHeader->PointerToRawData) + (UINT_PTR)pView); 157 | DWORD available_space = ((UINT_PTR)firstByteOfSectionData) - ((UINT_PTR)newSectionHeader); 158 | if (available_space < sizeof(IMAGE_SECTION_HEADER)) { 159 | wcout << L"There is no room for the new section header. Functionality to make room is not yet implemented so " 160 | << L"the program will abort. No change has been made to the file." << endl; 161 | UnmapViewOfFile((PVOID)pView); 162 | CloseHandle(hFileMapping); 163 | CloseHandle(hFile); 164 | return 0; 165 | } 166 | 167 | 168 | // Unmaping the file. 169 | // Since file mappings are fixed size, we need to close this read-only one and create a bigger RW one to 170 | // be able to add the section header and expand the size of the file. 171 | UnmapViewOfFile((PVOID)pView); 172 | CloseHandle(hFileMapping); 173 | 174 | DWORD newSize = P2ALIGNUP(dwFileSizeLow + VirtualSize, fileAlignment); 175 | hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, newSize, NULL); 176 | if (hFileMapping == INVALID_HANDLE_VALUE) return 0; 177 | pView = (PBYTE)MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0); 178 | 179 | if (pView == NULL) { 180 | wcout << L"Error in MapFileRWNewSize (" << GetLastError() << L")" << endl; 181 | return 0; 182 | } 183 | 184 | 185 | dosHeader = (PIMAGE_DOS_HEADER)pView; 186 | ntHeaders = (PIMAGE_NT_HEADERS)((UINT_PTR)pView + dosHeader->e_lfanew); 187 | sizeOfOptionalHeader = ntHeaders->FileHeader.SizeOfOptionalHeader; 188 | fileHeader = &(ntHeaders->FileHeader); 189 | firstSectionHeader = (PIMAGE_SECTION_HEADER)(((UINT_PTR)fileHeader) + sizeof(IMAGE_FILE_HEADER) + sizeOfOptionalHeader); 190 | numberOfSections = ntHeaders->FileHeader.NumberOfSections; 191 | // We asssume there is room for a new section header. 192 | newSectionHeader = &firstSectionHeader[numberOfSections]; // Right after last section header. 193 | PIMAGE_SECTION_HEADER lastSectionHeader = &firstSectionHeader[numberOfSections - 1]; 194 | memset(newSectionHeader, 0, sizeof(IMAGE_SECTION_HEADER)); 195 | memcpy(&newSectionHeader->Name, section_name, min(strlen(section_name), 8)); 196 | newSectionHeader->Misc.VirtualSize = VirtualSize; 197 | newSectionHeader->VirtualAddress = P2ALIGNUP(lastSectionHeader->VirtualAddress + lastSectionHeader->Misc.VirtualSize, sectionAlignment); 198 | newSectionHeader->SizeOfRawData = P2ALIGNUP(VirtualSize, fileAlignment); 199 | newSectionHeader->PointerToRawData = dwFileSizeLow; // at the end of the file before expanding its size. 200 | // this also works: 201 | //newSectionHeader->PointerToRawData = (DWORD)(lastSectionHeader->PointerToRawData + lastSectionHeader->SizeOfRawData); 202 | newSectionHeader->Characteristics = Characteristics; 203 | 204 | numberOfSections++; 205 | ntHeaders->FileHeader.NumberOfSections = numberOfSections; 206 | ntHeaders->OptionalHeader.SizeOfImage = P2ALIGNUP(newSectionHeader->VirtualAddress + newSectionHeader->Misc.VirtualSize, sectionAlignment); 207 | // this also works: 208 | //ntHeaders->OptionalHeader.SizeOfImage = P2ALIGNUP(ntHeaders->OptionalHeader.SizeOfImage + VirtualSize, sectionAlignment); 209 | 210 | memset((PVOID)((UINT_PTR)pView + newSectionHeader->PointerToRawData), 0, newSectionHeader->SizeOfRawData); 211 | 212 | wcout << L"You can proceed to copy your raw section data to file offset 0x" << hex << newSectionHeader->PointerToRawData 213 | << L" up to a length of 0x" << hex << VirtualSize << endl 214 | << L"The section will be mapped at RVA 0x" << hex << newSectionHeader->VirtualAddress << endl; 215 | RvaRawData = newSectionHeader->PointerToRawData; 216 | SectionRVA = newSectionHeader->VirtualAddress; 217 | wcout << L"New file size in bytes: " << newSize << endl << L"Operation completed successfully." << endl; 218 | CloseHandle(hFile); 219 | UnmapViewOfFile((PVOID)pView); 220 | CloseHandle(hFileMapping); 221 | return SectionRVA; 222 | } 223 | 224 | -------------------------------------------------------------------------------- /EXE2DLL/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomms/EXE2DLL_CLR/0e02f89cd3fc5c2aaa0336d194c6aedff3cffc0a/EXE2DLL/app.ico -------------------------------------------------------------------------------- /EXE2DLL/app.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomms/EXE2DLL_CLR/0e02f89cd3fc5c2aaa0336d194c6aedff3cffc0a/EXE2DLL/app.rc -------------------------------------------------------------------------------- /EXE2DLL/frm_Directory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace EXE2DLL { 4 | 5 | using namespace System; 6 | using namespace System::ComponentModel; 7 | using namespace System::Collections; 8 | using namespace System::Windows::Forms; 9 | using namespace System::Data; 10 | using namespace System::Drawing; 11 | 12 | /// 13 | /// frm_Directory 摘要 14 | /// 15 | public ref class frm_Directory : public System::Windows::Forms::Form 16 | { 17 | public: 18 | frm_Directory(void) 19 | { 20 | InitializeComponent(); 21 | // 22 | //TODO: 在此处添加构造函数代码 23 | // 24 | } 25 | 26 | protected: 27 | /// 28 | /// 清理所有正在使用的资源。 29 | /// 30 | ~frm_Directory() 31 | { 32 | if (components) 33 | { 34 | delete components; 35 | } 36 | } 37 | 38 | protected: 39 | private: System::Windows::Forms::Label^ label2; 40 | private: System::Windows::Forms::Label^ label3; 41 | private: System::Windows::Forms::TextBox^ text_EAT2; 42 | 43 | 44 | 45 | private: System::Windows::Forms::TextBox^ text_EAT; 46 | 47 | private: System::Windows::Forms::Label^ label4; 48 | private: System::Windows::Forms::TextBox^ text_IAT2; 49 | 50 | private: System::Windows::Forms::TextBox^ text_IAT; 51 | 52 | private: System::Windows::Forms::Label^ label5; 53 | private: System::Windows::Forms::TextBox^ text_Resource2; 54 | 55 | private: System::Windows::Forms::TextBox^ text_Resource; 56 | 57 | 58 | 59 | private: System::Windows::Forms::Label^ label6; 60 | private: System::Windows::Forms::TextBox^ text_Exception2; 61 | 62 | private: System::Windows::Forms::TextBox^ text_Exception; 63 | 64 | private: System::Windows::Forms::Label^ label7; 65 | private: System::Windows::Forms::TextBox^ text_Certificate2; 66 | 67 | private: System::Windows::Forms::TextBox^ text_Certificate; 68 | 69 | private: System::Windows::Forms::Label^ label8; 70 | private: System::Windows::Forms::TextBox^ text_Relocation2; 71 | 72 | private: System::Windows::Forms::TextBox^ text_Relocation; 73 | 74 | private: System::Windows::Forms::Label^ label9; 75 | private: System::Windows::Forms::TextBox^ text_Debug2; 76 | 77 | private: System::Windows::Forms::TextBox^ text_Debug; 78 | 79 | private: System::Windows::Forms::Label^ label10; 80 | private: System::Windows::Forms::TextBox^ text_Architecture2; 81 | 82 | private: System::Windows::Forms::TextBox^ text_Architecture; 83 | 84 | private: System::Windows::Forms::Label^ label11; 85 | private: System::Windows::Forms::TextBox^ text_GlobalPtr2; 86 | 87 | private: System::Windows::Forms::TextBox^ text_GlobalPtr; 88 | 89 | private: System::Windows::Forms::Label^ label12; 90 | private: System::Windows::Forms::TextBox^ text_TLS2; 91 | 92 | private: System::Windows::Forms::TextBox^ text_TLS; 93 | 94 | private: System::Windows::Forms::Label^ label13; 95 | private: System::Windows::Forms::TextBox^ text_LoadConfig2; 96 | 97 | private: System::Windows::Forms::TextBox^ text_LoadConfig; 98 | 99 | private: System::Windows::Forms::Label^ label14; 100 | private: System::Windows::Forms::TextBox^ text_Bound2; 101 | 102 | private: System::Windows::Forms::TextBox^ text_Bound; 103 | 104 | private: System::Windows::Forms::Label^ label15; 105 | private: System::Windows::Forms::TextBox^ text_Delay2; 106 | 107 | private: System::Windows::Forms::TextBox^ text_Delay; 108 | 109 | private: System::Windows::Forms::Label^ label16; 110 | private: System::Windows::Forms::TextBox^ text_COM2; 111 | 112 | private: System::Windows::Forms::TextBox^ text_COM; 113 | 114 | private: System::Windows::Forms::Label^ label17; 115 | private: System::Windows::Forms::TextBox^ text_Reserve2; 116 | 117 | private: System::Windows::Forms::TextBox^ text_Reserve; 118 | 119 | private: System::Windows::Forms::Label^ label18; 120 | 121 | private: 122 | /// 123 | /// 必需的设计器变量。 124 | /// 125 | System::ComponentModel::Container ^components; 126 | 127 | #pragma region Windows Form Designer generated code 128 | /// 129 | /// 设计器支持所需的方法 - 不要修改 130 | /// 使用代码编辑器修改此方法的内容。 131 | /// 132 | void InitializeComponent(void) 133 | { 134 | System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(frm_Directory::typeid)); 135 | this->label2 = (gcnew System::Windows::Forms::Label()); 136 | this->label3 = (gcnew System::Windows::Forms::Label()); 137 | this->text_EAT2 = (gcnew System::Windows::Forms::TextBox()); 138 | this->text_EAT = (gcnew System::Windows::Forms::TextBox()); 139 | this->label4 = (gcnew System::Windows::Forms::Label()); 140 | this->text_IAT2 = (gcnew System::Windows::Forms::TextBox()); 141 | this->text_IAT = (gcnew System::Windows::Forms::TextBox()); 142 | this->label5 = (gcnew System::Windows::Forms::Label()); 143 | this->text_Resource2 = (gcnew System::Windows::Forms::TextBox()); 144 | this->text_Resource = (gcnew System::Windows::Forms::TextBox()); 145 | this->label6 = (gcnew System::Windows::Forms::Label()); 146 | this->text_Exception2 = (gcnew System::Windows::Forms::TextBox()); 147 | this->text_Exception = (gcnew System::Windows::Forms::TextBox()); 148 | this->label7 = (gcnew System::Windows::Forms::Label()); 149 | this->text_Certificate2 = (gcnew System::Windows::Forms::TextBox()); 150 | this->text_Certificate = (gcnew System::Windows::Forms::TextBox()); 151 | this->label8 = (gcnew System::Windows::Forms::Label()); 152 | this->text_Relocation2 = (gcnew System::Windows::Forms::TextBox()); 153 | this->text_Relocation = (gcnew System::Windows::Forms::TextBox()); 154 | this->label9 = (gcnew System::Windows::Forms::Label()); 155 | this->text_Debug2 = (gcnew System::Windows::Forms::TextBox()); 156 | this->text_Debug = (gcnew System::Windows::Forms::TextBox()); 157 | this->label10 = (gcnew System::Windows::Forms::Label()); 158 | this->text_Architecture2 = (gcnew System::Windows::Forms::TextBox()); 159 | this->text_Architecture = (gcnew System::Windows::Forms::TextBox()); 160 | this->label11 = (gcnew System::Windows::Forms::Label()); 161 | this->text_GlobalPtr2 = (gcnew System::Windows::Forms::TextBox()); 162 | this->text_GlobalPtr = (gcnew System::Windows::Forms::TextBox()); 163 | this->label12 = (gcnew System::Windows::Forms::Label()); 164 | this->text_TLS2 = (gcnew System::Windows::Forms::TextBox()); 165 | this->text_TLS = (gcnew System::Windows::Forms::TextBox()); 166 | this->label13 = (gcnew System::Windows::Forms::Label()); 167 | this->text_LoadConfig2 = (gcnew System::Windows::Forms::TextBox()); 168 | this->text_LoadConfig = (gcnew System::Windows::Forms::TextBox()); 169 | this->label14 = (gcnew System::Windows::Forms::Label()); 170 | this->text_Bound2 = (gcnew System::Windows::Forms::TextBox()); 171 | this->text_Bound = (gcnew System::Windows::Forms::TextBox()); 172 | this->label15 = (gcnew System::Windows::Forms::Label()); 173 | this->text_Delay2 = (gcnew System::Windows::Forms::TextBox()); 174 | this->text_Delay = (gcnew System::Windows::Forms::TextBox()); 175 | this->label16 = (gcnew System::Windows::Forms::Label()); 176 | this->text_COM2 = (gcnew System::Windows::Forms::TextBox()); 177 | this->text_COM = (gcnew System::Windows::Forms::TextBox()); 178 | this->label17 = (gcnew System::Windows::Forms::Label()); 179 | this->text_Reserve2 = (gcnew System::Windows::Forms::TextBox()); 180 | this->text_Reserve = (gcnew System::Windows::Forms::TextBox()); 181 | this->label18 = (gcnew System::Windows::Forms::Label()); 182 | this->SuspendLayout(); 183 | // 184 | // label2 185 | // 186 | this->label2->AutoSize = true; 187 | this->label2->Location = System::Drawing::Point(126, 14); 188 | this->label2->Name = L"label2"; 189 | this->label2->Size = System::Drawing::Size(29, 13); 190 | this->label2->TabIndex = 1; 191 | this->label2->Text = L"RVA"; 192 | // 193 | // label3 194 | // 195 | this->label3->AutoSize = true; 196 | this->label3->Location = System::Drawing::Point(234, 14); 197 | this->label3->Name = L"label3"; 198 | this->label3->Size = System::Drawing::Size(27, 13); 199 | this->label3->TabIndex = 2; 200 | this->label3->Text = L"Size"; 201 | // 202 | // text_EAT2 203 | // 204 | this->text_EAT2->Location = System::Drawing::Point(199, 36); 205 | this->text_EAT2->Name = L"text_EAT2"; 206 | this->text_EAT2->Size = System::Drawing::Size(97, 20); 207 | this->text_EAT2->TabIndex = 7; 208 | // 209 | // text_EAT 210 | // 211 | this->text_EAT->Location = System::Drawing::Point(96, 36); 212 | this->text_EAT->Name = L"text_EAT"; 213 | this->text_EAT->Size = System::Drawing::Size(97, 20); 214 | this->text_EAT->TabIndex = 6; 215 | // 216 | // label4 217 | // 218 | this->label4->AutoSize = true; 219 | this->label4->Location = System::Drawing::Point(12, 39); 220 | this->label4->Name = L"label4"; 221 | this->label4->Size = System::Drawing::Size(67, 13); 222 | this->label4->TabIndex = 5; 223 | this->label4->Text = L"Export Table"; 224 | // 225 | // text_IAT2 226 | // 227 | this->text_IAT2->Location = System::Drawing::Point(199, 62); 228 | this->text_IAT2->Name = L"text_IAT2"; 229 | this->text_IAT2->Size = System::Drawing::Size(97, 20); 230 | this->text_IAT2->TabIndex = 10; 231 | // 232 | // text_IAT 233 | // 234 | this->text_IAT->Location = System::Drawing::Point(96, 62); 235 | this->text_IAT->Name = L"text_IAT"; 236 | this->text_IAT->Size = System::Drawing::Size(97, 20); 237 | this->text_IAT->TabIndex = 9; 238 | // 239 | // label5 240 | // 241 | this->label5->AutoSize = true; 242 | this->label5->Location = System::Drawing::Point(16, 65); 243 | this->label5->Name = L"label5"; 244 | this->label5->Size = System::Drawing::Size(66, 13); 245 | this->label5->TabIndex = 8; 246 | this->label5->Text = L"Import Table"; 247 | // 248 | // text_Resource2 249 | // 250 | this->text_Resource2->Location = System::Drawing::Point(199, 88); 251 | this->text_Resource2->Name = L"text_Resource2"; 252 | this->text_Resource2->Size = System::Drawing::Size(97, 20); 253 | this->text_Resource2->TabIndex = 13; 254 | // 255 | // text_Resource 256 | // 257 | this->text_Resource->Location = System::Drawing::Point(96, 88); 258 | this->text_Resource->Name = L"text_Resource"; 259 | this->text_Resource->Size = System::Drawing::Size(97, 20); 260 | this->text_Resource->TabIndex = 12; 261 | // 262 | // label6 263 | // 264 | this->label6->AutoSize = true; 265 | this->label6->Location = System::Drawing::Point(16, 91); 266 | this->label6->Name = L"label6"; 267 | this->label6->Size = System::Drawing::Size(53, 13); 268 | this->label6->TabIndex = 11; 269 | this->label6->Text = L"Resource"; 270 | // 271 | // text_Exception2 272 | // 273 | this->text_Exception2->Location = System::Drawing::Point(199, 114); 274 | this->text_Exception2->Name = L"text_Exception2"; 275 | this->text_Exception2->Size = System::Drawing::Size(97, 20); 276 | this->text_Exception2->TabIndex = 16; 277 | // 278 | // text_Exception 279 | // 280 | this->text_Exception->Location = System::Drawing::Point(96, 114); 281 | this->text_Exception->Name = L"text_Exception"; 282 | this->text_Exception->Size = System::Drawing::Size(97, 20); 283 | this->text_Exception->TabIndex = 15; 284 | // 285 | // label7 286 | // 287 | this->label7->AutoSize = true; 288 | this->label7->Location = System::Drawing::Point(16, 117); 289 | this->label7->Name = L"label7"; 290 | this->label7->Size = System::Drawing::Size(54, 13); 291 | this->label7->TabIndex = 14; 292 | this->label7->Text = L"Exception"; 293 | // 294 | // text_Certificate2 295 | // 296 | this->text_Certificate2->Location = System::Drawing::Point(199, 140); 297 | this->text_Certificate2->Name = L"text_Certificate2"; 298 | this->text_Certificate2->Size = System::Drawing::Size(97, 20); 299 | this->text_Certificate2->TabIndex = 19; 300 | // 301 | // text_Certificate 302 | // 303 | this->text_Certificate->Location = System::Drawing::Point(96, 140); 304 | this->text_Certificate->Name = L"text_Certificate"; 305 | this->text_Certificate->Size = System::Drawing::Size(97, 20); 306 | this->text_Certificate->TabIndex = 18; 307 | // 308 | // label8 309 | // 310 | this->label8->AutoSize = true; 311 | this->label8->Location = System::Drawing::Point(16, 143); 312 | this->label8->Name = L"label8"; 313 | this->label8->Size = System::Drawing::Size(54, 13); 314 | this->label8->TabIndex = 17; 315 | this->label8->Text = L"Certificate"; 316 | // 317 | // text_Relocation2 318 | // 319 | this->text_Relocation2->Location = System::Drawing::Point(199, 166); 320 | this->text_Relocation2->Name = L"text_Relocation2"; 321 | this->text_Relocation2->Size = System::Drawing::Size(97, 20); 322 | this->text_Relocation2->TabIndex = 22; 323 | // 324 | // text_Relocation 325 | // 326 | this->text_Relocation->Location = System::Drawing::Point(96, 166); 327 | this->text_Relocation->Name = L"text_Relocation"; 328 | this->text_Relocation->Size = System::Drawing::Size(97, 20); 329 | this->text_Relocation->TabIndex = 21; 330 | // 331 | // label9 332 | // 333 | this->label9->AutoSize = true; 334 | this->label9->Location = System::Drawing::Point(12, 169); 335 | this->label9->Name = L"label9"; 336 | this->label9->Size = System::Drawing::Size(58, 13); 337 | this->label9->TabIndex = 20; 338 | this->label9->Text = L"Relocation"; 339 | // 340 | // text_Debug2 341 | // 342 | this->text_Debug2->Location = System::Drawing::Point(199, 192); 343 | this->text_Debug2->Name = L"text_Debug2"; 344 | this->text_Debug2->Size = System::Drawing::Size(97, 20); 345 | this->text_Debug2->TabIndex = 25; 346 | // 347 | // text_Debug 348 | // 349 | this->text_Debug->Location = System::Drawing::Point(96, 192); 350 | this->text_Debug->Name = L"text_Debug"; 351 | this->text_Debug->Size = System::Drawing::Size(97, 20); 352 | this->text_Debug->TabIndex = 24; 353 | // 354 | // label10 355 | // 356 | this->label10->AutoSize = true; 357 | this->label10->Location = System::Drawing::Point(22, 195); 358 | this->label10->Name = L"label10"; 359 | this->label10->Size = System::Drawing::Size(39, 13); 360 | this->label10->TabIndex = 23; 361 | this->label10->Text = L"Debug"; 362 | // 363 | // text_Architecture2 364 | // 365 | this->text_Architecture2->Location = System::Drawing::Point(199, 218); 366 | this->text_Architecture2->Name = L"text_Architecture2"; 367 | this->text_Architecture2->Size = System::Drawing::Size(97, 20); 368 | this->text_Architecture2->TabIndex = 28; 369 | // 370 | // text_Architecture 371 | // 372 | this->text_Architecture->Location = System::Drawing::Point(96, 218); 373 | this->text_Architecture->Name = L"text_Architecture"; 374 | this->text_Architecture->Size = System::Drawing::Size(97, 20); 375 | this->text_Architecture->TabIndex = 27; 376 | // 377 | // label11 378 | // 379 | this->label11->AutoSize = true; 380 | this->label11->Location = System::Drawing::Point(12, 221); 381 | this->label11->Name = L"label11"; 382 | this->label11->Size = System::Drawing::Size(64, 13); 383 | this->label11->TabIndex = 26; 384 | this->label11->Text = L"Architecture"; 385 | // 386 | // text_GlobalPtr2 387 | // 388 | this->text_GlobalPtr2->Location = System::Drawing::Point(199, 244); 389 | this->text_GlobalPtr2->Name = L"text_GlobalPtr2"; 390 | this->text_GlobalPtr2->Size = System::Drawing::Size(97, 20); 391 | this->text_GlobalPtr2->TabIndex = 31; 392 | // 393 | // text_GlobalPtr 394 | // 395 | this->text_GlobalPtr->Location = System::Drawing::Point(96, 244); 396 | this->text_GlobalPtr->Name = L"text_GlobalPtr"; 397 | this->text_GlobalPtr->Size = System::Drawing::Size(97, 20); 398 | this->text_GlobalPtr->TabIndex = 30; 399 | // 400 | // label12 401 | // 402 | this->label12->AutoSize = true; 403 | this->label12->Location = System::Drawing::Point(19, 247); 404 | this->label12->Name = L"label12"; 405 | this->label12->Size = System::Drawing::Size(50, 13); 406 | this->label12->TabIndex = 29; 407 | this->label12->Text = L"GlobalPtr"; 408 | // 409 | // text_TLS2 410 | // 411 | this->text_TLS2->Location = System::Drawing::Point(199, 270); 412 | this->text_TLS2->Name = L"text_TLS2"; 413 | this->text_TLS2->Size = System::Drawing::Size(97, 20); 414 | this->text_TLS2->TabIndex = 34; 415 | // 416 | // text_TLS 417 | // 418 | this->text_TLS->Location = System::Drawing::Point(96, 270); 419 | this->text_TLS->Name = L"text_TLS"; 420 | this->text_TLS->Size = System::Drawing::Size(97, 20); 421 | this->text_TLS->TabIndex = 33; 422 | // 423 | // label13 424 | // 425 | this->label13->AutoSize = true; 426 | this->label13->Location = System::Drawing::Point(13, 273); 427 | this->label13->Name = L"label13"; 428 | this->label13->Size = System::Drawing::Size(57, 13); 429 | this->label13->TabIndex = 32; 430 | this->label13->Text = L"TLS Table"; 431 | // 432 | // text_LoadConfig2 433 | // 434 | this->text_LoadConfig2->Location = System::Drawing::Point(199, 296); 435 | this->text_LoadConfig2->Name = L"text_LoadConfig2"; 436 | this->text_LoadConfig2->Size = System::Drawing::Size(97, 20); 437 | this->text_LoadConfig2->TabIndex = 37; 438 | // 439 | // text_LoadConfig 440 | // 441 | this->text_LoadConfig->Location = System::Drawing::Point(96, 296); 442 | this->text_LoadConfig->Name = L"text_LoadConfig"; 443 | this->text_LoadConfig->Size = System::Drawing::Size(97, 20); 444 | this->text_LoadConfig->TabIndex = 36; 445 | // 446 | // label14 447 | // 448 | this->label14->AutoSize = true; 449 | this->label14->Location = System::Drawing::Point(13, 299); 450 | this->label14->Name = L"label14"; 451 | this->label14->Size = System::Drawing::Size(61, 13); 452 | this->label14->TabIndex = 35; 453 | this->label14->Text = L"LoadConfig"; 454 | // 455 | // text_Bound2 456 | // 457 | this->text_Bound2->Location = System::Drawing::Point(199, 322); 458 | this->text_Bound2->Name = L"text_Bound2"; 459 | this->text_Bound2->Size = System::Drawing::Size(97, 20); 460 | this->text_Bound2->TabIndex = 40; 461 | // 462 | // text_Bound 463 | // 464 | this->text_Bound->Location = System::Drawing::Point(96, 322); 465 | this->text_Bound->Name = L"text_Bound"; 466 | this->text_Bound->Size = System::Drawing::Size(97, 20); 467 | this->text_Bound->TabIndex = 39; 468 | // 469 | // label15 470 | // 471 | this->label15->AutoSize = true; 472 | this->label15->Location = System::Drawing::Point(10, 325); 473 | this->label15->Name = L"label15"; 474 | this->label15->Size = System::Drawing::Size(67, 13); 475 | this->label15->TabIndex = 38; 476 | this->label15->Text = L"BoundImport"; 477 | // 478 | // text_Delay2 479 | // 480 | this->text_Delay2->Location = System::Drawing::Point(199, 348); 481 | this->text_Delay2->Name = L"text_Delay2"; 482 | this->text_Delay2->Size = System::Drawing::Size(97, 20); 483 | this->text_Delay2->TabIndex = 43; 484 | // 485 | // text_Delay 486 | // 487 | this->text_Delay->Location = System::Drawing::Point(96, 348); 488 | this->text_Delay->Name = L"text_Delay"; 489 | this->text_Delay->Size = System::Drawing::Size(97, 20); 490 | this->text_Delay->TabIndex = 42; 491 | // 492 | // label16 493 | // 494 | this->label16->AutoSize = true; 495 | this->label16->Location = System::Drawing::Point(11, 351); 496 | this->label16->Name = L"label16"; 497 | this->label16->Size = System::Drawing::Size(63, 13); 498 | this->label16->TabIndex = 41; 499 | this->label16->Text = L"DelayImport"; 500 | // 501 | // text_COM2 502 | // 503 | this->text_COM2->Location = System::Drawing::Point(199, 374); 504 | this->text_COM2->Name = L"text_COM2"; 505 | this->text_COM2->Size = System::Drawing::Size(97, 20); 506 | this->text_COM2->TabIndex = 46; 507 | // 508 | // text_COM 509 | // 510 | this->text_COM->Location = System::Drawing::Point(96, 374); 511 | this->text_COM->Name = L"text_COM"; 512 | this->text_COM->Size = System::Drawing::Size(97, 20); 513 | this->text_COM->TabIndex = 45; 514 | // 515 | // label17 516 | // 517 | this->label17->AutoSize = true; 518 | this->label17->Location = System::Drawing::Point(22, 377); 519 | this->label17->Name = L"label17"; 520 | this->label17->Size = System::Drawing::Size(31, 13); 521 | this->label17->TabIndex = 44; 522 | this->label17->Text = L"COM"; 523 | // 524 | // text_Reserve2 525 | // 526 | this->text_Reserve2->Location = System::Drawing::Point(199, 400); 527 | this->text_Reserve2->Name = L"text_Reserve2"; 528 | this->text_Reserve2->Size = System::Drawing::Size(97, 20); 529 | this->text_Reserve2->TabIndex = 49; 530 | // 531 | // text_Reserve 532 | // 533 | this->text_Reserve->Location = System::Drawing::Point(96, 400); 534 | this->text_Reserve->Name = L"text_Reserve"; 535 | this->text_Reserve->Size = System::Drawing::Size(97, 20); 536 | this->text_Reserve->TabIndex = 48; 537 | // 538 | // label18 539 | // 540 | this->label18->AutoSize = true; 541 | this->label18->Location = System::Drawing::Point(16, 403); 542 | this->label18->Name = L"label18"; 543 | this->label18->Size = System::Drawing::Size(47, 13); 544 | this->label18->TabIndex = 47; 545 | this->label18->Text = L"Reserve"; 546 | // 547 | // frm_Directory 548 | // 549 | this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); 550 | this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; 551 | this->ClientSize = System::Drawing::Size(321, 436); 552 | this->Controls->Add(this->text_Reserve2); 553 | this->Controls->Add(this->text_Reserve); 554 | this->Controls->Add(this->label18); 555 | this->Controls->Add(this->text_COM2); 556 | this->Controls->Add(this->text_COM); 557 | this->Controls->Add(this->label17); 558 | this->Controls->Add(this->text_Delay2); 559 | this->Controls->Add(this->text_Delay); 560 | this->Controls->Add(this->label16); 561 | this->Controls->Add(this->text_Bound2); 562 | this->Controls->Add(this->text_Bound); 563 | this->Controls->Add(this->label15); 564 | this->Controls->Add(this->text_LoadConfig2); 565 | this->Controls->Add(this->text_LoadConfig); 566 | this->Controls->Add(this->label14); 567 | this->Controls->Add(this->text_TLS2); 568 | this->Controls->Add(this->text_TLS); 569 | this->Controls->Add(this->label13); 570 | this->Controls->Add(this->text_GlobalPtr2); 571 | this->Controls->Add(this->text_GlobalPtr); 572 | this->Controls->Add(this->label12); 573 | this->Controls->Add(this->text_Architecture2); 574 | this->Controls->Add(this->text_Architecture); 575 | this->Controls->Add(this->label11); 576 | this->Controls->Add(this->text_Debug2); 577 | this->Controls->Add(this->text_Debug); 578 | this->Controls->Add(this->label10); 579 | this->Controls->Add(this->text_Relocation2); 580 | this->Controls->Add(this->text_Relocation); 581 | this->Controls->Add(this->label9); 582 | this->Controls->Add(this->text_Certificate2); 583 | this->Controls->Add(this->text_Certificate); 584 | this->Controls->Add(this->label8); 585 | this->Controls->Add(this->text_Exception2); 586 | this->Controls->Add(this->text_Exception); 587 | this->Controls->Add(this->label7); 588 | this->Controls->Add(this->text_Resource2); 589 | this->Controls->Add(this->text_Resource); 590 | this->Controls->Add(this->label6); 591 | this->Controls->Add(this->text_IAT2); 592 | this->Controls->Add(this->text_IAT); 593 | this->Controls->Add(this->label5); 594 | this->Controls->Add(this->text_EAT2); 595 | this->Controls->Add(this->text_EAT); 596 | this->Controls->Add(this->label4); 597 | this->Controls->Add(this->label3); 598 | this->Controls->Add(this->label2); 599 | this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedToolWindow; 600 | this->Icon = (cli::safe_cast(resources->GetObject(L"$this.Icon"))); 601 | this->Name = L"frm_Directory"; 602 | this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; 603 | this->Text = L"DataDirectory List"; 604 | this->Load += gcnew System::EventHandler(this, &frm_Directory::frm_Directory_Load); 605 | this->ResumeLayout(false); 606 | this->PerformLayout(); 607 | 608 | } 609 | #pragma endregion 610 | private: System::Void frm_Directory_Load(System::Object^ sender, System::EventArgs^ e) 611 | { 612 | if (DataDirectory.size() == 0) return; 613 | text_EAT->Text = (gcnew String(DataDirectory[0].c_str()))->Split('#')[0]->ToString(); 614 | text_EAT2->Text = (gcnew String(DataDirectory[0].c_str()))->Split('#')[1]->ToString(); 615 | text_IAT->Text = (gcnew String(DataDirectory[1].c_str()))->Split('#')[0]->ToString(); 616 | text_IAT2->Text = (gcnew String(DataDirectory[1].c_str()))->Split('#')[1]->ToString(); 617 | text_Resource->Text = (gcnew String(DataDirectory[2].c_str()))->Split('#')[0]->ToString(); 618 | text_Resource2->Text = (gcnew String(DataDirectory[2].c_str()))->Split('#')[1]->ToString(); 619 | text_Exception->Text = (gcnew String(DataDirectory[3].c_str()))->Split('#')[0]->ToString(); 620 | text_Exception2->Text = (gcnew String(DataDirectory[3].c_str()))->Split('#')[1]->ToString(); 621 | text_Certificate->Text = (gcnew String(DataDirectory[4].c_str()))->Split('#')[0]->ToString(); 622 | text_Certificate2->Text = (gcnew String(DataDirectory[4].c_str()))->Split('#')[1]->ToString(); 623 | text_Relocation->Text = (gcnew String(DataDirectory[5].c_str()))->Split('#')[0]->ToString(); 624 | text_Relocation2->Text = (gcnew String(DataDirectory[5].c_str()))->Split('#')[1]->ToString(); 625 | text_Debug->Text = (gcnew String(DataDirectory[6].c_str()))->Split('#')[0]->ToString(); 626 | text_Debug2->Text = (gcnew String(DataDirectory[6].c_str()))->Split('#')[1]->ToString(); 627 | text_Architecture->Text = (gcnew String(DataDirectory[7].c_str()))->Split('#')[0]->ToString(); 628 | text_Architecture2->Text = (gcnew String(DataDirectory[7].c_str()))->Split('#')[1]->ToString(); 629 | text_GlobalPtr->Text = (gcnew String(DataDirectory[8].c_str()))->Split('#')[0]->ToString(); 630 | text_GlobalPtr2->Text = (gcnew String(DataDirectory[8].c_str()))->Split('#')[1]->ToString(); 631 | text_TLS->Text = (gcnew String(DataDirectory[9].c_str()))->Split('#')[0]->ToString(); 632 | text_TLS2->Text = (gcnew String(DataDirectory[9].c_str()))->Split('#')[1]->ToString(); 633 | text_LoadConfig->Text = (gcnew String(DataDirectory[10].c_str()))->Split('#')[0]->ToString(); 634 | text_LoadConfig2->Text = (gcnew String(DataDirectory[10].c_str()))->Split('#')[1]->ToString(); 635 | text_Bound->Text = (gcnew String(DataDirectory[11].c_str()))->Split('#')[0]->ToString(); 636 | text_Bound2->Text = (gcnew String(DataDirectory[11].c_str()))->Split('#')[1]->ToString(); 637 | text_Delay->Text = (gcnew String(DataDirectory[12].c_str()))->Split('#')[0]->ToString(); 638 | text_Delay2->Text = (gcnew String(DataDirectory[12].c_str()))->Split('#')[1]->ToString(); 639 | text_COM->Text = (gcnew String(DataDirectory[13].c_str()))->Split('#')[0]->ToString(); 640 | text_COM2->Text = (gcnew String(DataDirectory[13].c_str()))->Split('#')[1]->ToString(); 641 | text_Reserve->Text = (gcnew String(DataDirectory[14].c_str()))->Split('#')[0]->ToString(); 642 | text_Reserve2->Text = (gcnew String(DataDirectory[14].c_str()))->Split('#')[1]->ToString(); 643 | 644 | } 645 | }; 646 | } 647 | -------------------------------------------------------------------------------- /EXE2DLL/frm_PEInfo.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace EXE2DLL { 4 | 5 | using namespace System; 6 | using namespace System::ComponentModel; 7 | using namespace System::Collections; 8 | using namespace System::Windows::Forms; 9 | using namespace System::Data; 10 | using namespace System::Drawing; 11 | 12 | /// 13 | /// Summary for frm_PEInfo 14 | /// 15 | public ref class frm_PEInfo : public System::Windows::Forms::Form 16 | { 17 | public: 18 | frm_PEInfo(void) 19 | { 20 | InitializeComponent(); 21 | // 22 | //TODO: Add the constructor code here 23 | // 24 | } 25 | 26 | protected: 27 | /// 28 | /// Clean up any resources being used. 29 | /// 30 | ~frm_PEInfo() 31 | { 32 | if (components) 33 | { 34 | delete components; 35 | } 36 | } 37 | private: System::Windows::Forms::Label^ label1; 38 | private: System::Windows::Forms::TextBox^ text_Entry; 39 | private: System::Windows::Forms::TextBox^ text_ImageBase; 40 | private: System::Windows::Forms::Label^ label2; 41 | private: System::Windows::Forms::TextBox^ text_ImageSize; 42 | private: System::Windows::Forms::Label^ label3; 43 | private: System::Windows::Forms::TextBox^ text_CodeBase; 44 | private: System::Windows::Forms::Label^ label4; 45 | private: System::Windows::Forms::TextBox^ text_DataBase; 46 | private: System::Windows::Forms::Label^ label5; 47 | private: System::Windows::Forms::TextBox^ text_SectionAlign; 48 | private: System::Windows::Forms::Label^ label6; 49 | private: System::Windows::Forms::TextBox^ text_FileAlign; 50 | private: System::Windows::Forms::Label^ label7; 51 | private: System::Windows::Forms::TextBox^ text_Magic; 52 | 53 | private: System::Windows::Forms::Label^ label8; 54 | private: System::Windows::Forms::TextBox^ text_RvaAndSizes; 55 | 56 | private: System::Windows::Forms::Label^ label9; 57 | private: System::Windows::Forms::TextBox^ text_SizeOfOptionalHeader; 58 | 59 | private: System::Windows::Forms::Label^ label10; 60 | private: System::Windows::Forms::TextBox^ text_CheckSum; 61 | 62 | private: System::Windows::Forms::Label^ label11; 63 | private: System::Windows::Forms::TextBox^ text_Characteristics; 64 | 65 | private: System::Windows::Forms::Label^ label12; 66 | private: System::Windows::Forms::TextBox^ text_HeadersSize; 67 | 68 | private: System::Windows::Forms::Label^ label13; 69 | private: System::Windows::Forms::TextBox^ text_TimeStamp; 70 | 71 | private: System::Windows::Forms::Label^ label14; 72 | private: System::Windows::Forms::TextBox^ text_SectionNumber; 73 | 74 | private: System::Windows::Forms::Label^ label15; 75 | private: System::Windows::Forms::TextBox^ text_Subsystem; 76 | 77 | private: System::Windows::Forms::Label^ label16; 78 | protected: 79 | 80 | 81 | private: 82 | /// 83 | /// Required designer variable. 84 | /// 85 | System::ComponentModel::Container ^components; 86 | 87 | #pragma region Windows Form Designer generated code 88 | /// 89 | /// Required method for Designer support - do not modify 90 | /// the contents of this method with the code editor. 91 | /// 92 | void InitializeComponent(void) 93 | { 94 | System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(frm_PEInfo::typeid)); 95 | this->label1 = (gcnew System::Windows::Forms::Label()); 96 | this->text_Entry = (gcnew System::Windows::Forms::TextBox()); 97 | this->text_ImageBase = (gcnew System::Windows::Forms::TextBox()); 98 | this->label2 = (gcnew System::Windows::Forms::Label()); 99 | this->text_ImageSize = (gcnew System::Windows::Forms::TextBox()); 100 | this->label3 = (gcnew System::Windows::Forms::Label()); 101 | this->text_CodeBase = (gcnew System::Windows::Forms::TextBox()); 102 | this->label4 = (gcnew System::Windows::Forms::Label()); 103 | this->text_DataBase = (gcnew System::Windows::Forms::TextBox()); 104 | this->label5 = (gcnew System::Windows::Forms::Label()); 105 | this->text_SectionAlign = (gcnew System::Windows::Forms::TextBox()); 106 | this->label6 = (gcnew System::Windows::Forms::Label()); 107 | this->text_FileAlign = (gcnew System::Windows::Forms::TextBox()); 108 | this->label7 = (gcnew System::Windows::Forms::Label()); 109 | this->text_Magic = (gcnew System::Windows::Forms::TextBox()); 110 | this->label8 = (gcnew System::Windows::Forms::Label()); 111 | this->text_RvaAndSizes = (gcnew System::Windows::Forms::TextBox()); 112 | this->label9 = (gcnew System::Windows::Forms::Label()); 113 | this->text_SizeOfOptionalHeader = (gcnew System::Windows::Forms::TextBox()); 114 | this->label10 = (gcnew System::Windows::Forms::Label()); 115 | this->text_CheckSum = (gcnew System::Windows::Forms::TextBox()); 116 | this->label11 = (gcnew System::Windows::Forms::Label()); 117 | this->text_Characteristics = (gcnew System::Windows::Forms::TextBox()); 118 | this->label12 = (gcnew System::Windows::Forms::Label()); 119 | this->text_HeadersSize = (gcnew System::Windows::Forms::TextBox()); 120 | this->label13 = (gcnew System::Windows::Forms::Label()); 121 | this->text_TimeStamp = (gcnew System::Windows::Forms::TextBox()); 122 | this->label14 = (gcnew System::Windows::Forms::Label()); 123 | this->text_SectionNumber = (gcnew System::Windows::Forms::TextBox()); 124 | this->label15 = (gcnew System::Windows::Forms::Label()); 125 | this->text_Subsystem = (gcnew System::Windows::Forms::TextBox()); 126 | this->label16 = (gcnew System::Windows::Forms::Label()); 127 | this->SuspendLayout(); 128 | // 129 | // label1 130 | // 131 | this->label1->AutoSize = true; 132 | this->label1->Location = System::Drawing::Point(12, 15); 133 | this->label1->Name = L"label1"; 134 | this->label1->Size = System::Drawing::Size(58, 13); 135 | this->label1->TabIndex = 0; 136 | this->label1->Text = L"Entry Point"; 137 | // 138 | // text_Entry 139 | // 140 | this->text_Entry->Location = System::Drawing::Point(86, 12); 141 | this->text_Entry->Name = L"text_Entry"; 142 | this->text_Entry->Size = System::Drawing::Size(123, 20); 143 | this->text_Entry->TabIndex = 1; 144 | // 145 | // text_ImageBase 146 | // 147 | this->text_ImageBase->Location = System::Drawing::Point(86, 38); 148 | this->text_ImageBase->Name = L"text_ImageBase"; 149 | this->text_ImageBase->Size = System::Drawing::Size(123, 20); 150 | this->text_ImageBase->TabIndex = 3; 151 | // 152 | // label2 153 | // 154 | this->label2->AutoSize = true; 155 | this->label2->Location = System::Drawing::Point(12, 41); 156 | this->label2->Name = L"label2"; 157 | this->label2->Size = System::Drawing::Size(60, 13); 158 | this->label2->TabIndex = 2; 159 | this->label2->Text = L"ImageBase"; 160 | // 161 | // text_ImageSize 162 | // 163 | this->text_ImageSize->Location = System::Drawing::Point(86, 64); 164 | this->text_ImageSize->Name = L"text_ImageSize"; 165 | this->text_ImageSize->Size = System::Drawing::Size(123, 20); 166 | this->text_ImageSize->TabIndex = 5; 167 | // 168 | // label3 169 | // 170 | this->label3->AutoSize = true; 171 | this->label3->Location = System::Drawing::Point(12, 67); 172 | this->label3->Name = L"label3"; 173 | this->label3->Size = System::Drawing::Size(56, 13); 174 | this->label3->TabIndex = 4; 175 | this->label3->Text = L"ImageSize"; 176 | // 177 | // text_CodeBase 178 | // 179 | this->text_CodeBase->Location = System::Drawing::Point(86, 90); 180 | this->text_CodeBase->Name = L"text_CodeBase"; 181 | this->text_CodeBase->Size = System::Drawing::Size(123, 20); 182 | this->text_CodeBase->TabIndex = 7; 183 | // 184 | // label4 185 | // 186 | this->label4->AutoSize = true; 187 | this->label4->Location = System::Drawing::Point(12, 93); 188 | this->label4->Name = L"label4"; 189 | this->label4->Size = System::Drawing::Size(59, 13); 190 | this->label4->TabIndex = 6; 191 | this->label4->Text = L"Code Base"; 192 | // 193 | // text_DataBase 194 | // 195 | this->text_DataBase->Location = System::Drawing::Point(86, 116); 196 | this->text_DataBase->Name = L"text_DataBase"; 197 | this->text_DataBase->Size = System::Drawing::Size(123, 20); 198 | this->text_DataBase->TabIndex = 9; 199 | // 200 | // label5 201 | // 202 | this->label5->AutoSize = true; 203 | this->label5->Location = System::Drawing::Point(12, 119); 204 | this->label5->Name = L"label5"; 205 | this->label5->Size = System::Drawing::Size(57, 13); 206 | this->label5->TabIndex = 8; 207 | this->label5->Text = L"Data Base"; 208 | // 209 | // text_SectionAlign 210 | // 211 | this->text_SectionAlign->Location = System::Drawing::Point(86, 142); 212 | this->text_SectionAlign->Name = L"text_SectionAlign"; 213 | this->text_SectionAlign->Size = System::Drawing::Size(123, 20); 214 | this->text_SectionAlign->TabIndex = 11; 215 | // 216 | // label6 217 | // 218 | this->label6->AutoSize = true; 219 | this->label6->Location = System::Drawing::Point(7, 145); 220 | this->label6->Name = L"label6"; 221 | this->label6->Size = System::Drawing::Size(69, 13); 222 | this->label6->TabIndex = 10; 223 | this->label6->Text = L"Section Align"; 224 | // 225 | // text_FileAlign 226 | // 227 | this->text_FileAlign->Location = System::Drawing::Point(86, 168); 228 | this->text_FileAlign->Name = L"text_FileAlign"; 229 | this->text_FileAlign->Size = System::Drawing::Size(123, 20); 230 | this->text_FileAlign->TabIndex = 13; 231 | // 232 | // label7 233 | // 234 | this->label7->AutoSize = true; 235 | this->label7->Location = System::Drawing::Point(14, 171); 236 | this->label7->Name = L"label7"; 237 | this->label7->Size = System::Drawing::Size(49, 13); 238 | this->label7->TabIndex = 12; 239 | this->label7->Text = L"File Align"; 240 | // 241 | // text_Magic 242 | // 243 | this->text_Magic->Location = System::Drawing::Point(86, 194); 244 | this->text_Magic->Name = L"text_Magic"; 245 | this->text_Magic->Size = System::Drawing::Size(123, 20); 246 | this->text_Magic->TabIndex = 15; 247 | // 248 | // label8 249 | // 250 | this->label8->AutoSize = true; 251 | this->label8->Location = System::Drawing::Point(22, 197); 252 | this->label8->Name = L"label8"; 253 | this->label8->Size = System::Drawing::Size(36, 13); 254 | this->label8->TabIndex = 14; 255 | this->label8->Text = L"Magic"; 256 | // 257 | // text_RvaAndSizes 258 | // 259 | this->text_RvaAndSizes->Location = System::Drawing::Point(372, 197); 260 | this->text_RvaAndSizes->Name = L"text_RvaAndSizes"; 261 | this->text_RvaAndSizes->Size = System::Drawing::Size(123, 20); 262 | this->text_RvaAndSizes->TabIndex = 31; 263 | // 264 | // label9 265 | // 266 | this->label9->AutoSize = true; 267 | this->label9->Location = System::Drawing::Point(283, 200); 268 | this->label9->Name = L"label9"; 269 | this->label9->Size = System::Drawing::Size(71, 13); 270 | this->label9->TabIndex = 30; 271 | this->label9->Text = L"RvaAndSizes"; 272 | // 273 | // text_SizeOfOptionalHeader 274 | // 275 | this->text_SizeOfOptionalHeader->Location = System::Drawing::Point(372, 171); 276 | this->text_SizeOfOptionalHeader->Name = L"text_SizeOfOptionalHeader"; 277 | this->text_SizeOfOptionalHeader->Size = System::Drawing::Size(123, 20); 278 | this->text_SizeOfOptionalHeader->TabIndex = 29; 279 | // 280 | // label10 281 | // 282 | this->label10->AutoSize = true; 283 | this->label10->Location = System::Drawing::Point(263, 174); 284 | this->label10->Name = L"label10"; 285 | this->label10->Size = System::Drawing::Size(104, 13); 286 | this->label10->TabIndex = 28; 287 | this->label10->Text = L"OptionalHeader Size"; 288 | // 289 | // text_CheckSum 290 | // 291 | this->text_CheckSum->Location = System::Drawing::Point(372, 145); 292 | this->text_CheckSum->Name = L"text_CheckSum"; 293 | this->text_CheckSum->Size = System::Drawing::Size(123, 20); 294 | this->text_CheckSum->TabIndex = 27; 295 | // 296 | // label11 297 | // 298 | this->label11->AutoSize = true; 299 | this->label11->Location = System::Drawing::Point(286, 148); 300 | this->label11->Name = L"label11"; 301 | this->label11->Size = System::Drawing::Size(59, 13); 302 | this->label11->TabIndex = 26; 303 | this->label11->Text = L"CheckSum"; 304 | // 305 | // text_Characteristics 306 | // 307 | this->text_Characteristics->Location = System::Drawing::Point(372, 119); 308 | this->text_Characteristics->Name = L"text_Characteristics"; 309 | this->text_Characteristics->Size = System::Drawing::Size(123, 20); 310 | this->text_Characteristics->TabIndex = 25; 311 | // 312 | // label12 313 | // 314 | this->label12->AutoSize = true; 315 | this->label12->Location = System::Drawing::Point(281, 122); 316 | this->label12->Name = L"label12"; 317 | this->label12->Size = System::Drawing::Size(76, 13); 318 | this->label12->TabIndex = 24; 319 | this->label12->Text = L"Characteristics"; 320 | // 321 | // text_HeadersSize 322 | // 323 | this->text_HeadersSize->Location = System::Drawing::Point(372, 93); 324 | this->text_HeadersSize->Name = L"text_HeadersSize"; 325 | this->text_HeadersSize->Size = System::Drawing::Size(123, 20); 326 | this->text_HeadersSize->TabIndex = 23; 327 | // 328 | // label13 329 | // 330 | this->label13->AutoSize = true; 331 | this->label13->Location = System::Drawing::Point(284, 96); 332 | this->label13->Name = L"label13"; 333 | this->label13->Size = System::Drawing::Size(70, 13); 334 | this->label13->TabIndex = 22; 335 | this->label13->Text = L"Headers Size"; 336 | // 337 | // text_TimeStamp 338 | // 339 | this->text_TimeStamp->Location = System::Drawing::Point(372, 67); 340 | this->text_TimeStamp->Name = L"text_TimeStamp"; 341 | this->text_TimeStamp->Size = System::Drawing::Size(123, 20); 342 | this->text_TimeStamp->TabIndex = 21; 343 | // 344 | // label14 345 | // 346 | this->label14->AutoSize = true; 347 | this->label14->Location = System::Drawing::Point(291, 70); 348 | this->label14->Name = L"label14"; 349 | this->label14->Size = System::Drawing::Size(60, 13); 350 | this->label14->TabIndex = 20; 351 | this->label14->Text = L"TimeStamp"; 352 | // 353 | // text_SectionNumber 354 | // 355 | this->text_SectionNumber->Location = System::Drawing::Point(372, 41); 356 | this->text_SectionNumber->Name = L"text_SectionNumber"; 357 | this->text_SectionNumber->Size = System::Drawing::Size(123, 20); 358 | this->text_SectionNumber->TabIndex = 19; 359 | // 360 | // label15 361 | // 362 | this->label15->AutoSize = true; 363 | this->label15->Location = System::Drawing::Point(278, 45); 364 | this->label15->Name = L"label15"; 365 | this->label15->Size = System::Drawing::Size(83, 13); 366 | this->label15->TabIndex = 18; 367 | this->label15->Text = L"Section Number"; 368 | // 369 | // text_Subsystem 370 | // 371 | this->text_Subsystem->Location = System::Drawing::Point(372, 15); 372 | this->text_Subsystem->Name = L"text_Subsystem"; 373 | this->text_Subsystem->Size = System::Drawing::Size(123, 20); 374 | this->text_Subsystem->TabIndex = 17; 375 | // 376 | // label16 377 | // 378 | this->label16->AutoSize = true; 379 | this->label16->Location = System::Drawing::Point(291, 18); 380 | this->label16->Name = L"label16"; 381 | this->label16->Size = System::Drawing::Size(58, 13); 382 | this->label16->TabIndex = 16; 383 | this->label16->Text = L"Subsystem"; 384 | // 385 | // frm_PEInfo 386 | // 387 | this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); 388 | this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; 389 | this->ClientSize = System::Drawing::Size(507, 233); 390 | this->Controls->Add(this->text_RvaAndSizes); 391 | this->Controls->Add(this->label9); 392 | this->Controls->Add(this->text_SizeOfOptionalHeader); 393 | this->Controls->Add(this->label10); 394 | this->Controls->Add(this->text_CheckSum); 395 | this->Controls->Add(this->label11); 396 | this->Controls->Add(this->text_Characteristics); 397 | this->Controls->Add(this->label12); 398 | this->Controls->Add(this->text_HeadersSize); 399 | this->Controls->Add(this->label13); 400 | this->Controls->Add(this->text_TimeStamp); 401 | this->Controls->Add(this->label14); 402 | this->Controls->Add(this->text_SectionNumber); 403 | this->Controls->Add(this->label15); 404 | this->Controls->Add(this->text_Subsystem); 405 | this->Controls->Add(this->label16); 406 | this->Controls->Add(this->text_Magic); 407 | this->Controls->Add(this->label8); 408 | this->Controls->Add(this->text_FileAlign); 409 | this->Controls->Add(this->label7); 410 | this->Controls->Add(this->text_SectionAlign); 411 | this->Controls->Add(this->label6); 412 | this->Controls->Add(this->text_DataBase); 413 | this->Controls->Add(this->label5); 414 | this->Controls->Add(this->text_CodeBase); 415 | this->Controls->Add(this->label4); 416 | this->Controls->Add(this->text_ImageSize); 417 | this->Controls->Add(this->label3); 418 | this->Controls->Add(this->text_ImageBase); 419 | this->Controls->Add(this->label2); 420 | this->Controls->Add(this->text_Entry); 421 | this->Controls->Add(this->label1); 422 | this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedToolWindow; 423 | this->Icon = (cli::safe_cast(resources->GetObject(L"$this.Icon"))); 424 | this->Name = L"frm_PEInfo"; 425 | this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; 426 | this->Text = L"PE Info"; 427 | this->Load += gcnew System::EventHandler(this, &frm_PEInfo::frm_PEInfo_Load); 428 | this->ResumeLayout(false); 429 | this->PerformLayout(); 430 | 431 | } 432 | #pragma endregion 433 | private: System::Void frm_PEInfo_Load(System::Object^ sender, System::EventArgs^ e) 434 | { 435 | if (PElist.size() == 0) return; 436 | text_Entry->Text= gcnew String(PElist[0].c_str()); 437 | text_Subsystem->Text = gcnew String(PElist[1].c_str()); 438 | text_ImageBase->Text = gcnew String(PElist[2].c_str()); 439 | text_SectionNumber->Text = gcnew String(PElist[3].c_str()); 440 | text_ImageSize->Text = gcnew String(PElist[4].c_str()); 441 | text_TimeStamp->Text = gcnew String(PElist[5].c_str()); 442 | text_CodeBase->Text = gcnew String(PElist[6].c_str()); 443 | text_HeadersSize->Text = gcnew String(PElist[7].c_str()); 444 | text_DataBase->Text = gcnew String(PElist[8].c_str()); 445 | text_Characteristics->Text = gcnew String(PElist[9].c_str()); 446 | text_SectionAlign->Text = gcnew String(PElist[10].c_str()); 447 | text_CheckSum->Text = gcnew String(PElist[11].c_str()); 448 | text_FileAlign->Text = gcnew String(PElist[12].c_str()); 449 | text_SizeOfOptionalHeader->Text = gcnew String(PElist[13].c_str()); 450 | text_Magic->Text = gcnew String(PElist[14].c_str()); 451 | text_RvaAndSizes->Text = gcnew String(PElist[15].c_str()); 452 | } 453 | }; 454 | } 455 | -------------------------------------------------------------------------------- /EXE2DLL/frm_Section.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | #include "frm_Section.h" 3 | 4 | -------------------------------------------------------------------------------- /EXE2DLL/frm_Section.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "PE_INFO.h" 4 | #include 5 | #include 6 | 7 | #include "EXE2DLL.h" 8 | //#include "MyForm.h" 9 | 10 | #ifdef _WIN64 11 | typedef unsigned __int64 size_t; 12 | #else 13 | typedef unsigned int size_t; 14 | #endif 15 | 16 | 17 | 18 | namespace EXE2DLL { 19 | 20 | using namespace System; 21 | using namespace System::ComponentModel; 22 | using namespace System::Collections; 23 | using namespace System::Windows::Forms; 24 | using namespace System::Data; 25 | using namespace System::Drawing; 26 | using namespace System::Net; 27 | using namespace System::Threading; 28 | using namespace System::IO; 29 | using namespace System::Runtime::InteropServices; 30 | using namespace msclr::interop; 31 | 32 | /// 33 | /// Summary for frm_section 34 | /// 35 | public ref class frm_section : public System::Windows::Forms::Form 36 | { 37 | public: 38 | frm_section(void) 39 | { 40 | InitializeComponent(); 41 | // 42 | //TODO: Add the constructor code here 43 | // 44 | } 45 | 46 | protected: 47 | /// 48 | /// Clean up any resources being used. 49 | /// 50 | ~ frm_section() 51 | { 52 | if (components) 53 | { 54 | delete components; 55 | } 56 | } 57 | private: System::Windows::Forms::Button^ button1; 58 | protected: 59 | private: System::Windows::Forms::Label^ label1; 60 | private: System::Windows::Forms::TextBox^ textBox1; 61 | private: System::Windows::Forms::TextBox^ textBox2; 62 | private: System::Windows::Forms::Label^ label2; 63 | private: System::Windows::Forms::TextBox^ textBox3; 64 | private: System::Windows::Forms::Label^ label3; 65 | private: System::Windows::Forms::ToolTip^ toolTip1; 66 | private: System::ComponentModel::IContainer^ components; 67 | 68 | private: 69 | /// 70 | /// Required designer variable. 71 | /// 72 | 73 | 74 | #pragma region Windows Form Designer generated code 75 | /// 76 | /// Required method for Designer support - do not modify 77 | /// the contents of this method with the code editor. 78 | /// 79 | void InitializeComponent(void) 80 | { 81 | this->components = (gcnew System::ComponentModel::Container()); 82 | System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(frm_section::typeid)); 83 | this->button1 = (gcnew System::Windows::Forms::Button()); 84 | this->label1 = (gcnew System::Windows::Forms::Label()); 85 | this->textBox1 = (gcnew System::Windows::Forms::TextBox()); 86 | this->textBox2 = (gcnew System::Windows::Forms::TextBox()); 87 | this->label2 = (gcnew System::Windows::Forms::Label()); 88 | this->textBox3 = (gcnew System::Windows::Forms::TextBox()); 89 | this->label3 = (gcnew System::Windows::Forms::Label()); 90 | this->toolTip1 = (gcnew System::Windows::Forms::ToolTip(this->components)); 91 | this->SuspendLayout(); 92 | // 93 | // button1 94 | // 95 | this->button1->Location = System::Drawing::Point(77, 88); 96 | this->button1->Name = L"button1"; 97 | this->button1->Size = System::Drawing::Size(55, 25); 98 | this->button1->TabIndex = 0; 99 | this->button1->Text = L"Add"; 100 | this->button1->UseVisualStyleBackColor = true; 101 | this->button1->Click += gcnew System::EventHandler(this, &frm_section::button1_Click); 102 | // 103 | // label1 104 | // 105 | this->label1->AutoSize = true; 106 | this->label1->Location = System::Drawing::Point(8, 9); 107 | this->label1->Name = L"label1"; 108 | this->label1->Size = System::Drawing::Size(74, 13); 109 | this->label1->TabIndex = 1; 110 | this->label1->Text = L"SectionName:"; 111 | // 112 | // textBox1 113 | // 114 | this->textBox1->Location = System::Drawing::Point(92, 6); 115 | this->textBox1->Name = L"textBox1"; 116 | this->textBox1->Size = System::Drawing::Size(100, 20); 117 | this->textBox1->TabIndex = 2; 118 | this->textBox1->Text = L".NewSection"; 119 | // 120 | // textBox2 121 | // 122 | this->textBox2->Location = System::Drawing::Point(92, 32); 123 | this->textBox2->Name = L"textBox2"; 124 | this->textBox2->Size = System::Drawing::Size(100, 20); 125 | this->textBox2->TabIndex = 4; 126 | this->textBox2->Text = L"1000"; 127 | // 128 | // label2 129 | // 130 | this->label2->AutoSize = true; 131 | this->label2->Location = System::Drawing::Point(16, 35); 132 | this->label2->Name = L"label2"; 133 | this->label2->Size = System::Drawing::Size(66, 13); 134 | this->label2->TabIndex = 3; 135 | this->label2->Text = L"SectionSize:"; 136 | // 137 | // textBox3 138 | // 139 | this->textBox3->Location = System::Drawing::Point(92, 58); 140 | this->textBox3->Name = L"textBox3"; 141 | this->textBox3->Size = System::Drawing::Size(100, 20); 142 | this->textBox3->TabIndex = 6; 143 | this->textBox3->Text = L"rdata"; 144 | // 145 | // label3 146 | // 147 | this->label3->AutoSize = true; 148 | this->label3->Location = System::Drawing::Point(7, 61); 149 | this->label3->Name = L"label3"; 150 | this->label3->Size = System::Drawing::Size(79, 13); 151 | this->label3->TabIndex = 5; 152 | this->label3->Text = L"Characteristics:"; 153 | // 154 | // frm_section 155 | // 156 | this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); 157 | this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; 158 | this->ClientSize = System::Drawing::Size(215, 122); 159 | this->Controls->Add(this->textBox3); 160 | this->Controls->Add(this->label3); 161 | this->Controls->Add(this->textBox2); 162 | this->Controls->Add(this->label2); 163 | this->Controls->Add(this->textBox1); 164 | this->Controls->Add(this->label1); 165 | this->Controls->Add(this->button1); 166 | this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedToolWindow; 167 | this->Icon = (cli::safe_cast(resources->GetObject(L"$this.Icon"))); 168 | this->Name = L"frm_section"; 169 | this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; 170 | this->Text = L"Add Section"; 171 | this->Load += gcnew System::EventHandler(this, &frm_section::frm_section_Load); 172 | this->ResumeLayout(false); 173 | this->PerformLayout(); 174 | 175 | } 176 | #pragma endregion 177 | private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 178 | { 179 | 180 | if (EXE2DLL::EXETODLL::FilePath == nullptr) return; 181 | if (textBox1->Text == "" || textBox2->Text == "" || textBox3->Text == "") return; 182 | size_t^ % RvaRawData=gcnew size_t; 183 | EXETODLL::AddSection(EXE2DLL::EXETODLL::FilePath,textBox1->Text, Convert::ToUInt32(textBox2->Text), textBox3->Text, RvaRawData); 184 | if (RvaRawData != (UInt32)0) 185 | { 186 | EXE2DLL::section_name = marshal_as(textBox1->Text); 187 | updatecontrol(); 188 | this->Close(); 189 | } 190 | 191 | } 192 | private: System::Void frm_section_Load(System::Object^ sender, System::EventArgs^ e) 193 | { 194 | 195 | } 196 | }; 197 | } 198 | -------------------------------------------------------------------------------- /EXE2DLL/frm_Section.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 125 | 126 | AAABAAYAgIAQAAAAAABoKAAAZgAAAEhIEAAAAAAA6A0AAM4oAAAwMBAAAAAAAGgGAAC2NgAAICAQAAAA 127 | AADoAgAAHj0AABgYEAAAAAAA6AEAAAZAAAAQEBAAAAAAACgBAADuQQAAKAAAAIAAAAAAAQAAAQAEAAAA 128 | AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A76QAAAC5/wAAun8AIlDyAAAAAAAAAAAAAAAAAAAA 129 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAD 130 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 131 | IAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 132 | IiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 133 | IiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIi 134 | IiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIi 135 | IiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 136 | IiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIi 137 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIi 138 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 139 | MzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 140 | MzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMz 141 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMz 142 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMz 143 | MzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMz 144 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMz 145 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAD 146 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 147 | IAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 148 | IiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 149 | IiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIi 150 | IiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIi 151 | IiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 152 | IiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIi 153 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIi 154 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 155 | MzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 156 | MzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMz 157 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMz 158 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMz 159 | MzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMz 160 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMz 161 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAD 162 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 163 | IAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 164 | IiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 165 | IiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIi 166 | IiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIi 167 | IiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 168 | IiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIi 169 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIi 170 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 171 | MzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 172 | MzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMz 173 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMz 174 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMz 175 | MzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMz 176 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMz 177 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAD 178 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 179 | IAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 180 | IiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 181 | IiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIi 182 | IiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIi 183 | IiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 184 | IiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIi 185 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIi 186 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 187 | MzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 188 | MzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMz 189 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMz 190 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMz 191 | MzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMz 192 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMz 193 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAD 194 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 195 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 196 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 197 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 198 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 199 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 200 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVVVV 201 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVV 202 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERE 203 | RERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERERERERERERERERERE 204 | REREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERE 205 | RERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERE 206 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERE 207 | REREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERE 208 | RERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERE 209 | RERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAE 210 | REREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 211 | UAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 212 | VVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 213 | VVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVV 214 | VVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVV 215 | VVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVV 216 | VVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVV 217 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVV 218 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERE 219 | RERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERERERERERERERERERE 220 | REREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERE 221 | RERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERE 222 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERE 223 | REREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERE 224 | RERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERE 225 | RERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAE 226 | REREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 227 | UAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 228 | VVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 229 | VVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVV 230 | VVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVV 231 | VVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVV 232 | VVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVV 233 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVV 234 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERE 235 | RERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERERERERERERERERERE 236 | REREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERE 237 | RERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERE 238 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERE 239 | REREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERE 240 | RERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERE 241 | RERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAE 242 | REREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 243 | UAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 244 | VVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 245 | VVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVV 246 | VVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVV 247 | VVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVV 248 | VVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVV 249 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVV 250 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERE 251 | RERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERERERERERERERERERE 252 | REREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERE 253 | RERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERE 254 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERE 255 | REREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERE 256 | RERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERE 257 | RERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAE 258 | REREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 259 | UAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 260 | VVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 261 | VVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVV 262 | VVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVV 263 | VVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVV 264 | VVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVV 265 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERAAA 266 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 267 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 268 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 269 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 270 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 271 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 272 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 273 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 274 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 275 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 276 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 277 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 278 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 279 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 280 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 281 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 282 | AAAAAAAH4AAAAAAAAAD///////////////////////////////////////////////////////////// 283 | //////////////////////////////////////////////////////////////////8AAAAAAAAAB+AA 284 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 285 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 286 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 287 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 288 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 289 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 290 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 291 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 292 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 293 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 294 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 295 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 296 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 297 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 298 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 299 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 300 | AAAAAAAAKAAAAEgAAACQAAAAAQAEAAAAAACADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A76QAAAC5 301 | /wAAun8AIlDyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIiIiIiIi 302 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 303 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 304 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 305 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 306 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 307 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 308 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 309 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 310 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 311 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 312 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 313 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 314 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 315 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 316 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 317 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 318 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 319 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 320 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 321 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 322 | MzMzMzMzMzMzMzMzMzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 323 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 324 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVVVVVVVVVVVVVVVVVVVVQAARERE 325 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 326 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 327 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 328 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 329 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 330 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 331 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 332 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 333 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 334 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 335 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 336 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 337 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 338 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 339 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 340 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 341 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 342 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 343 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 344 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 345 | REQAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 346 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 347 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 348 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 349 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 350 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 351 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAD///////////8A 352 | AAD///////////8AAAD///////////8AAAD///////////8AAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 353 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 354 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 355 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 356 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 357 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 358 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 359 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAoAAAAMAAAAGAAAAABAAQAAAAAAAAGAAAAAAAAAAAAAAAA 360 | AAAAAAAAAAAAAP///wDvpAAAALn/AAC6fwAiUPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 361 | AAAAAAAAAAAAACIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIi 362 | IiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMz 363 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIi 364 | IiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMz 365 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIi 366 | IiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMz 367 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIi 368 | IiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMz 369 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIi 370 | IiIiIiIiIiIiIAMzMzMzMzMzMzMzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 371 | AAAAAAAAAAAAAFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVV 372 | VVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARE 373 | RERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVV 374 | VVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARE 375 | RERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVV 376 | VVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARE 377 | RERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVV 378 | VVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARE 379 | RERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVV 380 | VVVVVVVVVVVVUARERERERERERERERAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAA 381 | AAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAA 382 | AYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAA 383 | AAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAD///////8AAP///////wAAAAABgAAAAAAAAAGAAAAAAAAA 384 | AYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAA 385 | AAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAA 386 | AYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAACgAAAAgAAAAQAAAAAEA 387 | BAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AO+kAAAAuf8AALx7AB9M+QAiUPIA96YAAAC6 388 | fwDzpgAAHk72ACNO9ADzpAAAALx9AAC6fQAAAAAAIiIiIiIiIsADMzMzMzMzMyIiIiIiIiLAAzMzMzMz 389 | MzMiIiIiIiIiwAMzMzMzMzMzIiIiIiIiIsADMzMzMzMzMyIiIiIiIiLAAzMzMzMzMzMiIiIiIiIiwAMz 390 | MzMzMzMzIiIiIiIiIsADMzMzMzMzMyIiIiIiIiLAAzMzMzMzMzMiIiIiIiIiwAMzMzMzMzMzIiIiIiIi 391 | IsADMzMzMzMzMyIiIiIiIiLAAzMzMzMzMzMiIiIiIiIiwAMzMzMzMzMzIiIiIiIiIsADMzMzMzMzMyIi 392 | IiIiIiLAAzMzMzMzMzOZmZmZmZmZcAMzMzMzMzMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 393 | AACqqqqqqqqqUATu7u7u7u7uZmZmZmZmZrANiIiIiIiIiGZmZmZmZmawDYiIiIiIiIhmZmZmZmZmsA2I 394 | iIiIiIiIZmZmZmZmZrANiIiIiIiIiGZmZmZmZmawDYiIiIiIiIhmZmZmZmZmsA2IiIiIiIiIZmZmZmZm 395 | ZrANiIiIiIiIiGZmZmZmZmawDYiIiIiIiIhmZmZmZmZmsA2IiIiIiIiIZmZmZmZmZrANiIiIiIiIiGZm 396 | ZmZmZmawDYiIiIiIiIhmZmZmZmZmsA2IiIiIiIiIZmZmZmZmZrANiIiIiIiIiGZmZmZmZmawDYiIiIiI 397 | iIgAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAAB 398 | gAD//////////wABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAAB 399 | gAAAAYAAAAGAACgAAAAYAAAAMAAAAAEABAAAAAAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AO+k 400 | AAAAuf8AALp/ACJQ8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 401 | AAAAAAAAIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIg 402 | MzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIg 403 | MzMzMzMwIiIiIiIgMzMzMzMwAAAAAAAAAAAAAAAAVVVVVVVQRERERERAVVVVVVVQRERERERAVVVVVVVQ 404 | RERERERAVVVVVVVQRERERERAVVVVVVVQRERERERAVVVVVVVQRERERERAVVVVVVVQRERERERAVVVVVVVQ 405 | RERERERAVVVVVVVQRERERERAVVVVVVVQRERERERAVVVVVVVQRERERERA////AAAQAQAAEAEAABABAAAQ 406 | AQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEA////AAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQ 407 | AQAAEAEAABABAAAQAQAAEAEAKAAAABAAAAAgAAAAAQAEAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 408 | AAD///8A76QAAAC5/wAAun8AHk73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 409 | AAAAAAAAAAAAACIiIiAzMzMwIiIiIDMzMzAiIiIgMzMzMCIiIiAzMzMwIiIiIDMzMzAiIiIgMzMzMCIi 410 | IiAzMzMwAAAAAAAAAABVVVVQREREQFVVVVBERERAVVVVUEREREBVVVVQREREQFVVVVBERERAVVVVUERE 411 | REBVVVVQREREQP//AAABAQAAAQEAAAEBAAABAQAAAQEAAAEBAAABAQAA//8AAAEBAAABAQAAAQEAAAEB 412 | AAABAQAAAQEAAAEBAAA= 413 | 414 | 415 | -------------------------------------------------------------------------------- /EXE2DLL/frm_modify.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | #include "frm_modify.h" 3 | 4 | -------------------------------------------------------------------------------- /EXE2DLL/frm_modify.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace EXE2DLL { 4 | 5 | using namespace System; 6 | using namespace System::ComponentModel; 7 | using namespace System::Collections; 8 | using namespace System::Windows::Forms; 9 | using namespace System::Data; 10 | using namespace System::Drawing; 11 | 12 | /// 13 | /// frm_modify 摘要 14 | /// 15 | public ref class frm_modify : public System::Windows::Forms::Form 16 | { 17 | public: static frm_modify^ MyInstance; 18 | public: 19 | frm_modify(void) 20 | { 21 | InitializeComponent(); 22 | MyInstance = this; 23 | } 24 | 25 | protected: 26 | /// 27 | /// 清理所有正在使用的资源。 28 | /// 29 | ~frm_modify() 30 | { 31 | if (components) 32 | { 33 | delete components; 34 | } 35 | } 36 | private: System::Windows::Forms::Label^ label1; 37 | public: System::Windows::Forms::TextBox^ textBox1; 38 | private: 39 | protected: 40 | 41 | private: System::Windows::Forms::Label^ label2; 42 | public: System::Windows::Forms::TextBox^ textBox2; 43 | private: 44 | public: System::Windows::Forms::TextBox^ textBox3; 45 | 46 | 47 | private: System::Windows::Forms::Label^ label3; 48 | private: System::Windows::Forms::Button^ button1; 49 | private: System::Windows::Forms::ToolTip^ toolTip1; 50 | 51 | private: System::Windows::Forms::Label^ label5; 52 | private: System::ComponentModel::IContainer^ components; 53 | 54 | private: 55 | /// 56 | /// 必需的设计器变量。 57 | /// 58 | 59 | 60 | #pragma region Windows Form Designer generated code 61 | /// 62 | /// 设计器支持所需的方法 - 不要修改 63 | /// 使用代码编辑器修改此方法的内容。 64 | /// 65 | void InitializeComponent(void) 66 | { 67 | this->components = (gcnew System::ComponentModel::Container()); 68 | System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(frm_modify::typeid)); 69 | this->label1 = (gcnew System::Windows::Forms::Label()); 70 | this->textBox1 = (gcnew System::Windows::Forms::TextBox()); 71 | this->label2 = (gcnew System::Windows::Forms::Label()); 72 | this->textBox2 = (gcnew System::Windows::Forms::TextBox()); 73 | this->textBox3 = (gcnew System::Windows::Forms::TextBox()); 74 | this->label3 = (gcnew System::Windows::Forms::Label()); 75 | this->button1 = (gcnew System::Windows::Forms::Button()); 76 | this->toolTip1 = (gcnew System::Windows::Forms::ToolTip(this->components)); 77 | this->label5 = (gcnew System::Windows::Forms::Label()); 78 | this->SuspendLayout(); 79 | // 80 | // label1 81 | // 82 | this->label1->AutoSize = true; 83 | this->label1->Location = System::Drawing::Point(10, 18); 84 | this->label1->Name = L"label1"; 85 | this->label1->Size = System::Drawing::Size(62, 13); 86 | this->label1->TabIndex = 0; 87 | this->label1->Text = L"FuncName:"; 88 | // 89 | // textBox1 90 | // 91 | this->textBox1->Location = System::Drawing::Point(72, 15); 92 | this->textBox1->Name = L"textBox1"; 93 | this->textBox1->Size = System::Drawing::Size(196, 20); 94 | this->textBox1->TabIndex = 1; 95 | this->textBox1->Text = L"e.g. func1/func1@8/@func1@12 "; 96 | this->toolTip1->SetToolTip(this->textBox1, L"Input the function name."); 97 | // 98 | // label2 99 | // 100 | this->label2->AutoSize = true; 101 | this->label2->Location = System::Drawing::Point(10, 44); 102 | this->label2->Name = L"label2"; 103 | this->label2->Size = System::Drawing::Size(56, 13); 104 | this->label2->TabIndex = 2; 105 | this->label2->Text = L"FuncAddr:"; 106 | // 107 | // textBox2 108 | // 109 | this->textBox2->Location = System::Drawing::Point(72, 41); 110 | this->textBox2->Name = L"textBox2"; 111 | this->textBox2->Size = System::Drawing::Size(196, 20); 112 | this->textBox2->TabIndex = 3; 113 | this->textBox2->Text = L"e.g. 0x00012345 (rva-base)"; 114 | // 115 | // textBox3 116 | // 117 | this->textBox3->Location = System::Drawing::Point(72, 67); 118 | this->textBox3->Name = L"textBox3"; 119 | this->textBox3->Size = System::Drawing::Size(196, 20); 120 | this->textBox3->TabIndex = 5; 121 | this->textBox3->Text = L"e.g. .idata"; 122 | // 123 | // label3 124 | // 125 | this->label3->AutoSize = true; 126 | this->label3->Location = System::Drawing::Point(13, 70); 127 | this->label3->Name = L"label3"; 128 | this->label3->Size = System::Drawing::Size(46, 13); 129 | this->label3->TabIndex = 4; 130 | this->label3->Text = L"Section:"; 131 | // 132 | // button1 133 | // 134 | this->button1->Location = System::Drawing::Point(98, 106); 135 | this->button1->Name = L"button1"; 136 | this->button1->Size = System::Drawing::Size(91, 27); 137 | this->button1->TabIndex = 6; 138 | this->button1->Text = L"OK"; 139 | this->button1->UseVisualStyleBackColor = true; 140 | this->button1->Click += gcnew System::EventHandler(this, &frm_modify::button1_Click); 141 | // 142 | // label5 143 | // 144 | this->label5->AutoSize = true; 145 | this->label5->Location = System::Drawing::Point(10, 146); 146 | this->label5->Name = L"label5"; 147 | this->label5->Size = System::Drawing::Size(256, 13); 148 | this->label5->TabIndex = 8; 149 | this->label5->Text = L" Use IDA to obtain the name of the exported function"; 150 | // 151 | // frm_modify 152 | // 153 | this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); 154 | this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; 155 | this->ClientSize = System::Drawing::Size(276, 168); 156 | this->Controls->Add(this->label5); 157 | this->Controls->Add(this->button1); 158 | this->Controls->Add(this->textBox3); 159 | this->Controls->Add(this->label3); 160 | this->Controls->Add(this->textBox2); 161 | this->Controls->Add(this->label2); 162 | this->Controls->Add(this->textBox1); 163 | this->Controls->Add(this->label1); 164 | this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedToolWindow; 165 | this->Icon = (cli::safe_cast(resources->GetObject(L"$this.Icon"))); 166 | this->Name = L"frm_modify"; 167 | this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; 168 | this->Text = L"Modify"; 169 | this->Load += gcnew System::EventHandler(this, &frm_modify::frm_modify_Load); 170 | this->ResumeLayout(false); 171 | this->PerformLayout(); 172 | 173 | } 174 | #pragma endregion 175 | private: System::Void frm_modify_Load(System::Object^ sender, System::EventArgs^ e) 176 | { 177 | this->toolTip1->SetToolTip(this->textBox1, "Input the function name."); 178 | this->toolTip1->SetToolTip(this->textBox2, "Input the function Address." + Environment::NewLine + "You can check from IDA." ); 179 | this->toolTip1->SetToolTip(this->textBox3, "Enter a comment for this function."); 180 | } 181 | private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 182 | { 183 | if (EXE2DLL::EXETODLL::FilePath == nullptr) return; 184 | if (textBox1->Text == "" || textBox2->Text == "") return; 185 | if (modifyflag == true) 186 | { 187 | int funcrva; 188 | sscanf((marshal_as(textBox2->Text)).c_str(), "%x", &funcrva); 189 | EXETODLL::ModifyExtportFuncton(EXE2DLL::EXETODLL::FilePath, gcnew String(EXE2DLL::fun_name.c_str()), textBox1->Text, funcrva); 190 | } 191 | else 192 | { 193 | int hexNumber; 194 | sscanf((marshal_as(textBox2->Text)).c_str(), "%x", &hexNumber); 195 | EXETODLL::AddExtportFuncton(EXE2DLL::EXETODLL::FilePath, textBox3->Text, textBox1->Text, hexNumber); 196 | } 197 | 198 | updatecontrol(); 199 | this->Close(); 200 | } 201 | }; 202 | } 203 | -------------------------------------------------------------------------------- /EXE2DLL/frm_modify.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 125 | 126 | AAABAAYAgIAQAAAAAABoKAAAZgAAAEhIEAAAAAAA6A0AAM4oAAAwMBAAAAAAAGgGAAC2NgAAICAQAAAA 127 | AADoAgAAHj0AABgYEAAAAAAA6AEAAAZAAAAQEBAAAAAAACgBAADuQQAAKAAAAIAAAAAAAQAAAQAEAAAA 128 | AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A76QAAAC5/wAAun8AIlDyAAAAAAAAAAAAAAAAAAAA 129 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAD 130 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 131 | IAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 132 | IiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 133 | IiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIi 134 | IiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIi 135 | IiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 136 | IiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIi 137 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIi 138 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 139 | MzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 140 | MzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMz 141 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMz 142 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMz 143 | MzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMz 144 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMz 145 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAD 146 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 147 | IAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 148 | IiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 149 | IiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIi 150 | IiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIi 151 | IiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 152 | IiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIi 153 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIi 154 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 155 | MzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 156 | MzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMz 157 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMz 158 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMz 159 | MzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMz 160 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMz 161 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAD 162 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 163 | IAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 164 | IiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 165 | IiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIi 166 | IiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIi 167 | IiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 168 | IiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIi 169 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIi 170 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 171 | MzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 172 | MzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMz 173 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMz 174 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMz 175 | MzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMz 176 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMz 177 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAD 178 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 179 | IAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 180 | IiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIi 181 | IiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIi 182 | IiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIi 183 | IiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 184 | IiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIi 185 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIi 186 | IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 187 | MzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz 188 | MzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMz 189 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMzMzMzMzMzMzMzMzMz 190 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAADMzMzMzMzMzMzMzMz 191 | MzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIAAAAzMzMzMzMzMz 192 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAMzMzMz 193 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAD 194 | MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 195 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 196 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 197 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 198 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 199 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 200 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVVVV 201 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVV 202 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERE 203 | RERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERERERERERERERERERE 204 | REREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERE 205 | RERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERE 206 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERE 207 | REREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERE 208 | RERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERE 209 | RERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAE 210 | REREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 211 | UAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 212 | VVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 213 | VVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVV 214 | VVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVV 215 | VVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVV 216 | VVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVV 217 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVV 218 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERE 219 | RERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERERERERERERERERERE 220 | REREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERE 221 | RERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERE 222 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERE 223 | REREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERE 224 | RERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERE 225 | RERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAE 226 | REREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 227 | UAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 228 | VVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 229 | VVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVV 230 | VVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVV 231 | VVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVV 232 | VVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVV 233 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVV 234 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERE 235 | RERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERERERERERERERERERE 236 | REREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERE 237 | RERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERE 238 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERE 239 | REREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERE 240 | RERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERE 241 | RERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAE 242 | REREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 243 | UAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 244 | VVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 245 | VVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVV 246 | VVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVV 247 | VVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVV 248 | VVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVV 249 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVV 250 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERE 251 | RERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERERERERERERERERERE 252 | REREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERE 253 | RERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERE 254 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAERERERERERERERERE 255 | REREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERE 256 | RERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAARERERE 257 | RERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAE 258 | REREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 259 | UAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 260 | VVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 261 | VVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVVVVVVVVVVVVVVVVVV 262 | VVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERFVVVVVVVVVVVVVVVVVV 263 | VVVVVVVVVVVVVVVVVVVVVVAAAARERERERERERERERERERERERERERERERERERERERERVVVVVVVVVVVVV 264 | VVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAEREREREREREREREREREREREREREREREREREREREREVVVVVVVV 265 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAABERERERERERERERERERERERERERERERERERERERERAAA 266 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 267 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 268 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 269 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 270 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 271 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 272 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 273 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 274 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 275 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 276 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 277 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 278 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 279 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 280 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 281 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 282 | AAAAAAAH4AAAAAAAAAD///////////////////////////////////////////////////////////// 283 | //////////////////////////////////////////////////////////////////8AAAAAAAAAB+AA 284 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 285 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 286 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 287 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 288 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 289 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 290 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 291 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 292 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 293 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 294 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 295 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 296 | AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAA 297 | AAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA 298 | AAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA 299 | AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB+AA 300 | AAAAAAAAKAAAAEgAAACQAAAAAQAEAAAAAACADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A76QAAAC5 301 | /wAAun8AIlDyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIiIiIiIi 302 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 303 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 304 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 305 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 306 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 307 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 308 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 309 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 310 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 311 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 312 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 313 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 314 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 315 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 316 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 317 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 318 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 319 | MzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIi 320 | IiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMz 321 | MzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiIiIiIiIiIiIgAAMzMz 322 | MzMzMzMzMzMzMzMzMzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 323 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 324 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVVVVVVVVVVVVVVVVVVVVQAARERE 325 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 326 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 327 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 328 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 329 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 330 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 331 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 332 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 333 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 334 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 335 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 336 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 337 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 338 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 339 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 340 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 341 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 342 | RERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERE 343 | RERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVV 344 | VVVVVVVVVQAARERERERERERERERERERERERVVVVVVVVVVVVVVVVVVVVVVQAARERERERERERERERERERE 345 | REQAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 346 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 347 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 348 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 349 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 350 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 351 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAD///////////8A 352 | AAD///////////8AAAD///////////8AAAD///////////8AAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 353 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 354 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 355 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 356 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 357 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 358 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAA 359 | AAAAAAAAPAAAAAAAAAAAAAAAPAAAAAAAAAAoAAAAMAAAAGAAAAABAAQAAAAAAAAGAAAAAAAAAAAAAAAA 360 | AAAAAAAAAAAAAP///wDvpAAAALn/AAC6fwAiUPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 361 | AAAAAAAAAAAAACIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIi 362 | IiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMz 363 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIi 364 | IiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMz 365 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIi 366 | IiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMz 367 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIi 368 | IiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMz 369 | MzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIiIiIiIiIiIiIiIAMzMzMzMzMzMzMzMyIi 370 | IiIiIiIiIiIiIAMzMzMzMzMzMzMzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 371 | AAAAAAAAAAAAAFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVV 372 | VVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARE 373 | RERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVV 374 | VVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARE 375 | RERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVV 376 | VVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARE 377 | RERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVV 378 | VVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARE 379 | RERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVVVVVVVVVVVVVVUARERERERERERERERFVV 380 | VVVVVVVVVVVVUARERERERERERERERAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAA 381 | AAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAA 382 | AYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAA 383 | AAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAD///////8AAP///////wAAAAABgAAAAAAAAAGAAAAAAAAA 384 | AYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAA 385 | AAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAA 386 | AYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAACgAAAAgAAAAQAAAAAEA 387 | BAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AO+kAAAAuf8AALx7AB9M+QAiUPIA96YAAAC6 388 | fwDzpgAAHk72ACNO9ADzpAAAALx9AAC6fQAAAAAAIiIiIiIiIsADMzMzMzMzMyIiIiIiIiLAAzMzMzMz 389 | MzMiIiIiIiIiwAMzMzMzMzMzIiIiIiIiIsADMzMzMzMzMyIiIiIiIiLAAzMzMzMzMzMiIiIiIiIiwAMz 390 | MzMzMzMzIiIiIiIiIsADMzMzMzMzMyIiIiIiIiLAAzMzMzMzMzMiIiIiIiIiwAMzMzMzMzMzIiIiIiIi 391 | IsADMzMzMzMzMyIiIiIiIiLAAzMzMzMzMzMiIiIiIiIiwAMzMzMzMzMzIiIiIiIiIsADMzMzMzMzMyIi 392 | IiIiIiLAAzMzMzMzMzOZmZmZmZmZcAMzMzMzMzMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 393 | AACqqqqqqqqqUATu7u7u7u7uZmZmZmZmZrANiIiIiIiIiGZmZmZmZmawDYiIiIiIiIhmZmZmZmZmsA2I 394 | iIiIiIiIZmZmZmZmZrANiIiIiIiIiGZmZmZmZmawDYiIiIiIiIhmZmZmZmZmsA2IiIiIiIiIZmZmZmZm 395 | ZrANiIiIiIiIiGZmZmZmZmawDYiIiIiIiIhmZmZmZmZmsA2IiIiIiIiIZmZmZmZmZrANiIiIiIiIiGZm 396 | ZmZmZmawDYiIiIiIiIhmZmZmZmZmsA2IiIiIiIiIZmZmZmZmZrANiIiIiIiIiGZmZmZmZmawDYiIiIiI 397 | iIgAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAAB 398 | gAD//////////wABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAAB 399 | gAAAAYAAAAGAACgAAAAYAAAAMAAAAAEABAAAAAAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AO+k 400 | AAAAuf8AALp/ACJQ8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 401 | AAAAAAAAIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIg 402 | MzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIgMzMzMzMwIiIiIiIg 403 | MzMzMzMwIiIiIiIgMzMzMzMwAAAAAAAAAAAAAAAAVVVVVVVQRERERERAVVVVVVVQRERERERAVVVVVVVQ 404 | RERERERAVVVVVVVQRERERERAVVVVVVVQRERERERAVVVVVVVQRERERERAVVVVVVVQRERERERAVVVVVVVQ 405 | RERERERAVVVVVVVQRERERERAVVVVVVVQRERERERAVVVVVVVQRERERERA////AAAQAQAAEAEAABABAAAQ 406 | AQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEA////AAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQ 407 | AQAAEAEAABABAAAQAQAAEAEAKAAAABAAAAAgAAAAAQAEAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 408 | AAD///8A76QAAAC5/wAAun8AHk73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 409 | AAAAAAAAAAAAACIiIiAzMzMwIiIiIDMzMzAiIiIgMzMzMCIiIiAzMzMwIiIiIDMzMzAiIiIgMzMzMCIi 410 | IiAzMzMwAAAAAAAAAABVVVVQREREQFVVVVBERERAVVVVUEREREBVVVVQREREQFVVVVBERERAVVVVUERE 411 | REBVVVVQREREQP//AAABAQAAAQEAAAEBAAABAQAAAQEAAAEBAAABAQAA//8AAAEBAAABAQAAAQEAAAEB 412 | AAABAQAAAQEAAAEBAAA= 413 | 414 | 415 | -------------------------------------------------------------------------------- /EXE2DLL/icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomms/EXE2DLL_CLR/0e02f89cd3fc5c2aaa0336d194c6aedff3cffc0a/EXE2DLL/icon.bmp -------------------------------------------------------------------------------- /EXE2DLL/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomms/EXE2DLL_CLR/0e02f89cd3fc5c2aaa0336d194c6aedff3cffc0a/EXE2DLL/icon.ico -------------------------------------------------------------------------------- /EXE2DLL/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomms/EXE2DLL_CLR/0e02f89cd3fc5c2aaa0336d194c6aedff3cffc0a/EXE2DLL/icon.jpg -------------------------------------------------------------------------------- /EXE2DLL/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laomms/EXE2DLL_CLR/0e02f89cd3fc5c2aaa0336d194c6aedff3cffc0a/EXE2DLL/icon.png -------------------------------------------------------------------------------- /EXE2DLL/pch.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: source file corresponding to the pre-compiled header 2 | 3 | #include "pch.h" 4 | 5 | // When you are using pre-compiled headers, this source file is necessary for compilation to succeed. 6 | -------------------------------------------------------------------------------- /EXE2DLL/pch.h: -------------------------------------------------------------------------------- 1 | // pch.h: This is a precompiled header file. 2 | // Files listed below are compiled only once, improving build performance for future builds. 3 | // This also affects IntelliSense performance, including code completion and many code browsing features. 4 | // However, files listed here are ALL re-compiled if any one of them is updated between builds. 5 | // Do not add files here that you will be updating frequently as this negates the performance advantage. 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // add headers that you want to pre-compile here 11 | 12 | #endif //PCH_H 13 | -------------------------------------------------------------------------------- /EXE2DLL/read_export_list.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | using namespace std; 8 | 9 | 10 | 11 | 12 | int rva_to_raw(PIMAGE_SECTION_HEADER pSection, int nSectionNum, int nRva) 13 | { 14 | int nRet = 0; 15 | 16 | // 遍历节区 17 | for (int i = 0; i < nSectionNum; i++) { 18 | // 导出表地址在这个节区内 19 | if (pSection[i].VirtualAddress <= nRva && nRva < pSection[i + 1].VirtualAddress) { 20 | // 文件偏移 = 该段的 PointerToRawData + (内存偏移 - 该段起始的RVA(VirtualAddress)) 21 | nRet = nRva - pSection[i].VirtualAddress + pSection[i].PointerToRawData; 22 | break; 23 | } 24 | } 25 | 26 | return nRet; 27 | } 28 | 29 | int printExpTable(const char* strFilePath, std::vector& funlist) 30 | { 31 | 32 | 33 | // 二进制方式读文件 34 | fstream cFile(strFilePath, ios::binary | ios::in); 35 | if (!cFile) { 36 | std::cout << "error: " << strerror(errno) << std::endl; 37 | cout << "打开文件失败" << endl; 38 | return 1; 39 | } 40 | 41 | // 读 dos 头 42 | IMAGE_DOS_HEADER dosHeader; 43 | cFile.read((char*)&dosHeader, sizeof(IMAGE_DOS_HEADER)); 44 | 45 | // 读 nt 头(64位) 46 | IMAGE_NT_HEADERS64 ntHeader; 47 | cFile.seekg(dosHeader.e_lfanew, ios::beg); 48 | cFile.read((char*)&ntHeader, sizeof(IMAGE_NT_HEADERS64)); 49 | if (!ntHeader.OptionalHeader.DataDirectory[0].VirtualAddress) { 50 | cout << "文件没有导出函数" << endl; 51 | cFile.close(); return 2; 52 | } 53 | 54 | // 读节区头 55 | int nSectionNum = ntHeader.FileHeader.NumberOfSections; 56 | shared_ptr pShareSection(new IMAGE_SECTION_HEADER[nSectionNum]); 57 | PIMAGE_SECTION_HEADER pSection = pShareSection.get(); 58 | cFile.read((char*)pSection, sizeof(IMAGE_SECTION_HEADER) * nSectionNum); 59 | 60 | // 计算导出表 RAW 61 | IMAGE_EXPORT_DIRECTORY expDir; 62 | int nExportOffset = rva_to_raw(pSection, nSectionNum, ntHeader.OptionalHeader.DataDirectory[0].VirtualAddress); 63 | if (!nExportOffset) { 64 | cout << "RAW 获取失败" << endl; 65 | cFile.close(); 66 | return 1; 67 | } 68 | 69 | // 读导出表 70 | cFile.seekg(nExportOffset, ios::beg); 71 | cFile.read((char*)&expDir, sizeof(IMAGE_EXPORT_DIRECTORY)); 72 | 73 | // 读导出表头 74 | cFile.seekg(rva_to_raw(pSection, nSectionNum, expDir.Name), ios::beg); 75 | char szExportName[50]; 76 | cFile.get(szExportName, 50); 77 | cout << "IMAGE_EXPORT_DIRECTORY.Name = " << szExportName << endl; 78 | 79 | // 获取到处函数个数 80 | int nAddressNum = expDir.NumberOfFunctions; 81 | 82 | // 获取导出表函数名 83 | shared_ptr pShareName(new int[nAddressNum]); 84 | int* pName = pShareName.get(); 85 | cFile.seekg(rva_to_raw(pSection, nSectionNum, expDir.AddressOfNames), ios::beg); 86 | cFile.read((char*)pName, sizeof(int) * nAddressNum); 87 | 88 | // 获取导出表函数序号 89 | shared_ptr pShareOrder(new short[nAddressNum]); 90 | short* pOrder = pShareOrder.get(); 91 | cFile.seekg(rva_to_raw(pSection, nSectionNum, expDir.AddressOfNameOrdinals), ios::beg); 92 | cFile.read((char*)pOrder, sizeof(short) * nAddressNum); 93 | 94 | // 获取导出表函数地址 95 | shared_ptr pShareFunc(new int[nAddressNum]); 96 | int* pFunc = pShareFunc.get(); 97 | cFile.seekg(rva_to_raw(pSection, nSectionNum, expDir.AddressOfFunctions), ios::beg); 98 | cFile.read((char*)pFunc, sizeof(int) * nAddressNum); 99 | 100 | // 遍历导出表 101 | char szFuncName[50]; 102 | for (int i = 0; i < nAddressNum; i++) { 103 | cFile.seekg(rva_to_raw(pSection, nSectionNum, pName[i]), ios::beg); 104 | cFile.get(szFuncName, 50); 105 | char nFunc[32]; 106 | sprintf_s(nFunc, "0x%s", pFunc[i]); 107 | //std::string FuncRVA(nFunc); 108 | std::string items = std::to_string(i) + "@" + nFunc + "@" + szFuncName; 109 | funlist.push_back(items); 110 | /*cout << "[Index:" << dec << i << "]\t" 111 | << "[ID:" << hex << pOrder[i] << "]\t" 112 | << "[RVA:" << pFunc[i] << "]\t" 113 | << "[Name:" << szFuncName << "]\t" 114 | << endl;*/ 115 | } 116 | 117 | cFile.close(); 118 | } -------------------------------------------------------------------------------- /EXE2DLL/read_export_list.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | 6 | using namespace std; 7 | 8 | 9 | int printExpTable(const char* strFilePath, std::vector& funlist); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EXE2DLL_CLR 2 | 3 | 4 | #Add/Modify Export Function for PE 5 | #Convert Exe To Dll (credit by hasherezade(https://github.com/hasherezade/exe_to_dll)) 6 | 7 | 主要用于IDA分析PE后,将某些内部函数加入到导出表,变成导出函数供调用,并转EXE为DLL文件。 8 | 9 | --------------------------------------------------------------------------------