From fe6ac77dea945d628ba424acc8d32f891a6c5d09 Mon Sep 17 00:00:00 2001 From: Tarek Adel Date: Tue, 5 Mar 2019 21:56:09 +0200 Subject: [PATCH 1/8] Partial Port to MacOSX --- .DS_Store | Bin 0 -> 6148 bytes NativeCore/.DS_Store | Bin 0 -> 8196 bytes NativeCore/ReClassNET_Plugin.hpp | 2 ++ NativeCore/Unix/.DS_Store | Bin 0 -> 8196 bytes NativeCore/Unix/ControlRemoteProcess.cpp | 11 +++++-- NativeCore/Unix/Makefile | 2 +- NativeCore/Unix/OpenRemoteProcess.cpp | 12 ++++++- NativeCore/Unix/ReadRemoteMemory.cpp | 38 +++++++++++++-------- NativeCore/Unix/WriteRemoteMemory.cpp | 40 +++++++++++++++-------- 9 files changed, 73 insertions(+), 32 deletions(-) create mode 100644 .DS_Store create mode 100644 NativeCore/.DS_Store create mode 100644 NativeCore/Unix/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..455e7d23e5162c5c02df16ce59af3d57443fabfa GIT binary patch literal 6148 zcmeHK%Wl&^6ur|1>bRh0QK?;egTx}LQWeMoA%#2^ktjmAf(4+|t_`tp?I?B{K?w4O ze*pe~PvHyr95{DofV?VYg%He*X3jkB8E4M*%y@`MG)KW9QH6*sB*v1BY=v<@rzP9a zEzA>gjD!LTDWNlpmb^`aQNSqhw<*AD_ZqdaY6o)V{$9T!W!*SE^W)Tq4{s26k#2sM zh7!>hJ)kbNs6!9QrOtx)mj!Q&j>)6fc*;xc4l#xE{$g*z-^QpOU*7SzYxc11)`@Sxpq-p%C z?D5i8Ta~t>@h5ynVWmJ9?l6hdlI&`wY;^5A*c2={%&M;Ck&lViE zS@!NF>>ge)k4Ex9>EmAw7slaNW_BD@jjgYMez~me^(n^FC}0%$PZZ$&!9ikdXe<=U ztpl070su>BmWDEaDlo^<*w9!gL=Q|TDo{~{zG4VPN4ul_8X60QicUgbK7@X<&^Htz zpN{bz=}w}d(Bwt|qrkiZo2pvj^S^WX{ePZhYDNL0z(1vcD7D>o6I0S>>(b=-taXr1 rk=WR;P$((L^l>Z;d=&2^NkgB*1ziHS`}2w>LUiL+ueW9_bE zk~Ebs{Q{$E+J2atv()R_klYzXjk2W~y-T*%4w}&&{#I*xZV={jzmuUO!$*&e7{;hE zIyU;KyusV$&<h0Rml!FYEi$!xfl2C+OkXARdaHlv(R=K^`)}wP!xH1-(?PO z7kG;~fwWUr6NZs8QdKjvyE~Vgo3*~UoZFkVcIW1Dv(}Z%U+(RtjHz>%t`(nbZtv`V zv-js;VGbKTbY^;Hx@w-P+4ZLlUp&!y?s321 zwdh*Icb#(6uDh(U64Ga3+1;U4^JGGFi8_yaLzV3&%1rhKq`9wrN}05`xV|3HaHVRF z2X&u&UWo^8=yJB&H@o^UK;JBebhF6TIj*>czPQ*FV!<-?1H=LSl~vpKZPuWL?MI$n zquwGb@G#_?D{h@Lb?4*KEMAs;Dokdt|Bar4C7Zw9?VMK~6SAsO)IPn3COnQ1|=FErp z{(fH{@Z>}Feqmk2QqSq*cz8eW&*qn2N%xGypce-Rgu#n_VKBWf4DOO8QX#A4fpl~< z8VABzxkB6!2fK-9n+S(k_E0)Ul$DIg|8Kti{r{n?rHyC?Gy@+e17vuiyimY<>z>fb z+Z4IBh4l$mQG{Gap;W;}rsIe*9Y>7+FvPxvqCzJhVMig3VEN!L0{;8SLE?Yx15Phaa3IZWiAkB@vAaSb1nM)|?p@$Yk1zgEy11u~g$~IMcL3`mp@E7{e z_!sbIY=QS9KrRTuII_p_`aRFQwX>QH0Jp!)?gIk=Jyx+duCnPUa$RbxTnZyQw2pWn zJ1l0Cw3wx>xi(-5m;$DNDPRhi0)K}Bd}d4Ot$FVItJazVroexxfc!ortYU}3R^IAQ z2OCWRXtz16g?;7$ib;YU23vWnP;&b0!3C%bDTecKUQc8??J(HNTMvixaJaCt3mJ;j z)rm`VI^57(YfS-Dpsj%9?w65bi5x{Of9FARpIBF4wJ5ZYN1Qc7i7B44zGwfG_6Zj3 zP1q~>*<){xdGszo4&?*ZdlA=wTr+$iUa-Z+d>0MAYZ!5TiR3juQ?hpY;dUFio5bbx zdaS-nOewvYs&^S}Hw%@iMbpOtV_6a{D~~%=5p6oTRGH6_GIu+;Vzp1W#)K>6s$YqR zTsgxLzh(45d|$VcXcn(@1&74Wi8}4}P1TAKJ4BR?`~95p7W5`t!y#J596kCv#yk4? zN_X9~y;EE-(&IXgRnZ)0#K^8$(C*<)$1Y=pHSF#h>@&ulV?~xTYPlkl?83KoPbB&p z+nvqW$nGPQGqOP0V3*Ss$GJrh(xwlxJKUE@joWxkZ>RJ>-V?uh0&A!FmNJZa-(sdC za?811;Jo{OLNs30JbJ;|x$gOmm{i}GsgGYXef)`6KXh^lHyw*T|Gf^@ngUG)w*0_A z^8bVN@Bf=H`)&%D0{@T#ZhLex+Gju^w{C?dxpu<(l2wY#tGrbR8%@V)H65q@{)Zv^ Z38xBX7;NP&M_BAdfXZNvDey-X_y$XgMUnsj literal 0 HcmV?d00001 diff --git a/NativeCore/Unix/ControlRemoteProcess.cpp b/NativeCore/Unix/ControlRemoteProcess.cpp index 36c86945..b5013d82 100644 --- a/NativeCore/Unix/ControlRemoteProcess.cpp +++ b/NativeCore/Unix/ControlRemoteProcess.cpp @@ -14,6 +14,13 @@ extern "C" void RC_CallConv ControlRemoteProcess(RC_Pointer handle, ControlRemot { signal = SIGCONT; } - - kill(static_cast(reinterpret_cast(handle)), signal); + #ifdef __linux__ + kill(static_cast(reinterpret_cast(handle)), signal); + #elif __APPLE__ + task_t task; + + task_for_pid(current_task(), (int)id, &task); + return (RC_Pointer)task; + #endif + } diff --git a/NativeCore/Unix/Makefile b/NativeCore/Unix/Makefile index 1a99feff..d744b946 100644 --- a/NativeCore/Unix/Makefile +++ b/NativeCore/Unix/Makefile @@ -1,7 +1,7 @@ WORKDIR = `pwd` CC = gcc -CXX = gcc +CXX = gcc -std=c++17 AR = ar LD = g++ WINDRES = windres diff --git a/NativeCore/Unix/OpenRemoteProcess.cpp b/NativeCore/Unix/OpenRemoteProcess.cpp index 6456760e..26c0fe0e 100644 --- a/NativeCore/Unix/OpenRemoteProcess.cpp +++ b/NativeCore/Unix/OpenRemoteProcess.cpp @@ -1,6 +1,16 @@ #include "NativeCore.hpp" +#include +#include + extern "C" RC_Pointer RC_CallConv OpenRemoteProcess(RC_Pointer id, ProcessAccess desiredAccess) { - return id; + #ifdef __linux__ + return id; + #elif __APPLE__ + task_t task; + + task_for_pid(current_task(), *(int*)&id, &task); + return (RC_Pointer)task; + #endif } diff --git a/NativeCore/Unix/ReadRemoteMemory.cpp b/NativeCore/Unix/ReadRemoteMemory.cpp index 4a647668..834df23d 100644 --- a/NativeCore/Unix/ReadRemoteMemory.cpp +++ b/NativeCore/Unix/ReadRemoteMemory.cpp @@ -1,21 +1,31 @@ #include - +#ifdef __APPLE__ +#include +#include +#include +#endif #include "NativeCore.hpp" extern "C" bool RC_CallConv ReadRemoteMemory(RC_Pointer handle, RC_Pointer address, RC_Pointer buffer, int offset, int size) { - iovec local[1]; - iovec remote[1]; - - local[0].iov_base = (static_cast(buffer) + offset); - local[0].iov_len = size; - remote[0].iov_base = address; - remote[0].iov_len = size; - - if (process_vm_readv(static_cast(reinterpret_cast(handle)), local, 1, remote, 1, 0) != size) - { - return false; - } + #ifdef __linux__ + iovec local[1]; + iovec remote[1]; + + local[0].iov_base = (static_cast(buffer) + offset); + local[0].iov_len = size; + remote[0].iov_base = address; + remote[0].iov_len = size; + + if (process_vm_readv(static_cast(reinterpret_cast(handle)), local, 1, remote, 1, 0) != size) + { + return false; + } + + return true; + #elif __APPLE__ + uint32_t sz; + return vm_read(*(vm_map_t*)&handle, (vm_address_t) address, (vm_size_t) size, (vm_offset_t *)(static_cast(buffer) + offset), &sz) == KERN_SUCCESS; + #endif - return true; } diff --git a/NativeCore/Unix/WriteRemoteMemory.cpp b/NativeCore/Unix/WriteRemoteMemory.cpp index 4f20717a..3cb3b52f 100644 --- a/NativeCore/Unix/WriteRemoteMemory.cpp +++ b/NativeCore/Unix/WriteRemoteMemory.cpp @@ -1,21 +1,33 @@ #include +#ifdef __APPLE__ +#include +#include +#include +#endif #include "NativeCore.hpp" extern "C" bool RC_CallConv WriteRemoteMemory(RC_Pointer handle, RC_Pointer address, RC_Pointer buffer, int offset, int size) { - iovec local[1]; - iovec remote[1]; - - local[0].iov_base = (static_cast(buffer) + offset); - local[0].iov_len = size; - remote[0].iov_base = address; - remote[0].iov_len = size; - - if (process_vm_writev(static_cast(reinterpret_cast(handle)), local, 1, remote, 1, 0) != size) - { - return false; - } - - return true; + + #ifdef __linux__ + iovec local[1]; + iovec remote[1]; + + local[0].iov_base = (static_cast(buffer) + offset); + local[0].iov_len = size; + remote[0].iov_base = address; + remote[0].iov_len = size; + + if (process_vm_writev(static_cast(reinterpret_cast(handle)), local, 1, remote, 1, 0) != size) + { + return false; + } + + return true; + #elif __APPLE__ + uint32_t sz; + return vm_write(*(vm_map_t*)&handle , (vm_address_t) address, (vm_offset_t)(static_cast(buffer) + offset), size) == KERN_SUCCESS; + #endif + } From 468a4f99dd8f95d8a76caef7965d30c8d0f5502e Mon Sep 17 00:00:00 2001 From: Sylvain Martens Date: Tue, 5 Mar 2019 17:35:23 -0500 Subject: [PATCH 2/8] ... --- NativeCore/Unix/.DS_Store | Bin 8196 -> 8196 bytes .../EnumerateRemoteSectionsAndModules.cpp | 4 +- NativeCore/Unix/Makefile | 2 +- .../NativeCore.Unix.xcodeproj/project.pbxproj | 247 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 23054 bytes .../xcschemes/xcschememanagement.plist | 14 + 7 files changed, 272 insertions(+), 2 deletions(-) create mode 100644 NativeCore/Unix/NativeCore.Unix.xcodeproj/project.pbxproj create mode 100644 NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/h3xc0r3.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 NativeCore/Unix/NativeCore.Unix.xcodeproj/xcuserdata/h3xc0r3.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/NativeCore/Unix/.DS_Store b/NativeCore/Unix/.DS_Store index 67081242117acef68659b098101f938aeabd463b..e4c43e557df899f2ba5ada191a765c636b69f829 100644 GIT binary patch delta 162 zcmZp1XmOa}FDl5uz`)4BAi%(o$`Ay^xeWOXB^wK;u}^H^-OSFx!oeuG*-RjjnNf1` z1|f0%P=-8)Ooj>uJs?g7Dop`uDPSl9va)j04TF>Oa|?h50zq9kkO1q^!lS1k16j|8 T$vcJbZNAK7!n~PX;x9V@P+=xJ delta 157 zcmZp1XmOa}FD%5sz`)4BAi%(o;+d15oRpKFw6Sm+`@{zR&Fma39NHjxR)!>oQie>1 z9E2L6C{PPyD-c)w2LlF%%{&5$%u37*`9S4aFvB1U8LWW{UqBU3{wjQrnSnuUa*v2I TW8GvwL2>St2 diff --git a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp index a3ef6d8b..d07fd677 100644 --- a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp +++ b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp @@ -49,8 +49,10 @@ extern "C" void RC_CallConv EnumerateRemoteSectionsAndModules(RC_Pointer handle, intptr_t End = 0; RC_UnicodeChar Path[PATH_MAXIMUM_LENGTH] = {}; }; + + auto inputData = (std::stringstream() << "/proc/" << reinterpret_cast(handle) << "/maps").str(); - std::ifstream input(static_cast(std::stringstream() << "/proc/" << reinterpret_cast(handle) << "/maps").str()); + std::ifstream input(inputData); std::unordered_map modules; diff --git a/NativeCore/Unix/Makefile b/NativeCore/Unix/Makefile index d744b946..17f68c61 100644 --- a/NativeCore/Unix/Makefile +++ b/NativeCore/Unix/Makefile @@ -10,7 +10,7 @@ INC = -I../Dependencies/distorm/include CFLAGS = -Wall -fPIC -DRECLASSNET64=1 RESINC = LIBDIR = -LIB = -lstdc++fs -lstdc++ +LIB = -lstdc++fs -lstdc++ -lc++experimental LDFLAGS = -shared -Wl,--no-undefined INC_DEBUG = $(INC) diff --git a/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.pbxproj b/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.pbxproj new file mode 100644 index 00000000..174b24a6 --- /dev/null +++ b/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.pbxproj @@ -0,0 +1,247 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXFileReference section */ + 3DB0D767222F2E5600A865BF /* IsProcessValid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IsProcessValid.cpp; sourceTree = ""; }; + 3DB0D768222F2E5600A865BF /* CloseRemoteProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CloseRemoteProcess.cpp; sourceTree = ""; }; + 3DB0D769222F2E5600A865BF /* EnumerateProcesses.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EnumerateProcesses.cpp; sourceTree = ""; }; + 3DB0D76A222F2E5600A865BF /* Input.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Input.cpp; sourceTree = ""; }; + 3DB0D76B222F2E5600A865BF /* OpenRemoteProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OpenRemoteProcess.cpp; sourceTree = ""; }; + 3DB0D76C222F2E5700A865BF /* EnumerateRemoteSectionsAndModules.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EnumerateRemoteSectionsAndModules.cpp; sourceTree = ""; }; + 3DB0D76D222F2E5700A865BF /* ReadRemoteMemory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReadRemoteMemory.cpp; sourceTree = ""; }; + 3DB0D76E222F2E5700A865BF /* WriteRemoteMemory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WriteRemoteMemory.cpp; sourceTree = ""; }; + 3DB0D76F222F2E5700A865BF /* ControlRemoteProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ControlRemoteProcess.cpp; sourceTree = ""; }; + 3DB0D770222F2E5700A865BF /* Debugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Debugger.cpp; sourceTree = ""; }; + 3DB0D771222F2E5700A865BF /* DisassembleCode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DisassembleCode.cpp; sourceTree = ""; }; + 3DB0D772222F2E5700A865BF /* NativeCore.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = NativeCore.hpp; sourceTree = ""; }; + 3DB0D773222F2E6800A865BF /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXGroup section */ + 3DB0D75C222F2E4300A865BF = { + isa = PBXGroup; + children = ( + 3DB0D773222F2E6800A865BF /* Makefile */, + 3DB0D768222F2E5600A865BF /* CloseRemoteProcess.cpp */, + 3DB0D76F222F2E5700A865BF /* ControlRemoteProcess.cpp */, + 3DB0D770222F2E5700A865BF /* Debugger.cpp */, + 3DB0D771222F2E5700A865BF /* DisassembleCode.cpp */, + 3DB0D769222F2E5600A865BF /* EnumerateProcesses.cpp */, + 3DB0D76C222F2E5700A865BF /* EnumerateRemoteSectionsAndModules.cpp */, + 3DB0D76A222F2E5600A865BF /* Input.cpp */, + 3DB0D767222F2E5600A865BF /* IsProcessValid.cpp */, + 3DB0D772222F2E5700A865BF /* NativeCore.hpp */, + 3DB0D76B222F2E5600A865BF /* OpenRemoteProcess.cpp */, + 3DB0D76D222F2E5700A865BF /* ReadRemoteMemory.cpp */, + 3DB0D76E222F2E5700A865BF /* WriteRemoteMemory.cpp */, + ); + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXLegacyTarget section */ + 3DB0D761222F2E4300A865BF /* NativeCore.Unix */ = { + isa = PBXLegacyTarget; + buildArgumentsString = "$(ACTION)"; + buildConfigurationList = 3DB0D764222F2E4300A865BF /* Build configuration list for PBXLegacyTarget "NativeCore.Unix" */; + buildPhases = ( + ); + buildToolPath = /usr/bin/make; + buildWorkingDirectory = /Users/h3xc0r3/Documents/GitHub/ReClass.NET/NativeCore/Unix; + dependencies = ( + ); + name = NativeCore.Unix; + passBuildSettingsInEnvironment = 1; + productName = NativeCore.Unix; + }; +/* End PBXLegacyTarget section */ + +/* Begin PBXProject section */ + 3DB0D75D222F2E4300A865BF /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0940; + ORGANIZATIONNAME = H3XC0R3; + TargetAttributes = { + 3DB0D761222F2E4300A865BF = { + CreatedOnToolsVersion = 9.4.1; + }; + }; + }; + buildConfigurationList = 3DB0D760222F2E4300A865BF /* Build configuration list for PBXProject "NativeCore.Unix" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 3DB0D75C222F2E4300A865BF; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3DB0D761222F2E4300A865BF /* NativeCore.Unix */, + ); + }; +/* End PBXProject section */ + +/* Begin XCBuildConfiguration section */ + 3DB0D762222F2E4300A865BF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + }; + name = Debug; + }; + 3DB0D763222F2E4300A865BF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + }; + name = Release; + }; + 3DB0D765222F2E4300A865BF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEBUGGING_SYMBOLS = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = 8329RW92UW; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 3DB0D766222F2E4300A865BF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = 8329RW92UW; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3DB0D760222F2E4300A865BF /* Build configuration list for PBXProject "NativeCore.Unix" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3DB0D762222F2E4300A865BF /* Debug */, + 3DB0D763222F2E4300A865BF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3DB0D764222F2E4300A865BF /* Build configuration list for PBXLegacyTarget "NativeCore.Unix" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3DB0D765222F2E4300A865BF /* Debug */, + 3DB0D766222F2E4300A865BF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3DB0D75D222F2E4300A865BF /* Project object */; +} diff --git a/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..eadad4df --- /dev/null +++ b/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/h3xc0r3.xcuserdatad/UserInterfaceState.xcuserstate b/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/h3xc0r3.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..4ad3718f8f173572e94ba874d6cd90a6a8c002b3 GIT binary patch literal 23054 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

i~8jhnI4=@rnEmVTXf`V~4WCSlHS? zcYxwv(ah@DQWo4$D>=N1!*GA6&|(b$iOX$o8?aqg8$1Hu!lQ**2hb{Lw0|T`VB<)z zXIRjruMp|yco$p48rfQQH1OAicd};I!q&0%Y&{$b7qDZ%yH|wnuz=+DG6R5~N4SDK z)K%9A9z>83crnB?nc}iafONxqXiWM1OKRXc1h^M?q&$!JQq{mk4`>2eLR-LF>RY?B zjnX#r>F$icnAIXj4zD4|^Kr}Pe>19MJ)N=>Sa2iz!euKSd2G|hHg`%hJBgjlpGp6& z!t+o3aB%MqcTM!*M&f-rReeVA3$FoQ3sl`bginXm7%d?qjCD2T{S3nNy}(Xg%i(5$ zrs?d9fM*5laT7be^|cV}Om?*n1Y~=7}zMCz=WfQ@g z5qfxed)r-~eVu*dnI7JR9^U5g>wFJeZG^NsKZR~;Q?1?nQxM>pfH?auySIqn3H8>P zxCC{Am&HY+c$7jn)0^lW^n3IX`Xrp1FTjcUOF*+-gBO53g4cTWVHAv#Q3IYW3tr@v z%jCh!yb75L#=wk%mw6ch;bw-{d5vKjz#Lr2Y-9E^XIMMfBckD@Td=ZW#f@Pb;3ZoV z*{OhYo59Xv=dgPL;}&8UW*2XlXqRl4YNxPM+Ntdd?27FA1LAG4-B7y{JDpvPUA^5D zyQy~5?Pl0rv%6#Wi``>;*51k9(>}z$lYJNaZh(H{>|d~-X8)r7kM@rpumkPDIuttS z9LgN@4iygXIvjR5>Tt~AxMQeetfSgdeSz<-f67UIHwn!<~zOYwA5+2(`u)+PEAhhoHje{b~@m65KwZ* zoz6R5a{AKgmebEpzdKXTe$E}7dpjpMCpo7$r#YuPtDG~OGo1%G4{{#jJj{8xbE$K= z^9bik=XuUsozFV|<`N7@x=}7;T_(CrcHvy6yUcKzkM+2u8t-7be+ zj=CIkIqq`O<+RILm-8++TyD91<8sI4JD2ZWesKB8<$-IUYl5rJb(-rI*ORWlxjuBW zcXM%ba}&9FyZO3F+ydM}-NM{r+~jWYZW(UHZUfu~xeaj}<~H1|6wrBQw>q~mZVhhZ z-6jH3k8^v$ZL`}Ex9{CO-QxhMH{E@P`^)Yt+*i4;c5iln)qR8eCih+L@4D}EKk9zb z{gV4-_pbnLaNYfe`z^p5{O119{SQDLAQ2^E0C^B5$`P4FOGJA`SH+HEA8~*5l<0s5+4@d^YHMH zdkpoM=CROYsmF4Ul^$z7nmpEdtoL}wW0%K=9!EWnc^vmR<8jX8g2zRVn;y44zV*24 z+0S#B=Wx$b&vMU$o+mvodS3Fp?D>`FRnKod?|R%HIc-s^qB`!nxL-j}_<^1ko=(1-C6 z`FQwv`S|$w`Aqbg?z6~ena>KJRX&YA%|5UCZ1CCY^N!D9pU-`+`_jHnzM;OUzFOa0 z-@d;6e24i~_!@ji`BwWHeaHHa^PS*3$(Q&}@qOL*3qNN+nO};Z!cXa!;g{)`?N{Pg z=~wM%^c(GG_9K2T`pxv4?e~)3V!tJR%luaOt@7LKx6|*a-#x!a5=z2I>?95ncZpcy zDe;#0O8g|fBvF!BNt`4>k|W8L3+NwE9#9cr2&f9E z38)R26fi&Fm4K}Q+W~|5cEFB+T>*On_6EEca3bJTz?pz^0T%);23!ib9Pm}Z)qpzz zzXZAmb_+}h%nPgxJHv51tS_GkAXRLO_8o34SGbO>kpybMULdTZ7*SJ{Wv5 z_(Jf-;7h@mgTD^G8GJkV+u*yw4}$;bz;NKjg&=3MaD$RBUO?4k%f`Pkpm(JMGlD^7C9=iI?@<9 zI?^0jA2~L1T;!{fH>0SiE>V$Dxl#S)F><+FB`=g0%LmGb$V=p9>%lr0rAQ4`SJSr`uN%Lug33>KN$aE{Nead z;=hjnF8=2Pl+Zb$PeMdOR6=Y*d_v!Z(uC0oQxn!EG$*W2*p%>E!q$W<3Ew2#OZXw- z=Y(Gp=|s0guSDNONn&7PbYgPi(8SV2E^%(+g2Y9MOA$ zjB8o4KKZ5O70Isv+O;`(ee%ZS*OT`oe~^4A`QzlH$)}RfCZA8fn0zV4KBYrSY)WcM zdWt$llTwsYo>GxAGNn4DHpQG$pVE*rBV~5V+>`|=i&K`StVmgvvN~l;%FdM2DK}H8 z)R5HPshZRxK+smCj!dmitxYwj)~7b4&Pbh=`cmq=)CH-FQeRG8nz}r7f9h9hEMRQ= zrdiTfrEN;vnzlXdt+ZWfd(!r%y_fcB+O@PBX}8nvq}@xqpZ0s&Uka>X6m|+vg^$8d z5uoUy=%ok)WUfNdSJ6*Vs3=xUSIko^RJ^QMs@SgBr}#*5L~%@ULUCGgN%5uPs^Yrh zrsB5Zhjhnuuk_&bUg-d*06cF}dTM%RdUm=ty>EKI^n&!!>2uTHNI#l>A^r38FVeqC zzn1=W`giF+rawskE&ZX=Ug@S3DLs^4$^d1sGDO)~*;N^?j8!U?*-EXlud<(VfO4>M zsB*ZnR9U60Q%+G%Q_fJ%R=%X1r)*YkSH7WqQ~9>?1LYy*N6I70W6I;o3(7B)Un#FC zzgGUB{7v~#`G@i^6{~VkIjLM#?kb6@ld6v@MkQCps}fb|Dz!?Z%2sJrC8|nQoocLV zoNA(qsHUi9tLCc~sg|ggsa{pRrrN67u6k3oTlKDLpK8DAfa(*~XR5DMS5?)KdBz5{!%-uJ=ET6KXm{gn7gWbsC%iy)OqT1^;Go&^=fsadYyWMdb9d<^>+0> z^?vn1^+)Q%>QB_4s!ynIsvl(7XY|S#l+lneJ!59ZoQ!!H3o{mHtj~BWV@JmBjJ+A} zXMB)xCgW_z-HhKe{>XT&p#T?cukq6OYWy`pnh;GVO&^U+6RnYJ5;RGg3{9b?zh;nT zsAjmPRAbcCYDR0!nkAZM%^uA@&3?^6%}1Ienq!(1n$wzdn$I+sG(T#7*8HmZUGsFEfA3a?kS13djo13d!o3CC!S= ziph%0O32b=X|wXO3bF=d4ayptRgzVjrO&F!vSc-6O~{&@H8tzStXWxevfj$+IS(@`k&aRx(Ik&Z*T5oNzwu82lwwE?S z8>3CvsFO(v}3iCwVd_^?KJHi?L6%Q?PBc`?I!J;+V`~| zX%B0UYL98pXwPdu(_YeE*51+noQrcEa-DKra@}&hbNzDtbAxg_ + + + + SchemeUserState + + NativeCore.Unix.xcscheme + + orderHint + 0 + + + + From c377075c33bbb89b1c631f3f356972467261a198 Mon Sep 17 00:00:00 2001 From: Sylvain Martens Date: Tue, 5 Mar 2019 17:38:10 -0500 Subject: [PATCH 3/8] Update UserInterfaceState.xcuserstate --- .../UserInterfaceState.xcuserstate | Bin 23054 -> 23054 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/h3xc0r3.xcuserdatad/UserInterfaceState.xcuserstate b/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/h3xc0r3.xcuserdatad/UserInterfaceState.xcuserstate index 4ad3718f8f173572e94ba874d6cd90a6a8c002b3..a204dca8ff2c600477b29ada84a92966e4df33a3 100644 GIT binary patch delta 87 zcmeC%!q~TkaYL@4@EwLGhC2_TX>(dzFq&+@<+l00gT5pHy#yed delta 77 zcmeC%!q~TkaYL>k=T3$uhMf(X4f&g6xWyPZ_XtVIvxsMOoSVGDP>s=W^LfK9d}2^F Yjf~a}+CZfaU~DwmfXi+3eFuF>04h!z;Q#;t From 3377b2dffb4f1a3fdfabba8274e881828f6191f8 Mon Sep 17 00:00:00 2001 From: Tarek Adel Date: Wed, 6 Mar 2019 20:09:09 +0200 Subject: [PATCH 4/8] Almost ported --- .DS_Store | Bin 6148 -> 8196 bytes NativeCore/.DS_Store | Bin 8196 -> 10244 bytes NativeCore/Dependencies/.DS_Store | Bin 0 -> 6148 bytes NativeCore/Dependencies/distorm/.DS_Store | Bin 0 -> 8196 bytes NativeCore/Unix/.DS_Store | Bin 8196 -> 8196 bytes NativeCore/Unix/ControlRemoteProcess.cpp | 13 +- NativeCore/Unix/Debugger.cpp | 29 +- NativeCore/Unix/EnumerateProcesses.cpp | 126 ++- .../EnumerateRemoteSectionsAndModules.cpp | 4 + NativeCore/Unix/Makefile | 40 +- .../NativeCore.Unix.xcodeproj/project.pbxproj | 2 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 43673 bytes .../xcschemes/xcschememanagement.plist | 14 + NativeCore/Unix/WriteRemoteMemory.cpp | 1 - NativeCore/Unix/build/.DS_Store | Bin 0 -> 6148 bytes ReClass.NET/.DS_Store | Bin 0 -> 8196 bytes ReClass.NET/Properties/Resources.Designer.cs | 945 +++++------------- ReClass.NET/ReClass.NET.sln | 23 + 18 files changed, 454 insertions(+), 743 deletions(-) create mode 100644 NativeCore/Dependencies/.DS_Store create mode 100644 NativeCore/Dependencies/distorm/.DS_Store create mode 100644 NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/tarek.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 NativeCore/Unix/NativeCore.Unix.xcodeproj/xcuserdata/tarek.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 NativeCore/Unix/build/.DS_Store create mode 100644 ReClass.NET/.DS_Store create mode 100644 ReClass.NET/ReClass.NET.sln diff --git a/.DS_Store b/.DS_Store index 455e7d23e5162c5c02df16ce59af3d57443fabfa..eac07d8cd48dd0f655d38422b4058e70eeda5d1e 100644 GIT binary patch literal 8196 zcmeHM-EJF26h4y%vUXa$X%mtnE>=WHl^R73b($hn)i{a3Drrm|g@m-YYkT4>-RxMq z>x3i(`GyDJ4v=^NuDIZm7l0?=3h@YV%T@ViX5Bdck>CP~=!`Y<&CZ-}e$Jkm*)t|0 zR%q21h-Qe$LX>EaBN-56y^MWfBq_-N8Tdp2)rljmk=G|}3XBGf28;%b28;%b2L1~g zz?m(BHRRmawI($hFdBF+H6Zr~2T@`^!L~-Vbs$kL0B{t=Dj*L(KyjP|^9i;!Dk|F4 z-UCahEO9ZIrla1G;=p`@ZH<~vOw)-aJ+s6^VXAlV93@UHuhFDN14aY=8j!yGMOuN^ z-c+9Zng7lyD*B>U^+gpja#_8Fc1@{RdxDoBqJZ>0jw1nRq_}!u`N^YoJ4rPmo^Yk$!!93r- z96htTM*nx(&!LZ-h*^4bX#1G&x%Si0ic2x(dVo1EV?<%!oImfG^FU7ZFlr`m;iqcT z_o6tP{h5ti7=7WzG0RF@=}YN{t4=eWM zvIt_=3wWr=UY$ea!3SPY7l#GW3hI$+r>rY1D`llB_RPsi?$*Mbv$(W)I_I1$EoJAN z+>M*3rzvat^@ZETNBc*|C!d~v_7x_Ez>?jXq?vVxukkQ&vIpfb@I}x-z2v6oKFsTF z80Z>s9wt%mf35Uo*J~XIL#o?X1`~mE56q1omNd@4!1}+ceu$F1+CgGz?E8+T{c77C zTT7+KFJ5{nV^3VZGBG(ZH8u6}^wiANSFTpZ0# zR}+CAc}6vh$5O~;le2ezhZP~r=I?eg*L23FS)GA*WwVVy1UxmHFX^%rK6S3crq^f_ z+u<>NLEq4K^aK4!ztC^=2ODEHdyQRZId+@fVehgcyUR-KefFWIk95}5tDP=1vK`=% z7u&O{GK1F$)=GqR)3b3hxk+`emB}IO3XTJpTI%|D4{Isu+f$BN&)?JPL|#-rLXNEK0=g1%C$8r3KHdx1C=`t meENqW@(x5LC!b(jBT5kd^@{*={^M(W;5V{4|CL2PAIYC{`31`W delta 128 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jG%ZU^g=(*JK`nnUiMkdX{b P5aU5MGHj0LnZpbKU5OYF diff --git a/NativeCore/.DS_Store b/NativeCore/.DS_Store index 745995b2f2be48782116d63823f5bf81900b1324..83ac4a24686e0169f44f60bb547f155e2ccdce0b 100644 GIT binary patch delta 285 zcmZp1XbF&DU|?W$DortDU{C-uIe-{M3-C-V6q~50$jHAjU^hP_|70Ek>&g5Al9S&H z_H&q;o9ZZ-SXfR@6m$d$@{|P^<>ln(r2{oGZgvq6WrQo)oG2*E$YEk(sG|VX1=es} zNM!O&QDr7E(aHZrD<@Y9XH9-6=FF6yFj-Apd$N}Z-{g34o5_wfVNt zcE-uG#d9_`JZBSR2HFM$3fw@#73AWLh2NPc^UDN^FhTsG0g`59U@!pDlM7^eCqEOj JBhnsrMgY+7Mq2;? delta 292 zcmZn(XmOBWU|?W$DortDU;r^WfEYvza8E20o2aMA$h$FMH$NlqWF7(Q%?W}+j2z|$ z<~j4QL)LAB9*ey=|!0- z{%L8&sU?x|0{q3vMfo{70r|z5C7Jnolh=z(UkbDb+V#ZC3S7i1ONsIQzHNX diff --git a/NativeCore/Dependencies/.DS_Store b/NativeCore/Dependencies/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fe86576970cd3113db3df6cca4bc1b7f8b383a02 GIT binary patch literal 6148 zcmeHK%}T>S5T317w-vDmL65lz9z0aERuLgoJ$Mr$dQj2C6b;0zG^s^vC9k1x0Kz7hcuYy=-KLuBDlxEfHvnY%d zN5{scEX(p_`PjQq9WV2IZ>a_zN}SS9Be=~wl$8JPiQfEgG%2JA*ACx-6H`GJ`M zX5gn8p#8x?C3G$32KCl~gKhy3i|E#ZHvKeGjbqWZm>a|hiZG>!rc~G#Lzr^(J2ua? zm>V?ZAZ+s??45<}P=vla&hO}S5UxQUnE__tBLmd?p;YMn-~PV;*GW7u1I)nxWIzmKr8S!D1h&5ZpJC^eHqoW zRzNH8Un;<#4;BuNafMZh;?aSVXaNu#a9J4o*arxXr7*6rDp63ertBVwq7v0&5J|_l z#nTbv3ab(&9f+g@Q9BdWp%Ae<@+^@KBrZ|US^=%VNd@@NrU@os8d8us(!YmEm*sOV z%V7rpQQgDQ_fr^p0FB^)2YGOz3TRr^z}>@SVH61J=&y=pg#HZtw0!jIJ9)W69<9t?iwc zyRY7e%LbyJK+qyT@6T`1J0{9T+V@=M6*0nD^$>s$`J+;iE{q%&R%QLG5~<5`@*C;| zkPo#J@YOVHXCM-7y3~BR#cXYBZ|!L9?7Y&|-PzOIdo^pe=j{Ai(dTz_g1O93xMjLf z^qoSwWak~PI3Lo@Fzsy9tl4%fb%qvR94yUll`yB{U_q3d@+tL1z3G*efQIvj{7lwt z3GzO3-4qL)&|zL?F~D<~4C#8(TVc542A;#|5)TD))DI9(aON|%@7rFHCbpJbJ4fAV zFTui)t@BJ?Ezi7^PkE(z2Yr4mvGMPCO3-5QM>VHUIwr)V!-K_T;TtBI^_WK^kyt#X zq6YNCeRvFWum;=k8s5PkyoZnQ1-`)#(nxy9b<$6U$ru?Y56M$9LuN^aJSPj1UspT! z*Hk?Pq=1gPr$>*w#WRo*)7CS3{dt;QSP*ms@x9{{O-0|No!g7t}jz1+)TZ zt^jG6Oiw0oo7yY>_>R2Sws0)t;KuW+5(Nb(p2F8fJC3N@aj|BpSX^OMqM#y2P!RoQie>1 z9E2L6C{PPyD-c)w2Lqr8ipr$&;sTIqK+%&)1v#0;B?bo98JU<_SlQS)IJh{tc)4PO zGxE!WOA<>;i=7gSqCvcX#FC68C_5xSKc^nfNlXgMOf8QW5OL1WD@n}EODzKH&P+)K zDv1ft%uC5Hcgio#ODP5$6bzBz;Naxoj2Doot~RkS)KM@sH?7rCs5Un@&`~fkHmj}W zmP}>b%r5brW%6lZ KX_E9!Vgvx4?T-Nf delta 69 zcmZp1XmOa}FDl5uz`)4BAi%(o$`Ay^xeWOXB^wK;u}^H^-OSFx!oeuG*;sH2^JGcU Y$jLKAZ*9KJW5T?dUE({-#!5D305l{LQvd(} diff --git a/NativeCore/Unix/ControlRemoteProcess.cpp b/NativeCore/Unix/ControlRemoteProcess.cpp index b5013d82..94cbf5a2 100644 --- a/NativeCore/Unix/ControlRemoteProcess.cpp +++ b/NativeCore/Unix/ControlRemoteProcess.cpp @@ -1,6 +1,12 @@ //#include #include +#if __APPLE__ +#include +#include +#include +#include +#endif #include "NativeCore.hpp" extern "C" void RC_CallConv ControlRemoteProcess(RC_Pointer handle, ControlRemoteProcessAction action) @@ -14,13 +20,6 @@ extern "C" void RC_CallConv ControlRemoteProcess(RC_Pointer handle, ControlRemot { signal = SIGCONT; } - #ifdef __linux__ kill(static_cast(reinterpret_cast(handle)), signal); - #elif __APPLE__ - task_t task; - - task_for_pid(current_task(), (int)id, &task); - return (RC_Pointer)task; - #endif } diff --git a/NativeCore/Unix/Debugger.cpp b/NativeCore/Unix/Debugger.cpp index a4a74241..bbf6d485 100644 --- a/NativeCore/Unix/Debugger.cpp +++ b/NativeCore/Unix/Debugger.cpp @@ -1,14 +1,19 @@ -#include + #include #include #include #include +#ifdef __linux__ +#include #include -#include +#endif + #include "NativeCore.hpp" +#ifdef __linux__ namespace fs = std::experimental::filesystem; +#endif int ualarm(unsigned int milliseconds) { @@ -24,6 +29,7 @@ int ualarm(unsigned int milliseconds) pid_t waitpid_timeout(pid_t pid, int* status, int options, int timeoutInMilliseconds, bool& timedOut) { + #ifdef __linux__ struct sigaction sig = {}; sig.sa_flags = 0; sig.sa_handler = [](int) {}; @@ -44,6 +50,9 @@ pid_t waitpid_timeout(pid_t pid, int* status, int options, int timeoutInMillisec timedOut = false; } return res; +#else + return 0; +#endif } pid_t waitpid_timeout(int* status, int timeoutInMilliseconds, bool& timedOut) @@ -54,25 +63,27 @@ pid_t waitpid_timeout(int* status, int timeoutInMilliseconds, bool& timedOut) extern "C" bool RC_CallConv AttachDebuggerToProcess(RC_Pointer id) { //TODO: Attach to all threads. - +#ifdef __linux__ ptrace(PTRACE_ATTACH, static_cast(reinterpret_cast(id)), nullptr, nullptr); waitpid(-1, nullptr, 0); ptrace(PTRACE_CONT, static_cast(reinterpret_cast(id)), nullptr, nullptr); - +#endif return false; } extern "C" void RC_CallConv DetachDebuggerFromProcess(RC_Pointer id) { //TODO: Detach to all threads. - +#ifdef __linux__ ptrace(PTRACE_DETACH, static_cast(reinterpret_cast(id)), nullptr, nullptr); +#endif } extern "C" bool RC_CallConv AwaitDebugEvent(DebugEvent* evt, int timeoutInMilliseconds) { +#ifdef __linux__ int status; bool timedOut; @@ -167,10 +178,14 @@ extern "C" bool RC_CallConv AwaitDebugEvent(DebugEvent* evt, int timeoutInMillis } return result; +#else + return false; +#endif } extern "C" void RC_CallConv HandleDebugEvent(DebugEvent* evt) { +#ifdef __linux__ auto tid = static_cast(reinterpret_cast(evt->ThreadId)); siginfo_t si; @@ -194,10 +209,12 @@ extern "C" void RC_CallConv HandleDebugEvent(DebugEvent* evt) ptrace(PTRACE_CONT, tid, nullptr, signal); } +#endif } extern "C" bool RC_CallConv SetHardwareBreakpoint(RC_Pointer id, RC_Pointer address, HardwareBreakpointRegister reg, HardwareBreakpointTrigger type, HardwareBreakpointSize size, bool set) { +#ifdef __linux__ if (reg == HardwareBreakpointRegister::InvalidRegister) { return false; @@ -295,6 +312,6 @@ extern "C" bool RC_CallConv SetHardwareBreakpoint(RC_Pointer id, RC_Pointer addr } } } - +#endif return true; } diff --git a/NativeCore/Unix/EnumerateProcesses.cpp b/NativeCore/Unix/EnumerateProcesses.cpp index f04bcaf1..2e164d56 100644 --- a/NativeCore/Unix/EnumerateProcesses.cpp +++ b/NativeCore/Unix/EnumerateProcesses.cpp @@ -2,47 +2,57 @@ #include #include #include +#ifdef __linux__ #include +#elif __APPLE__ +#include +#include +#endif #include "NativeCore.hpp" +#ifdef __linux__ namespace fs = std::experimental::filesystem; +#endif -// std::filesystem library doesn't work @Ubuntu 16.10, read_symlink() always fails. -#define USE_CUSTOM_READ_SYMLINK - -#ifdef USE_CUSTOM_READ_SYMLINK -#include - -fs::path my_read_symlink(const fs::path& p, std::error_code& ec) -{ - fs::path symlink_path; - - std::string temp(64, '\0'); - for (;; temp.resize(temp.size() * 2)) - { - ssize_t result; - if ((result = ::readlink(p.c_str(), /*temp.data()*/ &temp[0], temp.size())) == -1) - { - ec.assign(errno, std::system_category()); - break; - } - else - { - if (result != static_cast(temp.size())) - { - symlink_path = fs::path(std::string(temp.begin(), temp.begin() + result)); - - ec.clear(); - - break; - } - } - } - - return symlink_path; -} +// std::filesystem library doesn't work @Ubuntu 16.10, read_symlink() always fails. +#ifdef __linux__ + #define USE_CUSTOM_READ_SYMLINK + + #ifdef USE_CUSTOM_READ_SYMLINK + #include + + fs::path my_read_symlink(const fs::path& p, std::error_code& ec) + { + fs::path symlink_path; + + std::string temp(64, '\0'); + for (;; temp.resize(temp.size() * 2)) + { + ssize_t result; + if ((result = ::readlink(p.c_str(), /*temp.data()*/ &temp[0], temp.size())) == -1) + { + ec.assign(errno, std::system_category()); + break; + } + else + { + if (result != static_cast(temp.size())) + { + symlink_path = fs::path(std::string(temp.begin(), temp.begin() + result)); + + ec.clear(); + + break; + } + } + } + + return symlink_path; + } + + #endif #endif enum class Platform @@ -85,7 +95,7 @@ extern "C" void RC_CallConv EnumerateProcesses(EnumerateProcessCallback callback { return; } - +#ifdef __linux__ fs::path procPath("/proc"); if (fs::is_directory(procPath)) { @@ -134,4 +144,50 @@ extern "C" void RC_CallConv EnumerateProcesses(EnumerateProcessCallback callback } } } +#elif __APPLE__ + int procCnt = proc_listpids(PROC_ALL_PIDS, 0, NULL, 0); + pid_t pids[1024]; + memset(pids, 0, sizeof pids); + proc_listpids(PROC_ALL_PIDS, 0, pids, sizeof(pids)); + + for (int i = 0; i < procCnt; i++) + { + if (!pids[i]) continue; + char curPath[PROC_PIDPATHINFO_MAXSIZE]; + char curName[PROC_PIDPATHINFO_MAXSIZE]; + memset(curPath, 0, sizeof curPath); + proc_pidpath(pids[i], curPath, sizeof curPath); + int len = strlen(curPath); + if (len) + { + int pos = len; + while (pos && curPath[pos] != '/') --pos; + strcpy(curName, curPath + pos + 1); + + struct proc_bsdinfo bsd_info; + int error = proc_pidinfo (pids[i], PROC_PIDTBSDINFO, (uint64_t) 0, &bsd_info, PROC_PIDTBSDINFO_SIZE); + if (error == 0) + continue; + + auto platform = Platform::X86; + + if (bsd_info.pbi_flags & PROC_FLAG_LP64) + platform = Platform::X64; + +#ifdef RECLASSNET64 + if (platform == Platform::X64) +#else + if (platform == Platform::X86) +#endif + { + EnumerateProcessData data = {}; + data.Id = (size_t)pids[i]; + MultiByteToUnicode(curPath, data.Path, PATH_MAXIMUM_LENGTH); + MultiByteToUnicode(curName, data.Name, PATH_MAXIMUM_LENGTH); + callbackProcess(&data); + } + + } + } +#endif } diff --git a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp index d07fd677..88b5dd62 100644 --- a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp +++ b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp @@ -38,6 +38,10 @@ std::istream& operator >> (std::istream& s, SectionProtection& protection) extern "C" void RC_CallConv EnumerateRemoteSectionsAndModules(RC_Pointer handle, EnumerateRemoteSectionsCallback callbackSection, EnumerateRemoteModulesCallback callbackModule) { +#ifdef __APPLE__ + return; +#endif + if (callbackSection == nullptr && callbackModule == nullptr) { return; diff --git a/NativeCore/Unix/Makefile b/NativeCore/Unix/Makefile index 17f68c61..cbdd6008 100644 --- a/NativeCore/Unix/Makefile +++ b/NativeCore/Unix/Makefile @@ -10,8 +10,8 @@ INC = -I../Dependencies/distorm/include CFLAGS = -Wall -fPIC -DRECLASSNET64=1 RESINC = LIBDIR = -LIB = -lstdc++fs -lstdc++ -lc++experimental -LDFLAGS = -shared -Wl,--no-undefined +LIB = -lstdc++ +LDFLAGS = --shared -Wl INC_DEBUG = $(INC) CFLAGS_DEBUG = $(CFLAGS) -g @@ -91,31 +91,31 @@ $(OBJDIR_DEBUG)/CloseRemoteProcess.o: CloseRemoteProcess.cpp $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c CloseRemoteProcess.cpp -o $(OBJDIR_DEBUG)/CloseRemoteProcess.o $(OBJDIR_DEBUG)/decoder.o: ../Dependencies/distorm/src/decoder.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/decoder.c -o $(OBJDIR_DEBUG)/decoder.o + $(CC) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/decoder.c -o $(OBJDIR_DEBUG)/decoder.o $(OBJDIR_DEBUG)/distorm.o: ../Dependencies/distorm/src/distorm.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/distorm.c -o $(OBJDIR_DEBUG)/distorm.o + $(CC) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/distorm.c -o $(OBJDIR_DEBUG)/distorm.o $(OBJDIR_DEBUG)/instructions.o: ../Dependencies/distorm/src/instructions.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/instructions.c -o $(OBJDIR_DEBUG)/instructions.o + $(CC) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/instructions.c -o $(OBJDIR_DEBUG)/instructions.o $(OBJDIR_DEBUG)/insts.o: ../Dependencies/distorm/src/insts.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/insts.c -o $(OBJDIR_DEBUG)/insts.o + $(CC) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/insts.c -o $(OBJDIR_DEBUG)/insts.o $(OBJDIR_DEBUG)/mnemonics.o: ../Dependencies/distorm/src/mnemonics.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/mnemonics.c -o $(OBJDIR_DEBUG)/mnemonics.o + $(CC) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/mnemonics.c -o $(OBJDIR_DEBUG)/mnemonics.o $(OBJDIR_DEBUG)/operands.o: ../Dependencies/distorm/src/operands.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/operands.c -o $(OBJDIR_DEBUG)/operands.o + $(CC) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/operands.c -o $(OBJDIR_DEBUG)/operands.o $(OBJDIR_DEBUG)/prefix.o: ../Dependencies/distorm/src/prefix.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/prefix.c -o $(OBJDIR_DEBUG)/prefix.o + $(CC) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/prefix.c -o $(OBJDIR_DEBUG)/prefix.o $(OBJDIR_DEBUG)/textdefs.o: ../Dependencies/distorm/src/textdefs.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR_DEBUG)/textdefs.o + $(CC) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR_DEBUG)/textdefs.o $(OBJDIR_DEBUG)/wstring.o: ../Dependencies/distorm/src/wstring.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/wstring.c -o $(OBJDIR_DEBUG)/wstring.o + $(CC) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/wstring.c -o $(OBJDIR_DEBUG)/wstring.o clean_debug: rm -f $(OBJ_DEBUG) $(OUT_DEBUG) @@ -170,31 +170,31 @@ $(OBJDIR_RELEASE)/CloseRemoteProcess.o: CloseRemoteProcess.cpp $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c CloseRemoteProcess.cpp -o $(OBJDIR_RELEASE)/CloseRemoteProcess.o $(OBJDIR_RELEASE)/decoder.o: ../Dependencies/distorm/src/decoder.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/decoder.c -o $(OBJDIR_RELEASE)/decoder.o + $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/decoder.c -o $(OBJDIR_RELEASE)/decoder.o $(OBJDIR_RELEASE)/distorm.o: ../Dependencies/distorm/src/distorm.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/distorm.c -o $(OBJDIR_RELEASE)/distorm.o + $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/distorm.c -o $(OBJDIR_RELEASE)/distorm.o $(OBJDIR_RELEASE)/instructions.o: ../Dependencies/distorm/src/instructions.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/instructions.c -o $(OBJDIR_RELEASE)/instructions.o + $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/instructions.c -o $(OBJDIR_RELEASE)/instructions.o $(OBJDIR_RELEASE)/insts.o: ../Dependencies/distorm/src/insts.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/insts.c -o $(OBJDIR_RELEASE)/insts.o + $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/insts.c -o $(OBJDIR_RELEASE)/insts.o $(OBJDIR_RELEASE)/mnemonics.o: ../Dependencies/distorm/src/mnemonics.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/mnemonics.c -o $(OBJDIR_RELEASE)/mnemonics.o + $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/mnemonics.c -o $(OBJDIR_RELEASE)/mnemonics.o $(OBJDIR_RELEASE)/operands.o: ../Dependencies/distorm/src/operands.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/operands.c -o $(OBJDIR_RELEASE)/operands.o + $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/operands.c -o $(OBJDIR_RELEASE)/operands.o $(OBJDIR_RELEASE)/prefix.o: ../Dependencies/distorm/src/prefix.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/prefix.c -o $(OBJDIR_RELEASE)/prefix.o + $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/prefix.c -o $(OBJDIR_RELEASE)/prefix.o $(OBJDIR_RELEASE)/textdefs.o: ../Dependencies/distorm/src/textdefs.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR_RELEASE)/textdefs.o + $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR_RELEASE)/textdefs.o $(OBJDIR_RELEASE)/wstring.o: ../Dependencies/distorm/src/wstring.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/wstring.c -o $(OBJDIR_RELEASE)/wstring.o + $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/wstring.c -o $(OBJDIR_RELEASE)/wstring.o clean_release: rm -f $(OBJ_RELEASE) $(OUT_RELEASE) diff --git a/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.pbxproj b/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.pbxproj index 174b24a6..1d97faa0 100644 --- a/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.pbxproj +++ b/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.pbxproj @@ -52,7 +52,7 @@ buildPhases = ( ); buildToolPath = /usr/bin/make; - buildWorkingDirectory = /Users/h3xc0r3/Documents/GitHub/ReClass.NET/NativeCore/Unix; + buildWorkingDirectory = /Users/tarek/ReClass.NET/NativeCore/Unix; dependencies = ( ); name = NativeCore.Unix; diff --git a/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/tarek.xcuserdatad/UserInterfaceState.xcuserstate b/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/tarek.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..0d2293cf0d49ab4523e070ddf524d00cfea26ebb GIT binary patch literal 43673 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 + + + + SchemeUserState + + NativeCore.Unix.xcscheme + + orderHint + 0 + + + + diff --git a/NativeCore/Unix/WriteRemoteMemory.cpp b/NativeCore/Unix/WriteRemoteMemory.cpp index 3cb3b52f..68d3d118 100644 --- a/NativeCore/Unix/WriteRemoteMemory.cpp +++ b/NativeCore/Unix/WriteRemoteMemory.cpp @@ -26,7 +26,6 @@ extern "C" bool RC_CallConv WriteRemoteMemory(RC_Pointer handle, RC_Pointer addr return true; #elif __APPLE__ - uint32_t sz; return vm_write(*(vm_map_t*)&handle , (vm_address_t) address, (vm_offset_t)(static_cast(buffer) + offset), size) == KERN_SUCCESS; #endif diff --git a/NativeCore/Unix/build/.DS_Store b/NativeCore/Unix/build/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..eabc0e3255eb2c59b802ae973d53664edb2b12e4 GIT binary patch literal 6148 zcmeHK!A=`75FJARC#WKaN^tZAi9-&FfCdR6tx|g6R%sDE0D@h11uHFUl-)FfG-!XL z{eyl=zo4H}X6z|i61YNyJkt1$$1`60N%pJ(K=cMt2cQW65|yylz~&jDandQ7W6vU@ zFmqfUr1~OEbvPC49F76U!0a(VXLkW2h#`alRL?J63A?Bp|BRTWS0ckM;2@rT$8ChZc55Lf;Z1KC_&r+RTqL(t3ppP`Ar~%{NjeYs)^|LO4r0TCn!TsoXji(d<^9B%&yQa%rW2?cq<0zeo&}{9%E_ITpie$Cjep% z-A2%+YDhVX(PJzv;s}bcsfadJ@DoGWbo48Z^B7BuHXQ^%J_LVR@C!wlujBm6goE%b zy4Eq^78; literal 0 HcmV?d00001 diff --git a/ReClass.NET/.DS_Store b/ReClass.NET/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a6c2f59818e4086a0af4b6960e4e086f3d05918b GIT binary patch literal 8196 zcmeHM?@rTD6hGYtbc01=OyHC07ZX1a0ujW-n9Kp1C2EMnKZzPxw>gTXUDl3)b7o(B z2lWkn6MX_-!MD)gIW6S2+Y&z+3HLVlp054k!h>UW#u}ZW^L?$ZR`B^k$ z3g72CQZn(C>#zp+L`@2C>`;w5BWQg=E1(t73TOqi0$PFpK>>WTxtJ5a`_Wz9Y6Y|c zmr?vVroFC}Uwf%I*d2c>EuB+jW9) zW#y-l$>ye}XH2tT7K(*8)dRm*4QpXHDAzi#_}5M?Jh0>QUEg=l&ujK`r`g+^zqaXn zVa@TH9U(i7CLph0I9|i=mHn>Q2&A8Cbi*|BW`1vevEN_2v$|xhZ>$fNtp3Kv%96Eq z>-J!fHy3WK-mB~%oxbmX7<~M~%HRzYzp3a-^!vR1inCaR<7&rqeXqrE)FN#{#s-9c zi0W|yu$2*9>kWpG`o}^Lbncy{%@GiA*j7%trL&X=Q|4^b2Fim(;jfuf9l^CYz0V_mDBS=J% zLRQdU8{UM;c-ij+a+)5Y&xt-KuqHi*8t>pUPk%S932SbgDE>|Z--Ng9^J&r#Vvkj9 zQN>af%5!#QW+a&sfy$hwCz3ITj?*5o>WNXNfQ{zeIIVvvzGs26=`cCAc&(ylum$K! z&hen9vm&0V=mO9kQJZJ`(YSdl9;+N4fjNgzvYyT+E1r3&czrfP8|V(64F@(IDU?re zuF_MWHW5cnHZ_-_(KhWy-eC^O=t&(ovP2(w=_7!jUEu4ZqjFpc#w>E&goo^-hxs@0 zDb9RX;+p~M6w28c$sHS+iq6n8s*Lem#pHltAKVm<{Z(;zP3Uq_705=8FY@|-d-DGO zMGa5;trgG;{DlHWZmYUg2Jq}J)-;FL+7{|QDi_8LBP$d%vK)t%6_kI!5um^S`ui_a?@~8^0K48FTmS$7 literal 0 HcmV?d00001 diff --git a/ReClass.NET/Properties/Resources.Designer.cs b/ReClass.NET/Properties/Resources.Designer.cs index b7b4c929..a91ef309 100644 --- a/ReClass.NET/Properties/Resources.Designer.cs +++ b/ReClass.NET/Properties/Resources.Designer.cs @@ -10,48 +10,35 @@ namespace ReClassNET.Properties { using System; + using System.Reflection; - ///

- /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { - private static global::System.Resources.ResourceManager resourceMan; + private static System.Resources.ResourceManager resourceMan; - private static global::System.Globalization.CultureInfo resourceCulture; + private static System.Globalization.CultureInfo resourceCulture; - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Resources() { } - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + internal static System.Resources.ResourceManager ResourceManager { get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ReClassNET.Properties.Resources", typeof(Resources).Assembly); + if (object.Equals(null, resourceMan)) { + System.Resources.ResourceManager temp = new System.Resources.ResourceManager("ReClassNET.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + internal static System.Globalization.CultureInfo Culture { get { return resourceCulture; } @@ -60,599 +47,426 @@ internal Resources() { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Accept { + internal static System.Drawing.Bitmap B16x16_Tree_Collapse { get { - object obj = ResourceManager.GetObject("B16x16_Accept", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Tree_Collapse", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Array_Type { + internal static System.Drawing.Bitmap B32x32_Plugin { get { - object obj = ResourceManager.GetObject("B16x16_Array_Type", resourceCulture); + object obj = ResourceManager.GetObject("B32x32_Plugin", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Arrow_Refresh { + internal static System.Drawing.Bitmap B16x16_Button_Class_Add { get { - object obj = ResourceManager.GetObject("B16x16_Arrow_Refresh", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Class_Add", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Add { + internal static System.Drawing.Bitmap B16x16_Table_Gear { get { - object obj = ResourceManager.GetObject("B16x16_Button_Add", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Table_Gear", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_1024 { + internal static System.Drawing.Bitmap B16x16_Button_Pointer_Array { get { - object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_1024", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Pointer_Array", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_2048 { + internal static System.Drawing.Bitmap B16x16_Enum_Type { get { - object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_2048", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Enum_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_256 { + internal static System.Drawing.Bitmap B16x16_Chart_Delete { get { - object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_256", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Chart_Delete", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_4 { + internal static System.Drawing.Bitmap B16x16_Button_VTable { get { - object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_4", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_VTable", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_4096 { + internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_4096 { get { - object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_4096", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_4096", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_64 { + internal static System.Drawing.Bitmap B16x16_Button_Hex_8 { get { - object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_64", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Hex_8", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_8 { + internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_X { get { - object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_8", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_X", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_X { + internal static System.Drawing.Bitmap B16x16_Plugin { get { - object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_X", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Plugin", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Array { + internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_4096 { get { - object obj = ResourceManager.GetObject("B16x16_Button_Array", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_4096", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Bits { + internal static System.Drawing.Bitmap B16x16_Settings_Edit { get { - object obj = ResourceManager.GetObject("B16x16_Button_Bits", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Settings_Edit", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Bool { + internal static System.Drawing.Bitmap B16x16_Closed_Icon { get { - object obj = ResourceManager.GetObject("B16x16_Button_Bool", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Closed_Icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Class_Add { + internal static System.Drawing.Bitmap B16x16_Button_Class_Pointer { get { - object obj = ResourceManager.GetObject("B16x16_Button_Class_Add", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Class_Pointer", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Class_Instance { + internal static System.Drawing.Bitmap B16x16_Text_List_Bullets { get { - object obj = ResourceManager.GetObject("B16x16_Button_Class_Instance", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Text_List_Bullets", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Class_Pointer { + internal static System.Drawing.Bitmap B16x16_Page_Code_Csharp { get { - object obj = ResourceManager.GetObject("B16x16_Button_Class_Pointer", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Page_Code_Csharp", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Class_Remove { + internal static System.Drawing.Bitmap B16x16_Button_UText { get { - object obj = ResourceManager.GetObject("B16x16_Button_Class_Remove", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_UText", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Delete { + internal static System.Drawing.Bitmap B16x16_Error { get { - object obj = ResourceManager.GetObject("B16x16_Button_Delete", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Error", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Double { + internal static System.Drawing.Bitmap B16x16_Interface_Type { get { - object obj = ResourceManager.GetObject("B16x16_Button_Double", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Interface_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Drop_Down { + internal static System.Drawing.Bitmap B16x16_Button_Matrix_3x4 { get { - object obj = ResourceManager.GetObject("B16x16_Button_Drop_Down", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Matrix_3x4", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Float { + internal static System.Drawing.Bitmap B16x16_Folder_Add { get { - object obj = ResourceManager.GetObject("B16x16_Button_Float", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Folder_Add", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Function { + internal static System.Drawing.Bitmap B16x16_Button_Text { get { - object obj = ResourceManager.GetObject("B16x16_Button_Function", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Text", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Function_Pointer { + internal static System.Drawing.Bitmap B16x16_Button_Int_64 { get { - object obj = ResourceManager.GetObject("B16x16_Button_Function_Pointer", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Int_64", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Hex_16 { + internal static System.Drawing.Bitmap B16x16_Button_UText_Pointer { get { - object obj = ResourceManager.GetObject("B16x16_Button_Hex_16", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_UText_Pointer", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Hex_32 { + internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_256 { get { - object obj = ResourceManager.GetObject("B16x16_Button_Hex_32", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_256", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Hex_64 { + internal static System.Drawing.Bitmap B16x16_Text_Type { get { - object obj = ResourceManager.GetObject("B16x16_Button_Hex_64", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Text_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Hex_8 { + internal static System.Drawing.Bitmap B16x16_Button_Bits { get { - object obj = ResourceManager.GetObject("B16x16_Button_Hex_8", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Bits", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_1024 { + internal static System.Drawing.Bitmap B16x16_Pointer_Type { get { - object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_1024", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Pointer_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_2048 { + internal static System.Drawing.Bitmap B16x16_Double_Type { get { - object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_2048", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Double_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_256 { + internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_64 { get { - object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_256", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_64", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_4 { + internal static System.Drawing.Bitmap B16x16_Array_Type { get { - object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_4", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Array_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_4096 { + internal static System.Drawing.Bitmap B16x16_Custom_Type { get { - object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_4096", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Custom_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_64 { + internal static System.Drawing.Bitmap B16x16_Button_UInt_16 { get { - object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_64", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_UInt_16", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_8 { + internal static System.Drawing.Bitmap B16x16_Page_Code { get { - object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_8", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Page_Code", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_X { + internal static System.Drawing.Bitmap B16x16_Arrow_Refresh { get { - object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_X", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Arrow_Refresh", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Int_16 { + internal static System.Drawing.Bitmap B16x16_Save { get { - object obj = ResourceManager.GetObject("B16x16_Button_Int_16", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Save", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Int_32 { + internal static System.Drawing.Bitmap B16x16_Button_Matrix_3x3 { get { - object obj = ResourceManager.GetObject("B16x16_Button_Int_32", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Matrix_3x3", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Int_64 { + internal static System.Drawing.Bitmap B16x16_Gear { get { - object obj = ResourceManager.GetObject("B16x16_Button_Int_64", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Gear", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Int_8 { + internal static System.Drawing.Bitmap B16x16_Page_Code_Add { get { - object obj = ResourceManager.GetObject("B16x16_Button_Int_8", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Page_Code_Add", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Matrix_3x3 { + internal static System.Drawing.Bitmap B16x16_Page_Paste { get { - object obj = ResourceManager.GetObject("B16x16_Button_Matrix_3x3", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Page_Paste", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Matrix_3x4 { + internal static System.Drawing.Bitmap B16x16_Button_Hex_16 { get { - object obj = ResourceManager.GetObject("B16x16_Button_Matrix_3x4", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Hex_16", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Matrix_4x4 { + internal static System.Drawing.Bitmap B16x16_Tree_Expand { get { - object obj = ResourceManager.GetObject("B16x16_Button_Matrix_4x4", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Tree_Expand", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Pointer { + internal static System.Drawing.Bitmap B16x16_Button_Int_32 { get { - object obj = ResourceManager.GetObject("B16x16_Button_Pointer", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Int_32", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Pointer_Array { + internal static System.Drawing.Bitmap B16x16_Folder { get { - object obj = ResourceManager.GetObject("B16x16_Button_Pointer_Array", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Folder", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Remove { + internal static System.Drawing.Bitmap B32x32_Page_Code { get { - object obj = ResourceManager.GetObject("B16x16_Button_Remove", resourceCulture); + object obj = ResourceManager.GetObject("B32x32_Page_Code", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Text { + internal static System.Drawing.Bitmap B16x16_Button_Delete { get { - object obj = ResourceManager.GetObject("B16x16_Button_Text", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Delete", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Text_Pointer { + internal static System.Drawing.Bitmap B16x16_Pdb { get { - object obj = ResourceManager.GetObject("B16x16_Button_Text_Pointer", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Pdb", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_UInt_16 { + internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_2048 { get { - object obj = ResourceManager.GetObject("B16x16_Button_UInt_16", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_2048", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_UInt_32 { + internal static System.Drawing.Bitmap B16x16_Page_Copy { get { - object obj = ResourceManager.GetObject("B16x16_Button_UInt_32", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Page_Copy", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_UInt_64 { + internal static System.Drawing.Bitmap B16x16_Button_Class_Remove { get { - object obj = ResourceManager.GetObject("B16x16_Button_UInt_64", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Class_Remove", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_UInt_8 { + internal static System.Drawing.Bitmap B16x16_Control_Play { get { - object obj = ResourceManager.GetObject("B16x16_Button_UInt_8", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Control_Play", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_UText { + internal static System.Drawing.Bitmap B16x16_Button_Array { get { - object obj = ResourceManager.GetObject("B16x16_Button_UText", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Array", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_UText_Pointer { + internal static System.Drawing.Bitmap B16x16_Button_Class_Instance { get { - object obj = ResourceManager.GetObject("B16x16_Button_UText_Pointer", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Class_Instance", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Vector_2 { + internal static System.Drawing.Bitmap B16x16_Information { get { - object obj = ResourceManager.GetObject("B16x16_Button_Vector_2", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Information", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Vector_3 { + internal static System.Drawing.Bitmap B16x16_Warning { get { - object obj = ResourceManager.GetObject("B16x16_Button_Vector_3", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Warning", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_Vector_4 { + internal static System.Drawing.Bitmap B16x16_Quit { get { - object obj = ResourceManager.GetObject("B16x16_Button_Vector_4", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Quit", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Button_VTable { + internal static System.Drawing.Bitmap B16x16_Button_Int_8 { get { - object obj = ResourceManager.GetObject("B16x16_Button_VTable", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Int_8", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap B16x16_Button_Matrix_4x4 { + get { + object obj = ResourceManager.GetObject("B16x16_Button_Matrix_4x4", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// internal static System.Drawing.Bitmap B16x16_Camera { get { object obj = ResourceManager.GetObject("B16x16_Camera", resourceCulture); @@ -660,39 +474,27 @@ internal static System.Drawing.Bitmap B16x16_Camera { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Canvas_Size { + internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_4 { get { - object obj = ResourceManager.GetObject("B16x16_Canvas_Size", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_4", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Category { + internal static System.Drawing.Bitmap B16x16_Button_Bool { get { - object obj = ResourceManager.GetObject("B16x16_Category", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Bool", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Chart_Delete { + internal static System.Drawing.Bitmap B16x16_Control_Stop { get { - object obj = ResourceManager.GetObject("B16x16_Chart_Delete", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Control_Stop", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// internal static System.Drawing.Bitmap B16x16_Class_Type { get { object obj = ResourceManager.GetObject("B16x16_Class_Type", resourceCulture); @@ -700,579 +502,404 @@ internal static System.Drawing.Bitmap B16x16_Class_Type { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Closed_Icon { + internal static System.Drawing.Bitmap B32x32_Cogs { get { - object obj = ResourceManager.GetObject("B16x16_Closed_Icon", resourceCulture); + object obj = ResourceManager.GetObject("B32x32_Cogs", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Cogs { + internal static System.Drawing.Bitmap B16x16_Float_Type { get { - object obj = ResourceManager.GetObject("B16x16_Cogs", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Float_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Color_Wheel { + internal static System.Drawing.Bitmap B16x16_Drive_Go { get { - object obj = ResourceManager.GetObject("B16x16_Color_Wheel", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Drive_Go", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Control_Pause { + internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_2048 { get { - object obj = ResourceManager.GetObject("B16x16_Control_Pause", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_2048", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Control_Play { + internal static System.Drawing.Bitmap B16x16_Right_Button { get { - object obj = ResourceManager.GetObject("B16x16_Control_Play", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Right_Button", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Control_Stop { + internal static System.Drawing.Bitmap B16x16_Button_UInt_32 { get { - object obj = ResourceManager.GetObject("B16x16_Control_Stop", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_UInt_32", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Custom_Type { + internal static System.Drawing.Bitmap B16x16_Textfield_Rename { get { - object obj = ResourceManager.GetObject("B16x16_Custom_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Textfield_Rename", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Double_Type { + internal static System.Drawing.Bitmap B16x16_Magnifier_Remove { get { - object obj = ResourceManager.GetObject("B16x16_Double_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Magnifier_Remove", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Drive_Go { + internal static System.Drawing.Bitmap B16x16_Unsigned_Type { get { - object obj = ResourceManager.GetObject("B16x16_Drive_Go", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Unsigned_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Enum_Type { + internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_X { get { - object obj = ResourceManager.GetObject("B16x16_Enum_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_X", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Error { + internal static System.Drawing.Bitmap B32x32_Magnifier { get { - object obj = ResourceManager.GetObject("B16x16_Error", resourceCulture); + object obj = ResourceManager.GetObject("B32x32_Magnifier", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Exchange_Button { + internal static System.Drawing.Bitmap B16x16_Button_Text_Pointer { get { - object obj = ResourceManager.GetObject("B16x16_Exchange_Button", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Text_Pointer", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Eye { + internal static System.Drawing.Bitmap B16x16_Button_Vector_3 { get { - object obj = ResourceManager.GetObject("B16x16_Eye", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Vector_3", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Find_Access { + internal static System.Drawing.Bitmap B16x16_Signed_Type { get { - object obj = ResourceManager.GetObject("B16x16_Find_Access", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Signed_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Find_Write { + internal static System.Drawing.Bitmap B16x16_Button_Function_Pointer { get { - object obj = ResourceManager.GetObject("B16x16_Find_Write", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Function_Pointer", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Float_Type { + internal static System.Drawing.Bitmap B16x16_Button_Hex_32 { get { - object obj = ResourceManager.GetObject("B16x16_Float_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Hex_32", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Folder { + internal static System.Drawing.Bitmap B16x16_Save_As { get { - object obj = ResourceManager.GetObject("B16x16_Folder", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Save_As", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Folder_Add { + internal static System.Drawing.Bitmap B16x16_Button_Vector_4 { get { - object obj = ResourceManager.GetObject("B16x16_Folder_Add", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Vector_4", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Function_Type { + internal static System.Drawing.Bitmap B16x16_Open_Icon { get { - object obj = ResourceManager.GetObject("B16x16_Function_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Open_Icon", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Gear { + internal static System.Drawing.Bitmap B16x16_Left_Button { get { - object obj = ResourceManager.GetObject("B16x16_Gear", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Left_Button", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Help { + internal static System.Drawing.Icon ReClassNet { get { - object obj = ResourceManager.GetObject("B16x16_Help", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); + object obj = ResourceManager.GetObject("ReClassNet", resourceCulture); + return ((System.Drawing.Icon)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Information { + internal static string BuildDate { get { - object obj = ResourceManager.GetObject("B16x16_Information", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); + return ResourceManager.GetString("BuildDate", resourceCulture); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Interface_Type { + internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_8 { get { - object obj = ResourceManager.GetObject("B16x16_Interface_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_8", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Left_Button { + internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_256 { get { - object obj = ResourceManager.GetObject("B16x16_Left_Button", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_256", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Magnifier { + internal static System.Drawing.Bitmap B16x16_Button_UInt_64 { get { - object obj = ResourceManager.GetObject("B16x16_Magnifier", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_UInt_64", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Magnifier_Arrow { + internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_1024 { get { - object obj = ResourceManager.GetObject("B16x16_Magnifier_Arrow", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_1024", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Magnifier_Remove { + internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_1024 { get { - object obj = ResourceManager.GetObject("B16x16_Magnifier_Remove", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_1024", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Matrix_Type { + internal static System.Drawing.Bitmap B16x16_Page_Code_Cpp { get { - object obj = ResourceManager.GetObject("B16x16_Matrix_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Page_Code_Cpp", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Open_Icon { + internal static System.Drawing.Bitmap B16x16_Color_Wheel { get { - object obj = ResourceManager.GetObject("B16x16_Open_Icon", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Color_Wheel", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Page_Code { + internal static System.Drawing.Bitmap B16x16_Category { get { - object obj = ResourceManager.GetObject("B16x16_Page_Code", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Category", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Page_Code_Add { + internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_8 { get { - object obj = ResourceManager.GetObject("B16x16_Page_Code_Add", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_8", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Page_Code_Cpp { + internal static System.Drawing.Bitmap B16x16_Page_White_Stack { get { - object obj = ResourceManager.GetObject("B16x16_Page_Code_Cpp", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Page_White_Stack", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Page_Code_Csharp { + internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_64 { get { - object obj = ResourceManager.GetObject("B16x16_Page_Code_Csharp", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Insert_Bytes_64", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Page_Copy { + internal static System.Drawing.Bitmap B16x16_Button_Vector_2 { get { - object obj = ResourceManager.GetObject("B16x16_Page_Copy", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Vector_2", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Page_Paste { + internal static System.Drawing.Bitmap B16x16_Accept { get { - object obj = ResourceManager.GetObject("B16x16_Page_Paste", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Accept", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Page_White_Stack { + internal static System.Drawing.Bitmap B16x16_Help { get { - object obj = ResourceManager.GetObject("B16x16_Page_White_Stack", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Help", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Pdb { + internal static System.Drawing.Bitmap B16x16_Button_Function { get { - object obj = ResourceManager.GetObject("B16x16_Pdb", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Function", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Plugin { + internal static System.Drawing.Bitmap B16x16_Vector_Type { get { - object obj = ResourceManager.GetObject("B16x16_Plugin", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Vector_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Pointer_Type { + internal static System.Drawing.Bitmap B16x16_Control_Pause { get { - object obj = ResourceManager.GetObject("B16x16_Pointer_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Control_Pause", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Quit { + internal static System.Drawing.Bitmap B16x16_Magnifier { get { - object obj = ResourceManager.GetObject("B16x16_Quit", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Magnifier", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Redo { + internal static System.Drawing.Bitmap B16x16_Exchange_Button { get { - object obj = ResourceManager.GetObject("B16x16_Redo", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Exchange_Button", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Right_Button { + internal static System.Drawing.Bitmap B16x16_Cogs { get { - object obj = ResourceManager.GetObject("B16x16_Right_Button", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Cogs", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Save { + internal static System.Drawing.Bitmap B16x16_Button_Drop_Down { get { - object obj = ResourceManager.GetObject("B16x16_Save", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Drop_Down", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Save_As { + internal static System.Drawing.Bitmap B16x16_Button_UInt_8 { get { - object obj = ResourceManager.GetObject("B16x16_Save_As", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_UInt_8", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Settings_Edit { + internal static System.Drawing.Bitmap B16x16_Button_Hex_64 { get { - object obj = ResourceManager.GetObject("B16x16_Settings_Edit", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Hex_64", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Signed_Type { + internal static System.Drawing.Bitmap B16x16_Button_Int_16 { get { - object obj = ResourceManager.GetObject("B16x16_Signed_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Int_16", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Table_Gear { + internal static System.Drawing.Bitmap B16x16_Button_Float { get { - object obj = ResourceManager.GetObject("B16x16_Table_Gear", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Float", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Text_List_Bullets { + internal static System.Drawing.Bitmap B16x16_Function_Type { get { - object obj = ResourceManager.GetObject("B16x16_Text_List_Bullets", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Function_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Text_Type { + internal static System.Drawing.Bitmap B16x16_Button_Double { get { - object obj = ResourceManager.GetObject("B16x16_Text_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Double", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Textfield_Rename { + internal static System.Drawing.Bitmap B16x16_Matrix_Type { get { - object obj = ResourceManager.GetObject("B16x16_Textfield_Rename", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Matrix_Type", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Tree_Collapse { + internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_4 { get { - object obj = ResourceManager.GetObject("B16x16_Tree_Collapse", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Add_Bytes_4", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Tree_Expand { + internal static System.Drawing.Bitmap B16x16_Find_Access { get { - object obj = ResourceManager.GetObject("B16x16_Tree_Expand", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Find_Access", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Undo { + internal static System.Drawing.Bitmap B16x16_Find_Write { get { - object obj = ResourceManager.GetObject("B16x16_Undo", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Find_Write", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Unsigned_Type { + internal static System.Drawing.Bitmap B16x16_Eye { get { - object obj = ResourceManager.GetObject("B16x16_Unsigned_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Eye", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Vector_Type { + internal static System.Drawing.Bitmap B16x16_Magnifier_Arrow { get { - object obj = ResourceManager.GetObject("B16x16_Vector_Type", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Magnifier_Arrow", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B16x16_Warning { + internal static System.Drawing.Bitmap B32x32_3D_Glasses { get { - object obj = ResourceManager.GetObject("B16x16_Warning", resourceCulture); + object obj = ResourceManager.GetObject("B32x32_3D_Glasses", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B32x32_3D_Glasses { + internal static System.Drawing.Bitmap B32x32_Eye { get { - object obj = ResourceManager.GetObject("B32x32_3D_Glasses", resourceCulture); + object obj = ResourceManager.GetObject("B32x32_Eye", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// internal static System.Drawing.Bitmap B32x32_Canvas_Size { get { object obj = ResourceManager.GetObject("B32x32_Canvas_Size", resourceCulture); @@ -1280,73 +907,45 @@ internal static System.Drawing.Bitmap B32x32_Canvas_Size { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B32x32_Cogs { + internal static System.Drawing.Bitmap B16x16_Canvas_Size { get { - object obj = ResourceManager.GetObject("B32x32_Cogs", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Canvas_Size", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B32x32_Eye { + internal static System.Drawing.Bitmap B16x16_Redo { get { - object obj = ResourceManager.GetObject("B32x32_Eye", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Redo", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B32x32_Magnifier { + internal static System.Drawing.Bitmap B16x16_Undo { get { - object obj = ResourceManager.GetObject("B32x32_Magnifier", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Undo", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B32x32_Page_Code { + internal static System.Drawing.Bitmap B16x16_Button_Add { get { - object obj = ResourceManager.GetObject("B32x32_Page_Code", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Add", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap B32x32_Plugin { + internal static System.Drawing.Bitmap B16x16_Button_Remove { get { - object obj = ResourceManager.GetObject("B32x32_Plugin", resourceCulture); + object obj = ResourceManager.GetObject("B16x16_Button_Remove", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - /// - /// Looks up a localized string similar to 2019/01/16 07:43:27 - ///. - /// - internal static string BuildDate { - get { - return ResourceManager.GetString("BuildDate", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon ReClassNet { + internal static System.Drawing.Bitmap B16x16_Button_Pointer { get { - object obj = ResourceManager.GetObject("ReClassNet", resourceCulture); - return ((System.Drawing.Icon)(obj)); + object obj = ResourceManager.GetObject("B16x16_Button_Pointer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); } } } diff --git a/ReClass.NET/ReClass.NET.sln b/ReClass.NET/ReClass.NET.sln new file mode 100644 index 00000000..abf05752 --- /dev/null +++ b/ReClass.NET/ReClass.NET.sln @@ -0,0 +1,23 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReClass.NET", "ReClass.NET.csproj", "{BFB8917D-E9B4-463F-A6E8-612C35728C78}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BFB8917D-E9B4-463F-A6E8-612C35728C78}.Debug|x86.ActiveCfg = Debug|x86 + {BFB8917D-E9B4-463F-A6E8-612C35728C78}.Debug|x86.Build.0 = Debug|x86 + {BFB8917D-E9B4-463F-A6E8-612C35728C78}.Release|x86.ActiveCfg = Release|x86 + {BFB8917D-E9B4-463F-A6E8-612C35728C78}.Release|x86.Build.0 = Release|x86 + {BFB8917D-E9B4-463F-A6E8-612C35728C78}.Debug|x64.ActiveCfg = Debug|x64 + {BFB8917D-E9B4-463F-A6E8-612C35728C78}.Debug|x64.Build.0 = Debug|x64 + {BFB8917D-E9B4-463F-A6E8-612C35728C78}.Release|x64.ActiveCfg = Release|x64 + {BFB8917D-E9B4-463F-A6E8-612C35728C78}.Release|x64.Build.0 = Release|x64 + EndGlobalSection +EndGlobal From 96da943c6d92405f8cfa959a954ac212d7980c21 Mon Sep 17 00:00:00 2001 From: Tarek Adel Date: Thu, 7 Mar 2019 03:55:51 +0200 Subject: [PATCH 5/8] 90% Ported to macosx --- .DS_Store | Bin 8196 -> 8196 bytes NativeCore/.DS_Store | Bin 10244 -> 10244 bytes NativeCore/Unix/.DS_Store | Bin 8196 -> 8196 bytes .../EnumerateRemoteSectionsAndModules.cpp | 118 +++++++++++++++++- NativeCore/Unix/Makefile | 4 +- .../UserInterfaceState.xcuserstate | Bin 43673 -> 34351 bytes NativeCore/Unix/OpenRemoteProcess.cpp | 7 -- NativeCore/Unix/ReadRemoteMemory.cpp | 7 +- NativeCore/Unix/WriteRemoteMemory.cpp | 20 ++- NativeCore/Unix/build/.DS_Store | Bin 6148 -> 6148 bytes ReClass.NET/Native/NativeMethods.Unix.cs | 6 +- ReClass.NET/Nodes/BaseHexNode.cs | 2 +- ReClass.NET/Program.cs | 2 +- ReClass.NET/ReClass.NET.csproj | 2 +- ReClass.NET/UI/DpiUtil.cs | 7 +- .../ReClass.NET_Launcher.csproj | 2 +- 16 files changed, 153 insertions(+), 24 deletions(-) diff --git a/.DS_Store b/.DS_Store index eac07d8cd48dd0f655d38422b4058e70eeda5d1e..ecaa5dd70f21811d5dd4bd2709d548254c44d961 100644 GIT binary patch delta 475 zcmZp1XmOa}FD%Hwz`)4BAi$8HoRpKF1mp>9ES$zZv4MXxI|mB~CrF-|A&DV#@)H3? zVK9p!FR8q^0IK@b!3n^y_(F>;t2 zfm9fRR3tO*o2(+D#3?2!E+Hx@B_%W2U*wK-ya0c3Mt-?xa(-SwQEFLcYI#H^kR6;^ zl{(o?R820eHlqonEu%f72V)>( y5Mu~qBx4j~G(-&(Fo3{77D_`Y#+1qY!cv<*igq$?W|#QJGPzo0!@xVHjS&DrV`l#V delta 508 zcmZp1XmOa}FUrrrz`)4BAi%(o$B@F13M7*mGB*}ZW1rZ-yP2JXg@ciQvWDPHdj*DE zhJ2uGK0`cEMG-?HLoq`JgC0;%GJ`n~8UdjNg8@*)7|b#OikSkj9zzyTW&UIl0Yyhr z%rF6(V+OLaDkwVnn&4p$6AMEf1ygg=$qR*2H|q%VF(QjNPM#tx zK6#c1H{<5X%S4noMMcHLMI|JqBqv`Kxg#BsnVg>&oLQ9`FTh`%kzei!L~n@L zccddSlk@X}GpkbL1^A0I^2Cgvdq--$qEu`!W;sOA$j?Eshr9V0SsWkIXO~P z(OiI0iBX%;gwdAKp3#HRlhK +#include +#include +#include +#include +#define PATH_MAX 2048 + +unsigned char * +readProcessMemory (int pid, + mach_vm_address_t addr, + mach_msg_type_number_t* size) { + task_t t; + task_for_pid(mach_task_self(), pid, &t); + mach_msg_type_number_t dataCnt = (mach_msg_type_number_t) *size; + vm_offset_t readMem; + + // Use vm_read, rather than mach_vm_read, since the latter is different in + // iOS. + + kern_return_t kr = vm_read(t, // vm_map_t target_task, + addr, // mach_vm_address_t address, + *size, // mach_vm_size_t size + &readMem, //vm_offset_t *data, + &dataCnt); // mach_msg_type_number_t *dataCnt + + if (kr) { + fprintf (stderr, "Unable to read target task's memory @%p - kr 0x%x\n" , + (void *) addr, kr); + return NULL; + } + + return ( (unsigned char *) readMem); +} +#endif + + inline bool operator&(SectionProtection& lhs, SectionProtection rhs) { using T = std::underlying_type_t; @@ -11,6 +48,9 @@ inline bool operator&(SectionProtection& lhs, SectionProtection rhs) return (static_cast(lhs) & static_cast(rhs)) == static_cast(rhs); } + + + template inline std::istream& skip(std::istream& s) { @@ -38,9 +78,7 @@ std::istream& operator >> (std::istream& s, SectionProtection& protection) extern "C" void RC_CallConv EnumerateRemoteSectionsAndModules(RC_Pointer handle, EnumerateRemoteSectionsCallback callbackSection, EnumerateRemoteModulesCallback callbackModule) { -#ifdef __APPLE__ - return; -#endif + if (callbackSection == nullptr && callbackModule == nullptr) { @@ -54,6 +92,8 @@ extern "C" void RC_CallConv EnumerateRemoteSectionsAndModules(RC_Pointer handle, RC_UnicodeChar Path[PATH_MAXIMUM_LENGTH] = {}; }; +#ifdef __linux__ + auto inputData = (std::stringstream() << "/proc/" << reinterpret_cast(handle) << "/maps").str(); std::ifstream input(inputData); @@ -132,4 +172,76 @@ extern "C" void RC_CallConv EnumerateRemoteSectionsAndModules(RC_Pointer handle, callbackModule(&module); } } +#elif __APPLE__ + + task_t task; + task_for_pid(mach_task_self(), (int)handle, &task); + + struct task_dyld_info dyld_info; + vm_address_t address = 0; + mach_msg_type_number_t count = TASK_DYLD_INFO_COUNT; + + if (task_info(task, TASK_DYLD_INFO, (task_info_t)&dyld_info, &count) == KERN_SUCCESS) + { + address = (vm_address_t)dyld_info.all_image_info_addr; + } + + struct dyld_all_image_infos *dyldaii; + mach_msg_type_number_t size = sizeof(dyld_all_image_infos); + vm_offset_t readMem; + kern_return_t kr = vm_read(task, address, size, &readMem, &size); + + if (kr != KERN_SUCCESS) + return; + + dyldaii = (dyld_all_image_infos *) readMem; + int imageCount = dyldaii->infoArrayCount; + mach_msg_type_number_t dataCnt = imageCount * 24; + struct dyld_image_info *g_dii = NULL; + g_dii = (struct dyld_image_info *) malloc (dataCnt); + // 32bit bs 64bit + kern_return_t kr2 = vm_read(task, (vm_address_t)dyldaii->infoArray, dataCnt, &readMem, &dataCnt); + if (kr2) + { + free(g_dii); + return; + } + + struct dyld_image_info *dii = (struct dyld_image_info *) readMem; + + for (int i = 0; i < imageCount; i++) + { + dataCnt = 1024; + vm_read(task, (vm_address_t)dii[i].imageFilePath, dataCnt, &readMem, &dataCnt); + char *imageName = (char *)readMem; + + if (imageName) + { + g_dii[i].imageFilePath = strdup(imageName); + } + else + { + g_dii[i].imageFilePath = NULL; + } + + g_dii[i].imageLoadAddress = dii[i].imageLoadAddress; + + struct stat st; + stat(imageName, &st); + + EnumerateRemoteModuleData module = {}; + module.BaseAddress = (RC_Pointer)dii[i].imageLoadAddress; + module.Size = st.st_size; + MultiByteToUnicode((char*)imageName, module.Path, PATH_MAXIMUM_LENGTH); + callbackModule(&module); + } + + free(g_dii); + + + + + + +#endif } diff --git a/NativeCore/Unix/Makefile b/NativeCore/Unix/Makefile index cbdd6008..98e4d4b2 100644 --- a/NativeCore/Unix/Makefile +++ b/NativeCore/Unix/Makefile @@ -7,11 +7,11 @@ LD = g++ WINDRES = windres INC = -I../Dependencies/distorm/include -CFLAGS = -Wall -fPIC -DRECLASSNET64=1 +CFLAGS = -Wall -fPIC -m32 RESINC = LIBDIR = LIB = -lstdc++ -LDFLAGS = --shared -Wl +LDFLAGS = -m32 --shared -Wl INC_DEBUG = $(INC) CFLAGS_DEBUG = $(CFLAGS) -g diff --git a/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/tarek.xcuserdatad/UserInterfaceState.xcuserstate b/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/tarek.xcuserdatad/UserInterfaceState.xcuserstate index 0d2293cf0d49ab4523e070ddf524d00cfea26ebb..80296d1dd330f4ff274fbc5af8d8b0c1da049f03 100644 GIT binary patch delta 15844 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 ZueIJXm*OBa{}s(M|Lt!6Ls6}_{}1R#UUvWh literal 43673 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 + offset), &sz) == KERN_SUCCESS; + + task_t task; + + task_for_pid(current_task(), (int)handle, &task); + + return vm_read_overwrite((vm_map_t)task, (vm_address_t) address, (vm_size_t) size, (vm_offset_t)(static_cast(buffer) + offset), &sz) == KERN_SUCCESS; #endif } diff --git a/NativeCore/Unix/WriteRemoteMemory.cpp b/NativeCore/Unix/WriteRemoteMemory.cpp index 68d3d118..e66d01d6 100644 --- a/NativeCore/Unix/WriteRemoteMemory.cpp +++ b/NativeCore/Unix/WriteRemoteMemory.cpp @@ -3,6 +3,7 @@ #include #include #include + #endif #include "NativeCore.hpp" @@ -26,7 +27,24 @@ extern "C" bool RC_CallConv WriteRemoteMemory(RC_Pointer handle, RC_Pointer addr return true; #elif __APPLE__ - return vm_write(*(vm_map_t*)&handle , (vm_address_t) address, (vm_offset_t)(static_cast(buffer) + offset), size) == KERN_SUCCESS; + task_t task; + + task_for_pid(current_task(), (int)handle, &task); + + mach_port_t task_port; + vm_region_basic_info_data_t info; + mach_msg_type_number_t info_count = VM_REGION_BASIC_INFO_COUNT; + vm_region_flavor_t flavor = VM_REGION_BASIC_INFO; + + vm_address_t region = (vm_address_t)address; + vm_size_t region_size = 0; + + + vm_region(task, ®ion, ®ion_size, flavor, (vm_region_info_t)&info, (mach_msg_type_number_t*)&info_count, (mach_port_t*)&task_port); + + vm_protect(task, region, region_size, false, VM_PROT_READ | VM_PROT_WRITE | VM_PROT_COPY); + + return vm_write((vm_map_t)task , (vm_address_t) address, (vm_offset_t)(static_cast(buffer) + offset), size) == KERN_SUCCESS; #endif } diff --git a/NativeCore/Unix/build/.DS_Store b/NativeCore/Unix/build/.DS_Store index eabc0e3255eb2c59b802ae973d53664edb2b12e4..555923623858b426c5468c0652b23c76f1058542 100644 GIT binary patch delta 39 ncmZoMXffDunT5mLz+6Yc)YxG2Z5DM#IB)W87RSxrY&!)3 - 1.0.109.2 + 1.0.110 diff --git a/ReClass.NET/UI/DpiUtil.cs b/ReClass.NET/UI/DpiUtil.cs index 398a090f..ae7232b8 100644 --- a/ReClass.NET/UI/DpiUtil.cs +++ b/ReClass.NET/UI/DpiUtil.cs @@ -43,7 +43,8 @@ private static void EnsureInitialized() try { - using (var g = Graphics.FromHwnd(IntPtr.Zero)) + dpiX = dpiY = 96; + /*using (var g = Graphics.FromHwnd(IntPtr.Zero)) { dpiX = (int)g.DpiX; dpiY = (int)g.DpiY; @@ -53,8 +54,8 @@ private static void EnsureInitialized() dpiX = StdDpi; dpiY = StdDpi; } - } - } + }*/ + } catch { diff --git a/ReClass.NET_Launcher/ReClass.NET_Launcher.csproj b/ReClass.NET_Launcher/ReClass.NET_Launcher.csproj index 5da1c43a..6f75f260 100644 --- a/ReClass.NET_Launcher/ReClass.NET_Launcher.csproj +++ b/ReClass.NET_Launcher/ReClass.NET_Launcher.csproj @@ -1,5 +1,5 @@  - + Debug From 72c4eeaec2e140c2ac5eec1a0b4c462ae5fbd6d5 Mon Sep 17 00:00:00 2001 From: Tarek Adel Date: Thu, 7 Mar 2019 03:56:45 +0200 Subject: [PATCH 6/8] Small fix --- .../EnumerateRemoteSectionsAndModules.cpp | 28 ------------------ .../UserInterfaceState.xcuserstate | Bin 34351 -> 34335 bytes 2 files changed, 28 deletions(-) diff --git a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp index 2a1f080c..f6ed20f2 100644 --- a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp +++ b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp @@ -10,34 +10,6 @@ #include #include #include -#define PATH_MAX 2048 - -unsigned char * -readProcessMemory (int pid, - mach_vm_address_t addr, - mach_msg_type_number_t* size) { - task_t t; - task_for_pid(mach_task_self(), pid, &t); - mach_msg_type_number_t dataCnt = (mach_msg_type_number_t) *size; - vm_offset_t readMem; - - // Use vm_read, rather than mach_vm_read, since the latter is different in - // iOS. - - kern_return_t kr = vm_read(t, // vm_map_t target_task, - addr, // mach_vm_address_t address, - *size, // mach_vm_size_t size - &readMem, //vm_offset_t *data, - &dataCnt); // mach_msg_type_number_t *dataCnt - - if (kr) { - fprintf (stderr, "Unable to read target task's memory @%p - kr 0x%x\n" , - (void *) addr, kr); - return NULL; - } - - return ( (unsigned char *) readMem); -} #endif diff --git a/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/tarek.xcuserdatad/UserInterfaceState.xcuserstate b/NativeCore/Unix/NativeCore.Unix.xcodeproj/project.xcworkspace/xcuserdata/tarek.xcuserdatad/UserInterfaceState.xcuserstate index 80296d1dd330f4ff274fbc5af8d8b0c1da049f03..e8ecc60bd31f3931bc68bcad6d6a875d4cae9f06 100644 GIT binary patch delta 13121 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 bjprIKHD2eth5`tk|I=SM|8M!-c=P`OVJBfz From 0fd1fc39c7456ae1d7701120df3b17a2cb85e72d Mon Sep 17 00:00:00 2001 From: Tarek Adel Date: Thu, 7 Mar 2019 18:33:51 +0100 Subject: [PATCH 7/8] Updating Makefile to support both 32 and 64bit --- NativeCore/Unix/Makefile | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/NativeCore/Unix/Makefile b/NativeCore/Unix/Makefile index 98e4d4b2..6d831e29 100644 --- a/NativeCore/Unix/Makefile +++ b/NativeCore/Unix/Makefile @@ -7,11 +7,29 @@ LD = g++ WINDRES = windres INC = -I../Dependencies/distorm/include -CFLAGS = -Wall -fPIC -m32 +CFLAGS = -Wall -fPIC RESINC = LIBDIR = + LIB = -lstdc++ -LDFLAGS = -m32 --shared -Wl +LDFLAGS = -shared -Wl,--no-undefined + +UNAME_S := $(shell uname -s) +find_32 = $(findstring 32,$(firstword -$(MAKEFLAGS)))$(filter -32,$(MAKEFLAGS)) +ifeq ($(UNAME_S),Linux) + LIB += -lstdc++fs +endif + + + +if $(find_s) + LDFLAGS += -m32 + CFLAGS += -m32 +else + CFLAGS += -DRECLASSNET64=1 +endif + + INC_DEBUG = $(INC) CFLAGS_DEBUG = $(CFLAGS) -g From a70870adc65956fe7b2109d5a33be11db11e5402 Mon Sep 17 00:00:00 2001 From: Tarek Adel Date: Thu, 7 Mar 2019 18:51:16 +0100 Subject: [PATCH 8/8] Fixing Makefile --- NativeCore/Unix/Makefile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/NativeCore/Unix/Makefile b/NativeCore/Unix/Makefile index 6d831e29..013c1375 100644 --- a/NativeCore/Unix/Makefile +++ b/NativeCore/Unix/Makefile @@ -12,17 +12,16 @@ RESINC = LIBDIR = LIB = -lstdc++ -LDFLAGS = -shared -Wl,--no-undefined +LDFLAGS = -shared -Wl UNAME_S := $(shell uname -s) -find_32 = $(findstring 32,$(firstword -$(MAKEFLAGS)))$(filter -32,$(MAKEFLAGS)) ifeq ($(UNAME_S),Linux) + LDFLAGS += ,--no-undefined LIB += -lstdc++fs endif - -if $(find_s) +ifeq ($(ARCH), 32) LDFLAGS += -m32 CFLAGS += -m32 else