Mfc获取函数地址..T T 要求: 用DWORD 变量获取RtlEnterCriticalSection函数地址...并将

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mfc获取函数地址..T T 要求: 用DWORD 变量获取RtlEnterCriticalSection函数地址...并将相关的知识,希望对你有一定的参考价值。

此变量用AfxMessageBox显示出来 嗯 差不多就是这样了...
这是我目前写的..
DWORD MyGetProAdd(CString DllName,CString FunctionName)

HMODULE hDll;
DWORD Return;
hDll=GetModuleHandle(DllName);
Return=(DWORD)GetProcAddress(hDll,FunctionName);
return Return;

VOID ByPassHs()

//1243你懂得
//传说中的4 2 3 1
//咱们先来获取那些跳转地址
EhsvcBase=(DWORD)GetModuleHandle("ehsvc.dll");

if (EhsvcBase!=NULL)


RtlEnterAdd=MyGetProAdd("Kernel32.dll","RtlEnterCriticalSection");

else AfxMessageBox("地址获取失败");

void BypassHsIcs()

CString CIcsHsAdd;
CString CSleepAdd;
CString CRtlEnterAdd;
CIcsHsAdd.Format(_T("%d"),IcsHsAdd);
CSleepAdd.Format(_T("%d"),SleepAdd);
CRtlEnterAdd.Format(_T("%d"),RtlEnterAdd);
AfxMessageBox(CIcsHsAdd);
AfxMessageBox(CSleepAdd);
AfxMessageBox(CRtlEnterAdd);
__asm

lea esp,[esp+04]
mov eax,[EhsvcBase]
add eax,0x2951c
mov Eaxabout,eax
cmp [esp+0x50],eax
jne Ret1
Ret1:
push [RtlEnterAdd]
ret


这样虽然可以显示出来东西 可是数字一看就是不对的...求完善 各种求

参考技术A 你可以用编译器自带的 dumpbin 输出 程序中所用函数地址。
你写个程序,含你要查的函数,把程序 编译 成 exe 文件。
dumpbin /选项 你的.exe
我忘了 选项 是不是 /imports, 它能列出 KERNEL32.dll USER32.dll 等里面你用到的函数的相对地址。
只打 dumpbin 时,可以看 命令用法 提示。

MFC: 获取可执行文件目录 + 写日志函数

获取可执行文件目录

inline CString GetExeDir()
{
    TCHAR szPath[ MAX_PATH ] = { 0 };
    GetModuleFileName( NULL, szPath, MAX_PATH );

    CString csFullPath( szPath );
    int nPos = csFullPath.ReverseFind( _T( ‘\‘ ) );
    if( nPos < 0 )
        return CString( "" );
    else
        return csFullPath.Left( nPos );
}

写日志函数

#include <locale> 

inline void WriteLog( const CString& strLog )
{   
    setlocale( LC_CTYPE, ( "chs" ) );//写入中文

    CTime tm = CTime::GetCurrentTime();
    CString strLogDir = GetExeDir() + "/Log/" + tm.Format( "%Y-%m" );
    if( !PathIsDirectory( strLogDir ) )
        CreateDirectory( strLogDir, 0 );

    CString strFilePath = strLogDir + tm.Format( "/Sensitive-%Y-%m-%d.txt" );   
    CString strLogText = tm.Format( "[%Y-%m-%d %H:%M:%S]: " ) + strLog;

    CStdioFile  file;
    BOOL bOpen = file.Open( strFilePath, CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate );
    if( !bOpen )
        return;
    file.SeekToEnd();
    file.WriteString( strLogText );
    file.WriteString( _T( "
" ) );//换行
    file.Flush();
    file.Close();
}

以上是关于Mfc获取函数地址..T T 要求: 用DWORD 变量获取RtlEnterCriticalSection函数地址...并将的主要内容,如果未能解决你的问题,请参考以下文章

MFC中的CTime类该怎么用

写mfc的几个error

写mfc的几个error

写mfc的几个error

MFC: 获取可执行文件目录 + 写日志函数

MFC怎么获取控件地址