-
-
[求助][求助]求大神帮萌新看看DLL代码,运行老是报堆栈损毁!DLL代码是逆向工程核心原理的示例代码!
-
发表于:
2017-6-14 23:41
3219
-
[求助][求助]求大神帮萌新看看DLL代码,运行老是报堆栈损毁!DLL代码是逆向工程核心原理的示例代码!
include <tchar.h>
#include <windows.h>
#pragma comment(lib,"urlmon.lib")
#define DEF_URL (L"f98K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2Z5j5h3)9I4x3U0y4Q4x3X3g2U0L8$3#2Q4x3V1k6A6L8X3c8W2P5q4)9J5k6h3S2@1L8h3H3`.")
#define DEF_FILE_NAME (L"index.html")
HMODULE g_hMod;
DWORD WINAPI ThreadProc(LPVOID lparam)
{
TCHAR szPath[_MAX_PATH]={0,};
if(!GetModuleFileName(g_hMod,szPath,MAX_PATH))
return FALSE;
TCHAR *p=_tcsrchr(szPath,'\\');
if(!p)
return FALSE;
_tcscpy_s(p+1,_MAX_PATH,DEF_FILE_NAME);
URLDownloadToFile(NULL,DEF_URL,szPath,0,NULL);
return 0;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
HANDLE hThread=NULL;
g_hMod=(HMODULE)hinstDLL;
switch(fdwReason){
case DLL_PROCESS_ATTACH :
OutputDebugString(L"myhack.dll Injection!!!");
hThread=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
CloseHandle(hThread);
break;
}
return TRUE;
}
错误提示
求大神解惑
问题在 _tcscpy_s(p+1, _MAX_PATH, DEF_FILE_NAME);函数的第二个参数,第二个参数为整个数组的剩余的元素个数,该参数可以小于数组的实际数目但不能大于数组的实际数目。不然 _tcscpy_s()函数调用memset函数填充数组时会照成栈溢出把要验证的值给覆盖掉。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课