Robert Hartmann
2015-07-18 06:09:15 UTC
Hallo zusammen,
Warum liefern
printf("%p\n",(void*)vfprintf);
und
printf("%p\n",(void*)GetProcAddress(GetModuleHandle("msvcrt.dll"),"vfprintf");
verschiedene Ausgaben (compiliert mit mingw32 gcc,
mingw32 linkt per default gegen msvcrt.dll).
Irgend etwas offensichtliches hab ich übersehen - nur was?
Gruß Robert
P.S. Hier drin hab ich vieles gefunden, mit dem ich mir
ein Hello-PE-Header-Programm gebaut habe.
"Microsoft PE and COFF Specification":
https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx
====Beispiel Code code.c ====
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<windows.h>
int main(int argc, char* argv[]){
HMODULE msvcrt_dll=GetModuleHandle(TEXT("msvcrt.dll"));
assert(msvcrt_dll);
PROC vfprintf_getProcAdress = GetProcAddress(msvcrt_dll,TEXT("vfprintf"));
printf("vfprintf: %p \n vfprintf_getProcAdress: %p \n",(void*)vfprintf,
(void*)vfprintf_getProcAdress);
assert ((DWORD_PTR) vfprintf == (DWORD_PTR) vfprintf_getProcAdress);
return 0;
}
======================
gcc -DDEBUG -D_DEBUG code.c -o code.exe
======================
Warum liefern
printf("%p\n",(void*)vfprintf);
und
printf("%p\n",(void*)GetProcAddress(GetModuleHandle("msvcrt.dll"),"vfprintf");
verschiedene Ausgaben (compiliert mit mingw32 gcc,
mingw32 linkt per default gegen msvcrt.dll).
Irgend etwas offensichtliches hab ich übersehen - nur was?
Gruß Robert
P.S. Hier drin hab ich vieles gefunden, mit dem ich mir
ein Hello-PE-Header-Programm gebaut habe.
"Microsoft PE and COFF Specification":
https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx
====Beispiel Code code.c ====
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<windows.h>
int main(int argc, char* argv[]){
HMODULE msvcrt_dll=GetModuleHandle(TEXT("msvcrt.dll"));
assert(msvcrt_dll);
PROC vfprintf_getProcAdress = GetProcAddress(msvcrt_dll,TEXT("vfprintf"));
printf("vfprintf: %p \n vfprintf_getProcAdress: %p \n",(void*)vfprintf,
(void*)vfprintf_getProcAdress);
assert ((DWORD_PTR) vfprintf == (DWORD_PTR) vfprintf_getProcAdress);
return 0;
}
======================
gcc -DDEBUG -D_DEBUG code.c -o code.exe
======================