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
这样虽然可以显示出来东西 可是数字一看就是不对的...求完善 各种求
你写个程序,含你要查的函数,把程序 编译 成 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函数地址...并将的主要内容,如果未能解决你的问题,请参考以下文章