Symbolliste für Module in Prozessbild programmatisch erlangen
-
Gibt's einen nicht vollkommen zurückgebliebenen Weg, sich die Symbole einer Abbilddatei (EXE, DLL) programmatisch holen zu lassen, die bereits im Adressraum eines Prozesses liegt? Irgendwie muss ja GetProcAddress in der Lage sein, den Ort einer Funktion zu ermitteln, und dies auf eine nicht vollkommen zurückgebliebene Art und Weise.
Meine bisherigen Versuche, die Symbole über Dbghelp.dll zu holen, sind jedenfalls komplett zurückgeblieben, hauptsächlich wegen SymLoadModuleEx. Die Funktion akzeptiert zwar als Parameter die Basisadresse und die Modulgröße (die ich mir mit GetModuleInformation holen kann), aber dann will SymEnumSymbols trotz Erfolg (gibt TRUE zurück) meinen Callback nimmer aufrufen, so als ob es keine Symbole gefunden hätte. Der einzige Weg, über den ich zuverlässig den Callback aufgerufen bekommen habe, war die Basisadresse und Modulgröße leer zu lassen und stattdessen den Pfad zum Abbild anzugeben, was aber die DLL nochmal komplett neu in den Adressraum einlädt. Das weiß ich, weil SymLoadModuleEx die Adresse des *eingeladenen Abbildes zurückgibt (If the function succeeds, the return value is the base address of the loaded module), und diese Adresse unterscheidet sich von der Moduladresse, die ich schon habe. In einer Iteration war C:\Windows\AppPatch\AcGenral.DLL in Adresse 0x01120000 geladen, aber SymLoadModuleEx hat dann das Modul noch mal in 0x755e0000 geladen. Ich gehe davon aus, dass GetProcAddress das schließlich auch nicht machen muss.
Wenn's hierfür keinen nicht zurückgebliebenen Weg gibt, dann dumpe ich mir die Abbilddaten halt in eine Datei und schau dann nach einem Weg, die Exporttabelle manuell zu ermitteln und zu dumpen. Sachen wie DUMPBIN oder objdump für 'ne Windows-Toolchain kann ich absolut nicht gebrauchen.
-
@Cerrseien sagte in Symbolliste für Module in Prozessbild programmatisch erlangen:
und dies auf eine nicht vollkommen zurückgebliebene Art und Weise.
Da hab ich dann aufgehört zu lesen ...
-
@manni66
Bei aller Liebe mach das. Auf Metzgergänge, wie sie mir bisher aufgeschwatzt wurden, kann ich gerne verzichten.
-
Ich habe mir mal den Quellcode von GetProcAddress in Wine angeschaut. Ist natürlich furchtbar ineffizent (warum sollte man die gleichen Prüfungen bei jedem Funktionsaufruf machen, wenn sich das Modul nimmer verschiebt - und selbst, wenn es sich verschieben täte, was es in der Regel eben nicht tut, sollte das dann eh nicht komplett egal sein, weil RVAs relativ zur Basisadresse sind?), aber das Grundgerüst ist einigermaßen solide. HMODULEs zeigen auf den MZ-Header des Binaries, von dort hangelt man sich zum NT-Header, prüft auf den optionalen Header, und schaut im .edata-Verzeichnis nach Exportdaten. Wenn diese vorhanden sind, hangelt man sich zur Exportverzeichnistabelle, in der drei RVAs zum dynamischen Auflösen von Funktionen stehen: AddressOfNames, welches einfach nur ein 32-Bit-Array von RVAs auf Strings ist; AddressOfNameOrdinals, ein 16-Bit-Array, welches sich den Index mit AddressOfNames teilt (über diesen Index werden Codepointer mit Namen verbunden), und dessen Werte Indizes beinhalten, mit denen man sich die Adresse der Funktion über AddressOfFunctions holen kann; und natürlich AddressOfFunctions, wieder ein 32-Bit-Array mit den RVAs der exportierten Funktion. Funktioniert ganz gut, würde ich sagen:
0x502D0000: C:\Windows\SysWOW64\api-ms-win-crt-string-l1-1-0.dll [Forwarder Symbols] Index: 0 | RVA: 1857 | Symbol: ucrtbase.__isascii Index: 1 | RVA: 1873 | Symbol: ucrtbase.__iscsym Index: 2 | RVA: 188f | Symbol: ucrtbase.__iscsymf Index: 3 | RVA: 18ac | Symbol: ucrtbase.__iswcsym Index: 4 | RVA: 18ca | Symbol: ucrtbase.__iswcsymf Index: 5 | RVA: 18e8 | Symbol: ucrtbase.__strncnt Index: 6 | RVA: 1905 | Symbol: ucrtbase.__wcsncnt Index: 7 | RVA: 1923 | Symbol: ucrtbase._isalnum_l Index: 8 | RVA: 1942 | Symbol: ucrtbase._isalpha_l Index: 9 | RVA: 1961 | Symbol: ucrtbase._isblank_l Index: 10 | RVA: 1980 | Symbol: ucrtbase._iscntrl_l Index: 11 | RVA: 199d | Symbol: ucrtbase._isctype Index: 12 | RVA: 19ba | Symbol: ucrtbase._isctype_l Index: 13 | RVA: 19d9 | Symbol: ucrtbase._isdigit_l Index: 14 | RVA: 19f8 | Symbol: ucrtbase._isgraph_l Index: 15 | RVA: 1a1a | Symbol: ucrtbase._isleadbyte_l Index: 16 | RVA: 1a3c | Symbol: ucrtbase._islower_l Index: 17 | RVA: 1a5b | Symbol: ucrtbase._isprint_l Index: 18 | RVA: 1a7a | Symbol: ucrtbase._ispunct_l Index: 19 | RVA: 1a99 | Symbol: ucrtbase._isspace_l Index: 20 | RVA: 1ab8 | Symbol: ucrtbase._isupper_l Index: 21 | RVA: 1ad8 | Symbol: ucrtbase._iswalnum_l Index: 22 | RVA: 1af9 | Symbol: ucrtbase._iswalpha_l Index: 23 | RVA: 1b1a | Symbol: ucrtbase._iswblank_l Index: 24 | RVA: 1b3b | Symbol: ucrtbase._iswcntrl_l Index: 25 | RVA: 1b5b | Symbol: ucrtbase._iswcsym_l Index: 26 | RVA: 1b7b | Symbol: ucrtbase._iswcsymf_l Index: 27 | RVA: 1b9c | Symbol: ucrtbase._iswctype_l Index: 28 | RVA: 1bbd | Symbol: ucrtbase._iswdigit_l Index: 29 | RVA: 1bde | Symbol: ucrtbase._iswgraph_l Index: 30 | RVA: 1bff | Symbol: ucrtbase._iswlower_l Index: 31 | RVA: 1c20 | Symbol: ucrtbase._iswprint_l Index: 32 | RVA: 1c41 | Symbol: ucrtbase._iswpunct_l Index: 33 | RVA: 1c62 | Symbol: ucrtbase._iswspace_l Index: 34 | RVA: 1c83 | Symbol: ucrtbase._iswupper_l Index: 35 | RVA: 1ca5 | Symbol: ucrtbase._iswxdigit_l Index: 36 | RVA: 1cc7 | Symbol: ucrtbase._isxdigit_l Index: 37 | RVA: 1ce5 | Symbol: ucrtbase._memccpy Index: 38 | RVA: 1d00 | Symbol: ucrtbase._memicmp Index: 39 | RVA: 1d1d | Symbol: ucrtbase._memicmp_l Index: 40 | RVA: 1d3c | Symbol: ucrtbase._strcoll_l Index: 41 | RVA: 1d58 | Symbol: ucrtbase._strdup Index: 42 | RVA: 1d72 | Symbol: ucrtbase._stricmp Index: 43 | RVA: 1d8f | Symbol: ucrtbase._stricmp_l Index: 44 | RVA: 1dad | Symbol: ucrtbase._stricoll Index: 45 | RVA: 1dcc | Symbol: ucrtbase._stricoll_l Index: 46 | RVA: 1de9 | Symbol: ucrtbase._strlwr Index: 47 | RVA: 1e04 | Symbol: ucrtbase._strlwr_l Index: 48 | RVA: 1e21 | Symbol: ucrtbase._strlwr_s Index: 49 | RVA: 1e40 | Symbol: ucrtbase._strlwr_s_l Index: 50 | RVA: 1e5f | Symbol: ucrtbase._strncoll Index: 51 | RVA: 1e7e | Symbol: ucrtbase._strncoll_l Index: 52 | RVA: 1e9d | Symbol: ucrtbase._strnicmp Index: 53 | RVA: 1ebc | Symbol: ucrtbase._strnicmp_l Index: 54 | RVA: 1edc | Symbol: ucrtbase._strnicoll Index: 55 | RVA: 1efd | Symbol: ucrtbase._strnicoll_l Index: 56 | RVA: 1f1c | Symbol: ucrtbase._strnset Index: 57 | RVA: 1f39 | Symbol: ucrtbase._strnset_s Index: 58 | RVA: 1f55 | Symbol: ucrtbase._strrev Index: 59 | RVA: 1f6e | Symbol: ucrtbase._strset Index: 60 | RVA: 1f89 | Symbol: ucrtbase._strset_s Index: 61 | RVA: 1fa4 | Symbol: ucrtbase._strupr Index: 62 | RVA: 1fbf | Symbol: ucrtbase._strupr_l Index: 63 | RVA: 1fdc | Symbol: ucrtbase._strupr_s Index: 64 | RVA: 1ffb | Symbol: ucrtbase._strupr_s_l Index: 65 | RVA: 201b | Symbol: ucrtbase._strxfrm_l Index: 66 | RVA: 2038 | Symbol: ucrtbase._tolower Index: 67 | RVA: 2055 | Symbol: ucrtbase._tolower_l Index: 68 | RVA: 2072 | Symbol: ucrtbase._toupper Index: 69 | RVA: 208f | Symbol: ucrtbase._toupper_l Index: 70 | RVA: 20af | Symbol: ucrtbase._towlower_l Index: 71 | RVA: 20d0 | Symbol: ucrtbase._towupper_l Index: 72 | RVA: 20f0 | Symbol: ucrtbase._wcscoll_l Index: 73 | RVA: 210c | Symbol: ucrtbase._wcsdup Index: 74 | RVA: 2126 | Symbol: ucrtbase._wcsicmp Index: 75 | RVA: 2143 | Symbol: ucrtbase._wcsicmp_l Index: 76 | RVA: 2161 | Symbol: ucrtbase._wcsicoll Index: 77 | RVA: 2180 | Symbol: ucrtbase._wcsicoll_l Index: 78 | RVA: 219d | Symbol: ucrtbase._wcslwr Index: 79 | RVA: 21b8 | Symbol: ucrtbase._wcslwr_l Index: 80 | RVA: 21d5 | Symbol: ucrtbase._wcslwr_s Index: 81 | RVA: 21f4 | Symbol: ucrtbase._wcslwr_s_l Index: 82 | RVA: 2213 | Symbol: ucrtbase._wcsncoll Index: 83 | RVA: 2232 | Symbol: ucrtbase._wcsncoll_l Index: 84 | RVA: 2251 | Symbol: ucrtbase._wcsnicmp Index: 85 | RVA: 2270 | Symbol: ucrtbase._wcsnicmp_l Index: 86 | RVA: 2290 | Symbol: ucrtbase._wcsnicoll Index: 87 | RVA: 22b1 | Symbol: ucrtbase._wcsnicoll_l Index: 88 | RVA: 22d0 | Symbol: ucrtbase._wcsnset Index: 89 | RVA: 22ed | Symbol: ucrtbase._wcsnset_s Index: 90 | RVA: 2309 | Symbol: ucrtbase._wcsrev Index: 91 | RVA: 2322 | Symbol: ucrtbase._wcsset Index: 92 | RVA: 233d | Symbol: ucrtbase._wcsset_s Index: 93 | RVA: 2358 | Symbol: ucrtbase._wcsupr Index: 94 | RVA: 2373 | Symbol: ucrtbase._wcsupr_l Index: 95 | RVA: 2390 | Symbol: ucrtbase._wcsupr_s Index: 96 | RVA: 23af | Symbol: ucrtbase._wcsupr_s_l Index: 97 | RVA: 23cf | Symbol: ucrtbase._wcsxfrm_l Index: 98 | RVA: 23eb | Symbol: ucrtbase._wctype Index: 99 | RVA: 2406 | Symbol: ucrtbase.is_wctype Index: 100 | RVA: 2421 | Symbol: ucrtbase.isalnum Index: 101 | RVA: 243a | Symbol: ucrtbase.isalpha Index: 102 | RVA: 2453 | Symbol: ucrtbase.isblank Index: 103 | RVA: 246c | Symbol: ucrtbase.iscntrl Index: 104 | RVA: 2485 | Symbol: ucrtbase.isdigit Index: 105 | RVA: 249e | Symbol: ucrtbase.isgraph Index: 106 | RVA: 24ba | Symbol: ucrtbase.isleadbyte Index: 107 | RVA: 24d6 | Symbol: ucrtbase.islower Index: 108 | RVA: 24ef | Symbol: ucrtbase.isprint Index: 109 | RVA: 2508 | Symbol: ucrtbase.ispunct Index: 110 | RVA: 2521 | Symbol: ucrtbase.isspace Index: 111 | RVA: 253a | Symbol: ucrtbase.isupper Index: 112 | RVA: 2554 | Symbol: ucrtbase.iswalnum Index: 113 | RVA: 256f | Symbol: ucrtbase.iswalpha Index: 114 | RVA: 258a | Symbol: ucrtbase.iswascii Index: 115 | RVA: 25a5 | Symbol: ucrtbase.iswblank Index: 116 | RVA: 25c0 | Symbol: ucrtbase.iswcntrl Index: 117 | RVA: 25db | Symbol: ucrtbase.iswctype Index: 118 | RVA: 25f6 | Symbol: ucrtbase.iswdigit Index: 119 | RVA: 2611 | Symbol: ucrtbase.iswgraph Index: 120 | RVA: 262c | Symbol: ucrtbase.iswlower Index: 121 | RVA: 2647 | Symbol: ucrtbase.iswprint Index: 122 | RVA: 2662 | Symbol: ucrtbase.iswpunct Index: 123 | RVA: 267d | Symbol: ucrtbase.iswspace Index: 124 | RVA: 2698 | Symbol: ucrtbase.iswupper Index: 125 | RVA: 26b4 | Symbol: ucrtbase.iswxdigit Index: 126 | RVA: 26d0 | Symbol: ucrtbase.isxdigit Index: 127 | RVA: 26e8 | Symbol: ucrtbase.mblen Index: 128 | RVA: 26fe | Symbol: ucrtbase.mbrlen Index: 129 | RVA: 2717 | Symbol: ucrtbase.memcpy_s Index: 130 | RVA: 2733 | Symbol: ucrtbase.memmove_s Index: 131 | RVA: 274d | Symbol: ucrtbase.memset Index: 132 | RVA: 2764 | Symbol: ucrtbase.strcat Index: 133 | RVA: 277d | Symbol: ucrtbase.strcat_s Index: 134 | RVA: 2796 | Symbol: ucrtbase.strcmp Index: 135 | RVA: 27ae | Symbol: ucrtbase.strcoll Index: 136 | RVA: 27c6 | Symbol: ucrtbase.strcpy Index: 137 | RVA: 27df | Symbol: ucrtbase.strcpy_s Index: 138 | RVA: 27f9 | Symbol: ucrtbase.strcspn Index: 139 | RVA: 2811 | Symbol: ucrtbase.strlen Index: 140 | RVA: 2829 | Symbol: ucrtbase.strncat Index: 141 | RVA: 2844 | Symbol: ucrtbase.strncat_s Index: 142 | RVA: 285f | Symbol: ucrtbase.strncmp Index: 143 | RVA: 2878 | Symbol: ucrtbase.strncpy Index: 144 | RVA: 2893 | Symbol: ucrtbase.strncpy_s Index: 145 | RVA: 28ae | Symbol: ucrtbase.strnlen Index: 146 | RVA: 28c7 | Symbol: ucrtbase.strpbrk Index: 147 | RVA: 28df | Symbol: ucrtbase.strspn Index: 148 | RVA: 28f6 | Symbol: ucrtbase.strtok Index: 149 | RVA: 290f | Symbol: ucrtbase.strtok_s Index: 150 | RVA: 2929 | Symbol: ucrtbase.strxfrm Index: 151 | RVA: 2942 | Symbol: ucrtbase.tolower Index: 152 | RVA: 295b | Symbol: ucrtbase.toupper Index: 153 | RVA: 2976 | Symbol: ucrtbase.towctrans Index: 154 | RVA: 2992 | Symbol: ucrtbase.towlower Index: 155 | RVA: 29ad | Symbol: ucrtbase.towupper Index: 156 | RVA: 29c6 | Symbol: ucrtbase.wcscat Index: 157 | RVA: 29df | Symbol: ucrtbase.wcscat_s Index: 158 | RVA: 29f8 | Symbol: ucrtbase.wcscmp Index: 159 | RVA: 2a10 | Symbol: ucrtbase.wcscoll Index: 160 | RVA: 2a28 | Symbol: ucrtbase.wcscpy Index: 161 | RVA: 2a41 | Symbol: ucrtbase.wcscpy_s Index: 162 | RVA: 2a5b | Symbol: ucrtbase.wcscspn Index: 163 | RVA: 2a73 | Symbol: ucrtbase.wcslen Index: 164 | RVA: 2a8b | Symbol: ucrtbase.wcsncat Index: 165 | RVA: 2aa6 | Symbol: ucrtbase.wcsncat_s Index: 166 | RVA: 2ac1 | Symbol: ucrtbase.wcsncmp Index: 167 | RVA: 2ada | Symbol: ucrtbase.wcsncpy Index: 168 | RVA: 2af5 | Symbol: ucrtbase.wcsncpy_s Index: 169 | RVA: 2b10 | Symbol: ucrtbase.wcsnlen Index: 170 | RVA: 2b29 | Symbol: ucrtbase.wcspbrk Index: 171 | RVA: 2b41 | Symbol: ucrtbase.wcsspn Index: 172 | RVA: 2b58 | Symbol: ucrtbase.wcstok Index: 173 | RVA: 2b71 | Symbol: ucrtbase.wcstok_s Index: 174 | RVA: 2b8b | Symbol: ucrtbase.wcsxfrm Index: 175 | RVA: 2ba3 | Symbol: ucrtbase.wctype Index: 176 | RVA: 2bbd | Symbol: ucrtbase.wmemcpy_s Index: 177 | RVA: 2bdb | Symbol: ucrtbase.wmemmove_s [Exported Symbols] Index: 0 | Ordinal: 0 | RVA: 1857 | Adress: 502D1857 | Symbol: __isascii Index: 1 | Ordinal: 1 | RVA: 1873 | Adress: 502D1873 | Symbol: __iscsym Index: 2 | Ordinal: 2 | RVA: 188f | Adress: 502D188F | Symbol: __iscsymf Index: 3 | Ordinal: 3 | RVA: 18ac | Adress: 502D18AC | Symbol: __iswcsym Index: 4 | Ordinal: 4 | RVA: 18ca | Adress: 502D18CA | Symbol: __iswcsymf Index: 5 | Ordinal: 5 | RVA: 18e8 | Adress: 502D18E8 | Symbol: __strncnt Index: 6 | Ordinal: 6 | RVA: 1905 | Adress: 502D1905 | Symbol: __wcsncnt Index: 7 | Ordinal: 7 | RVA: 1923 | Adress: 502D1923 | Symbol: _isalnum_l Index: 8 | Ordinal: 8 | RVA: 1942 | Adress: 502D1942 | Symbol: _isalpha_l Index: 9 | Ordinal: 9 | RVA: 1961 | Adress: 502D1961 | Symbol: _isblank_l Index: 10 | Ordinal: 10 | RVA: 1980 | Adress: 502D1980 | Symbol: _iscntrl_l Index: 11 | Ordinal: 11 | RVA: 199d | Adress: 502D199D | Symbol: _isctype Index: 12 | Ordinal: 12 | RVA: 19ba | Adress: 502D19BA | Symbol: _isctype_l Index: 13 | Ordinal: 13 | RVA: 19d9 | Adress: 502D19D9 | Symbol: _isdigit_l Index: 14 | Ordinal: 14 | RVA: 19f8 | Adress: 502D19F8 | Symbol: _isgraph_l Index: 15 | Ordinal: 15 | RVA: 1a1a | Adress: 502D1A1A | Symbol: _isleadbyte_l Index: 16 | Ordinal: 16 | RVA: 1a3c | Adress: 502D1A3C | Symbol: _islower_l Index: 17 | Ordinal: 17 | RVA: 1a5b | Adress: 502D1A5B | Symbol: _isprint_l Index: 18 | Ordinal: 18 | RVA: 1a7a | Adress: 502D1A7A | Symbol: _ispunct_l Index: 19 | Ordinal: 19 | RVA: 1a99 | Adress: 502D1A99 | Symbol: _isspace_l Index: 20 | Ordinal: 20 | RVA: 1ab8 | Adress: 502D1AB8 | Symbol: _isupper_l Index: 21 | Ordinal: 21 | RVA: 1ad8 | Adress: 502D1AD8 | Symbol: _iswalnum_l Index: 22 | Ordinal: 22 | RVA: 1af9 | Adress: 502D1AF9 | Symbol: _iswalpha_l Index: 23 | Ordinal: 23 | RVA: 1b1a | Adress: 502D1B1A | Symbol: _iswblank_l Index: 24 | Ordinal: 24 | RVA: 1b3b | Adress: 502D1B3B | Symbol: _iswcntrl_l Index: 25 | Ordinal: 25 | RVA: 1b5b | Adress: 502D1B5B | Symbol: _iswcsym_l Index: 26 | Ordinal: 26 | RVA: 1b7b | Adress: 502D1B7B | Symbol: _iswcsymf_l Index: 27 | Ordinal: 27 | RVA: 1b9c | Adress: 502D1B9C | Symbol: _iswctype_l Index: 28 | Ordinal: 28 | RVA: 1bbd | Adress: 502D1BBD | Symbol: _iswdigit_l Index: 29 | Ordinal: 29 | RVA: 1bde | Adress: 502D1BDE | Symbol: _iswgraph_l Index: 30 | Ordinal: 30 | RVA: 1bff | Adress: 502D1BFF | Symbol: _iswlower_l Index: 31 | Ordinal: 31 | RVA: 1c20 | Adress: 502D1C20 | Symbol: _iswprint_l Index: 32 | Ordinal: 32 | RVA: 1c41 | Adress: 502D1C41 | Symbol: _iswpunct_l Index: 33 | Ordinal: 33 | RVA: 1c62 | Adress: 502D1C62 | Symbol: _iswspace_l Index: 34 | Ordinal: 34 | RVA: 1c83 | Adress: 502D1C83 | Symbol: _iswupper_l Index: 35 | Ordinal: 35 | RVA: 1ca5 | Adress: 502D1CA5 | Symbol: _iswxdigit_l Index: 36 | Ordinal: 36 | RVA: 1cc7 | Adress: 502D1CC7 | Symbol: _isxdigit_l Index: 37 | Ordinal: 37 | RVA: 1ce5 | Adress: 502D1CE5 | Symbol: _memccpy Index: 38 | Ordinal: 38 | RVA: 1d00 | Adress: 502D1D00 | Symbol: _memicmp Index: 39 | Ordinal: 39 | RVA: 1d1d | Adress: 502D1D1D | Symbol: _memicmp_l Index: 40 | Ordinal: 40 | RVA: 1d3c | Adress: 502D1D3C | Symbol: _strcoll_l Index: 41 | Ordinal: 41 | RVA: 1d58 | Adress: 502D1D58 | Symbol: _strdup Index: 42 | Ordinal: 42 | RVA: 1d72 | Adress: 502D1D72 | Symbol: _stricmp Index: 43 | Ordinal: 43 | RVA: 1d8f | Adress: 502D1D8F | Symbol: _stricmp_l Index: 44 | Ordinal: 44 | RVA: 1dad | Adress: 502D1DAD | Symbol: _stricoll Index: 45 | Ordinal: 45 | RVA: 1dcc | Adress: 502D1DCC | Symbol: _stricoll_l Index: 46 | Ordinal: 46 | RVA: 1de9 | Adress: 502D1DE9 | Symbol: _strlwr Index: 47 | Ordinal: 47 | RVA: 1e04 | Adress: 502D1E04 | Symbol: _strlwr_l Index: 48 | Ordinal: 48 | RVA: 1e21 | Adress: 502D1E21 | Symbol: _strlwr_s Index: 49 | Ordinal: 49 | RVA: 1e40 | Adress: 502D1E40 | Symbol: _strlwr_s_l Index: 50 | Ordinal: 50 | RVA: 1e5f | Adress: 502D1E5F | Symbol: _strncoll Index: 51 | Ordinal: 51 | RVA: 1e7e | Adress: 502D1E7E | Symbol: _strncoll_l Index: 52 | Ordinal: 52 | RVA: 1e9d | Adress: 502D1E9D | Symbol: _strnicmp Index: 53 | Ordinal: 53 | RVA: 1ebc | Adress: 502D1EBC | Symbol: _strnicmp_l Index: 54 | Ordinal: 54 | RVA: 1edc | Adress: 502D1EDC | Symbol: _strnicoll Index: 55 | Ordinal: 55 | RVA: 1efd | Adress: 502D1EFD | Symbol: _strnicoll_l Index: 56 | Ordinal: 56 | RVA: 1f1c | Adress: 502D1F1C | Symbol: _strnset Index: 57 | Ordinal: 57 | RVA: 1f39 | Adress: 502D1F39 | Symbol: _strnset_s Index: 58 | Ordinal: 58 | RVA: 1f55 | Adress: 502D1F55 | Symbol: _strrev Index: 59 | Ordinal: 59 | RVA: 1f6e | Adress: 502D1F6E | Symbol: _strset Index: 60 | Ordinal: 60 | RVA: 1f89 | Adress: 502D1F89 | Symbol: _strset_s Index: 61 | Ordinal: 61 | RVA: 1fa4 | Adress: 502D1FA4 | Symbol: _strupr Index: 62 | Ordinal: 62 | RVA: 1fbf | Adress: 502D1FBF | Symbol: _strupr_l Index: 63 | Ordinal: 63 | RVA: 1fdc | Adress: 502D1FDC | Symbol: _strupr_s Index: 64 | Ordinal: 64 | RVA: 1ffb | Adress: 502D1FFB | Symbol: _strupr_s_l Index: 65 | Ordinal: 65 | RVA: 201b | Adress: 502D201B | Symbol: _strxfrm_l Index: 66 | Ordinal: 66 | RVA: 2038 | Adress: 502D2038 | Symbol: _tolower Index: 67 | Ordinal: 67 | RVA: 2055 | Adress: 502D2055 | Symbol: _tolower_l Index: 68 | Ordinal: 68 | RVA: 2072 | Adress: 502D2072 | Symbol: _toupper Index: 69 | Ordinal: 69 | RVA: 208f | Adress: 502D208F | Symbol: _toupper_l Index: 70 | Ordinal: 70 | RVA: 20af | Adress: 502D20AF | Symbol: _towlower_l Index: 71 | Ordinal: 71 | RVA: 20d0 | Adress: 502D20D0 | Symbol: _towupper_l Index: 72 | Ordinal: 72 | RVA: 20f0 | Adress: 502D20F0 | Symbol: _wcscoll_l Index: 73 | Ordinal: 73 | RVA: 210c | Adress: 502D210C | Symbol: _wcsdup Index: 74 | Ordinal: 74 | RVA: 2126 | Adress: 502D2126 | Symbol: _wcsicmp Index: 75 | Ordinal: 75 | RVA: 2143 | Adress: 502D2143 | Symbol: _wcsicmp_l Index: 76 | Ordinal: 76 | RVA: 2161 | Adress: 502D2161 | Symbol: _wcsicoll Index: 77 | Ordinal: 77 | RVA: 2180 | Adress: 502D2180 | Symbol: _wcsicoll_l Index: 78 | Ordinal: 78 | RVA: 219d | Adress: 502D219D | Symbol: _wcslwr Index: 79 | Ordinal: 79 | RVA: 21b8 | Adress: 502D21B8 | Symbol: _wcslwr_l Index: 80 | Ordinal: 80 | RVA: 21d5 | Adress: 502D21D5 | Symbol: _wcslwr_s Index: 81 | Ordinal: 81 | RVA: 21f4 | Adress: 502D21F4 | Symbol: _wcslwr_s_l Index: 82 | Ordinal: 82 | RVA: 2213 | Adress: 502D2213 | Symbol: _wcsncoll Index: 83 | Ordinal: 83 | RVA: 2232 | Adress: 502D2232 | Symbol: _wcsncoll_l Index: 84 | Ordinal: 84 | RVA: 2251 | Adress: 502D2251 | Symbol: _wcsnicmp Index: 85 | Ordinal: 85 | RVA: 2270 | Adress: 502D2270 | Symbol: _wcsnicmp_l Index: 86 | Ordinal: 86 | RVA: 2290 | Adress: 502D2290 | Symbol: _wcsnicoll Index: 87 | Ordinal: 87 | RVA: 22b1 | Adress: 502D22B1 | Symbol: _wcsnicoll_l Index: 88 | Ordinal: 88 | RVA: 22d0 | Adress: 502D22D0 | Symbol: _wcsnset Index: 89 | Ordinal: 89 | RVA: 22ed | Adress: 502D22ED | Symbol: _wcsnset_s Index: 90 | Ordinal: 90 | RVA: 2309 | Adress: 502D2309 | Symbol: _wcsrev Index: 91 | Ordinal: 91 | RVA: 2322 | Adress: 502D2322 | Symbol: _wcsset Index: 92 | Ordinal: 92 | RVA: 233d | Adress: 502D233D | Symbol: _wcsset_s Index: 93 | Ordinal: 93 | RVA: 2358 | Adress: 502D2358 | Symbol: _wcsupr Index: 94 | Ordinal: 94 | RVA: 2373 | Adress: 502D2373 | Symbol: _wcsupr_l Index: 95 | Ordinal: 95 | RVA: 2390 | Adress: 502D2390 | Symbol: _wcsupr_s Index: 96 | Ordinal: 96 | RVA: 23af | Adress: 502D23AF | Symbol: _wcsupr_s_l Index: 97 | Ordinal: 97 | RVA: 23cf | Adress: 502D23CF | Symbol: _wcsxfrm_l Index: 98 | Ordinal: 98 | RVA: 23eb | Adress: 502D23EB | Symbol: _wctype Index: 99 | Ordinal: 99 | RVA: 2406 | Adress: 502D2406 | Symbol: is_wctype Index: 100 | Ordinal: 100 | RVA: 2421 | Adress: 502D2421 | Symbol: isalnum Index: 101 | Ordinal: 101 | RVA: 243a | Adress: 502D243A | Symbol: isalpha Index: 102 | Ordinal: 102 | RVA: 2453 | Adress: 502D2453 | Symbol: isblank Index: 103 | Ordinal: 103 | RVA: 246c | Adress: 502D246C | Symbol: iscntrl Index: 104 | Ordinal: 104 | RVA: 2485 | Adress: 502D2485 | Symbol: isdigit Index: 105 | Ordinal: 105 | RVA: 249e | Adress: 502D249E | Symbol: isgraph Index: 106 | Ordinal: 106 | RVA: 24ba | Adress: 502D24BA | Symbol: isleadbyte Index: 107 | Ordinal: 107 | RVA: 24d6 | Adress: 502D24D6 | Symbol: islower Index: 108 | Ordinal: 108 | RVA: 24ef | Adress: 502D24EF | Symbol: isprint Index: 109 | Ordinal: 109 | RVA: 2508 | Adress: 502D2508 | Symbol: ispunct Index: 110 | Ordinal: 110 | RVA: 2521 | Adress: 502D2521 | Symbol: isspace Index: 111 | Ordinal: 111 | RVA: 253a | Adress: 502D253A | Symbol: isupper Index: 112 | Ordinal: 112 | RVA: 2554 | Adress: 502D2554 | Symbol: iswalnum Index: 113 | Ordinal: 113 | RVA: 256f | Adress: 502D256F | Symbol: iswalpha Index: 114 | Ordinal: 114 | RVA: 258a | Adress: 502D258A | Symbol: iswascii Index: 115 | Ordinal: 115 | RVA: 25a5 | Adress: 502D25A5 | Symbol: iswblank Index: 116 | Ordinal: 116 | RVA: 25c0 | Adress: 502D25C0 | Symbol: iswcntrl Index: 117 | Ordinal: 117 | RVA: 25db | Adress: 502D25DB | Symbol: iswctype Index: 118 | Ordinal: 118 | RVA: 25f6 | Adress: 502D25F6 | Symbol: iswdigit Index: 119 | Ordinal: 119 | RVA: 2611 | Adress: 502D2611 | Symbol: iswgraph Index: 120 | Ordinal: 120 | RVA: 262c | Adress: 502D262C | Symbol: iswlower Index: 121 | Ordinal: 121 | RVA: 2647 | Adress: 502D2647 | Symbol: iswprint Index: 122 | Ordinal: 122 | RVA: 2662 | Adress: 502D2662 | Symbol: iswpunct Index: 123 | Ordinal: 123 | RVA: 267d | Adress: 502D267D | Symbol: iswspace Index: 124 | Ordinal: 124 | RVA: 2698 | Adress: 502D2698 | Symbol: iswupper Index: 125 | Ordinal: 125 | RVA: 26b4 | Adress: 502D26B4 | Symbol: iswxdigit Index: 126 | Ordinal: 126 | RVA: 26d0 | Adress: 502D26D0 | Symbol: isxdigit Index: 127 | Ordinal: 127 | RVA: 26e8 | Adress: 502D26E8 | Symbol: mblen Index: 128 | Ordinal: 128 | RVA: 26fe | Adress: 502D26FE | Symbol: mbrlen Index: 129 | Ordinal: 129 | RVA: 2717 | Adress: 502D2717 | Symbol: memcpy_s Index: 130 | Ordinal: 130 | RVA: 2733 | Adress: 502D2733 | Symbol: memmove_s Index: 131 | Ordinal: 131 | RVA: 274d | Adress: 502D274D | Symbol: memset Index: 132 | Ordinal: 132 | RVA: 2764 | Adress: 502D2764 | Symbol: strcat Index: 133 | Ordinal: 133 | RVA: 277d | Adress: 502D277D | Symbol: strcat_s Index: 134 | Ordinal: 134 | RVA: 2796 | Adress: 502D2796 | Symbol: strcmp Index: 135 | Ordinal: 135 | RVA: 27ae | Adress: 502D27AE | Symbol: strcoll Index: 136 | Ordinal: 136 | RVA: 27c6 | Adress: 502D27C6 | Symbol: strcpy Index: 137 | Ordinal: 137 | RVA: 27df | Adress: 502D27DF | Symbol: strcpy_s Index: 138 | Ordinal: 138 | RVA: 27f9 | Adress: 502D27F9 | Symbol: strcspn Index: 139 | Ordinal: 139 | RVA: 2811 | Adress: 502D2811 | Symbol: strlen Index: 140 | Ordinal: 140 | RVA: 2829 | Adress: 502D2829 | Symbol: strncat Index: 141 | Ordinal: 141 | RVA: 2844 | Adress: 502D2844 | Symbol: strncat_s Index: 142 | Ordinal: 142 | RVA: 285f | Adress: 502D285F | Symbol: strncmp Index: 143 | Ordinal: 143 | RVA: 2878 | Adress: 502D2878 | Symbol: strncpy Index: 144 | Ordinal: 144 | RVA: 2893 | Adress: 502D2893 | Symbol: strncpy_s Index: 145 | Ordinal: 145 | RVA: 28ae | Adress: 502D28AE | Symbol: strnlen Index: 146 | Ordinal: 146 | RVA: 28c7 | Adress: 502D28C7 | Symbol: strpbrk Index: 147 | Ordinal: 147 | RVA: 28df | Adress: 502D28DF | Symbol: strspn Index: 148 | Ordinal: 148 | RVA: 28f6 | Adress: 502D28F6 | Symbol: strtok Index: 149 | Ordinal: 149 | RVA: 290f | Adress: 502D290F | Symbol: strtok_s Index: 150 | Ordinal: 150 | RVA: 2929 | Adress: 502D2929 | Symbol: strxfrm Index: 151 | Ordinal: 151 | RVA: 2942 | Adress: 502D2942 | Symbol: tolower Index: 152 | Ordinal: 152 | RVA: 295b | Adress: 502D295B | Symbol: toupper Index: 153 | Ordinal: 153 | RVA: 2976 | Adress: 502D2976 | Symbol: towctrans Index: 154 | Ordinal: 154 | RVA: 2992 | Adress: 502D2992 | Symbol: towlower Index: 155 | Ordinal: 155 | RVA: 29ad | Adress: 502D29AD | Symbol: towupper Index: 156 | Ordinal: 156 | RVA: 29c6 | Adress: 502D29C6 | Symbol: wcscat Index: 157 | Ordinal: 157 | RVA: 29df | Adress: 502D29DF | Symbol: wcscat_s Index: 158 | Ordinal: 158 | RVA: 29f8 | Adress: 502D29F8 | Symbol: wcscmp Index: 159 | Ordinal: 159 | RVA: 2a10 | Adress: 502D2A10 | Symbol: wcscoll Index: 160 | Ordinal: 160 | RVA: 2a28 | Adress: 502D2A28 | Symbol: wcscpy Index: 161 | Ordinal: 161 | RVA: 2a41 | Adress: 502D2A41 | Symbol: wcscpy_s Index: 162 | Ordinal: 162 | RVA: 2a5b | Adress: 502D2A5B | Symbol: wcscspn Index: 163 | Ordinal: 163 | RVA: 2a73 | Adress: 502D2A73 | Symbol: wcslen Index: 164 | Ordinal: 164 | RVA: 2a8b | Adress: 502D2A8B | Symbol: wcsncat Index: 165 | Ordinal: 165 | RVA: 2aa6 | Adress: 502D2AA6 | Symbol: wcsncat_s Index: 166 | Ordinal: 166 | RVA: 2ac1 | Adress: 502D2AC1 | Symbol: wcsncmp Index: 167 | Ordinal: 167 | RVA: 2ada | Adress: 502D2ADA | Symbol: wcsncpy Index: 168 | Ordinal: 168 | RVA: 2af5 | Adress: 502D2AF5 | Symbol: wcsncpy_s Index: 169 | Ordinal: 169 | RVA: 2b10 | Adress: 502D2B10 | Symbol: wcsnlen Index: 170 | Ordinal: 170 | RVA: 2b29 | Adress: 502D2B29 | Symbol: wcspbrk Index: 171 | Ordinal: 171 | RVA: 2b41 | Adress: 502D2B41 | Symbol: wcsspn Index: 172 | Ordinal: 172 | RVA: 2b58 | Adress: 502D2B58 | Symbol: wcstok Index: 173 | Ordinal: 173 | RVA: 2b71 | Adress: 502D2B71 | Symbol: wcstok_s Index: 174 | Ordinal: 174 | RVA: 2b8b | Adress: 502D2B8B | Symbol: wcsxfrm Index: 175 | Ordinal: 175 | RVA: 2ba3 | Adress: 502D2BA3 | Symbol: wctype Index: 176 | Ordinal: 176 | RVA: 2bbd | Adress: 502D2BBD | Symbol: wmemcpy_s Index: 177 | Ordinal: 177 | RVA: 2bdb | Adress: 502D2BDB | Symbol: wmemmove_s
Was ich gelernt habe:
- GetModuleInformation gibt nicht die Größe des Modules im virtuellen Adressraum zurück, sondern lediglich IMAGE_OPTIONAL_HEADER::SizeOfImage, ohne zu beachten, dass IMAGE_OPTIONAL_HEADER::SizeOfHeaders dafür sorgt, dass die Image Header nach IMAGE_OPTIONAL_HEADER::SectionAlignment ausgerichtet eingemappt werden. Bei Längenprüfungen war es meistens die Attribute Certificate Table, die immer ganz hinten im Image hinterlegt war und die aufgrund der fehlenden Bytes des Headers als außerhalb des Images angesehen wurde.
- Die Leute hinter PE haben ihr durch MZ verursachtes Vietnam-Trauma (Stichword: Relokation) offensichtlich gut verarbeitet.
- ASLR beruht auf der Hoffnung, dass ein Angreifer nicht genug Payload in das System einschleusen kann, um wie ich Symboltabellen durchzugehen.
- Der Unterschied zwischen Inkompetenz und die beleidigte Leberwurst spielen ist von außen nicht zu erkennen.
- Hanlon's Rasiermesser gilt auch für Punkt 4.
-
@Cerrseien
Mit der Art und Weise wie du hier auftrittst, motivierst du Leute nicht dir zu helfen. Also ich wüsste nicht wieso ich dir helfen wollen würde.
-
@hustbaer
Es ist also deinem Ego wichtiger, als beleidigte Leberwurst anerkannt zu werden, als für inkompetent - da kann ich mich ja nur für deine Nettigkeit bedanken, lieber geschwiegen zu haben, als deinen Instinkten gefolgt und mich auf eine falsche Fährte geführt zu haben.
-
@Cerrseien
Du hast ein ernsthaftes Problem.
Schönes Leben noch.
-
@Cerrseien sagte in Symbolliste für Module in Prozessbild programmatisch erlangen:
@hustbaer
Es ist also deinem Ego wichtiger, als beleidigte Leberwurst anerkannt zu werden, als für inkompetent - da kann ich mich ja nur für deine Nettigkeit bedanken, lieber geschwiegen zu haben, als deinen Instinkten gefolgt und mich auf eine falsche Fährte geführt zu haben.Entweder du bist so dermaßen überlegen gut, dass du dir diese Art von Arroganz leisten kannst, in dem Fall brauchst du sicherlich hier niemandes Hilfe, oder du brauchst Hilfe und deine Art aufzutreten ist total fehl am Platze. In jedem Fall bist du unhöflich.
-
Leute, könnt ihr bitte mit Beleidigungen & Gegenbeleidigungen aufhören? Danke, denn das hilft niemandem.
Das "auf eine nicht vollkommen zurückgebliebene Art und Weise" ist genauso unnötig wie alle Antworten darauf. Die Problembeschreibung (minus das Geschimpfe darin) klang für mich erstmal interessant, auch wenn ich mangels Windows-Kenntnissen nicht dazu beitragen kann.