i는, 값이 0x0100116e0,.pdb의 함수 주소가 .exe와 다른 이유는 무엇입니까?
BOOL CALLBACK SymEnumSymbolsProc(PSYMBOL_INFO pSymInfo, ULONG SymbolSize, PVOID UserContext)
{
if(pSymInfo != NULL)
{
// Show the symbol
std::string str = pSymInfo->Name;
if (str.find("main")!=-1)
{
int ss=pSymInfo->Address;
}
}
return TRUE;
}
입니다 SymEnumSymbols에 의해 .PDB 파일에서 내 주요 함수의 주소를 읽을 수 있지만 VS2008의 dissamble 코드에서이 함수의 주소가 난 후
int _tmain(int argc, const TCHAR* argv[])
{
004116E0 push ebp
004116E1 mov ebp,esp
...
{
004116E0입니다 SymGetSymFromAddr64에 2 개의 다른 주소를 전달하여 결과를 확인하려고했는데 예상 한 것과 동일한 funcitun 기호가 있습니다. 유일한 차이점은 PIMAGEHLP_SYMBOL64의 주소 구성원이었습니다. 하나는 100116e0이고 다른 하나는 4116E0이었습니다. 나는 또한 마이크로 소프트의 dbh.exe하여 확인하려고 명령이
load TestSymbolLookup.pdb
TestsymbolLookup [1000000]:n main
addr : 10116e0
name : main
size : b2c
flags : 0
type : 2
modbase: 1000000
value : 0
reg : 0
scope : SymTagExe<1>
tag : SymTagFunction<5>
index :1
내 주요 함수의 주소가 TestsymbolLookup.exe에서 고유이지만, 이유는 2 개의 다른 대답을 얻었 는가 ???
설명해 주셔서 감사합니다. – user1991149