我试用期结束后的作品,交到主管那里竟然在关闭界面的时候崩溃,求求热心的呢救我一命

jyzdtn 2010-07-30 04:11:44
在点击 button3 的时候会加载下面这个路径的 dll
str = "D:\\de\\HookSleepDLL\\Debug\\HookSleepDLL.dll";
点按钮 弹出程序,同时将dll注入

dll注入没问题,可惜在关闭程序的时候报错“XX内存错误,不能为write”

值得一提的是  \dll\debug 这个路径 下的dll 不会引起内存崩溃

求求大家帮我调试下
9我一命!!!
http://download.csdn.net/source/2585410
程序下载了把新建文件夹改名为 de 啊,不然找不到路径

关键是比较那2个dll 有什么区别,前一个是我的引起崩溃,后一个是实例

主管催了
...全文
278 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyzdtn 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 zwfgdlc 的回复:]
没玩过detour,一般自己手动整。
[/Quote]
zwfgdlc 2010-08-01
  • 打赏
  • 举报
回复
没玩过detour,一般自己手动整。
wykqhyjs 2010-07-31
  • 打赏
  • 举报
回复
关注哈之
gjskxy1 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lisunlin0 的回复:]
你的MessageBox用的不是时候。还有SetDllDirectory用得不对,而且多此一举。
[/Quote]
if(NO_ERROR!=error)
{
::MessageBox(NULL,("Error!"),("Error in Detours!"),MB_OK);
}
这个出错处理有问题吗
gjskxy1 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lisunlin0 的回复:]
你的MessageBox用的不是时候。还有SetDllDirectory用得不对,而且多此一举。
[/Quote]
SetDllDirectory 注释掉还是报错
gjskxy1 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lisunlin0 的回复:]
C/C++ code
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include "detours.h"
#pragma comment(lib,"detoured")
#pragma comment(lib,"detours")
void _stdcall……
[/Quote]
额我把你的代码全部COPY过来 倒是真的不报错了,大哥你真牛啊,我Q 895000080,做个朋友啊
我把我以前的代码贴上来,大家比较下是哪区别,本质原因在哪
#include "stdafx.h"
#include "detours.h"
#pragma comment(lib,"detoured")
#pragma comment(lib,"detours")
void _stdcall myTest()
{

}
static VOID (WINAPI * TrueSleep)(DWORD dwMilliseconds) = Sleep;
VOID WINAPI DelaySleep(DWORD dwMilliseconds){
TrueSleep(dwMilliseconds+15000);
}


BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
int error;
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
DetourTransactionBegin();
DetourUpdateThread(::GetCurrentThread());
DetourAttach(&(PVOID&)TrueSleep, DelaySleep);
error = DetourTransactionCommit();
if(NO_ERROR!=error)
{
::MessageBox(NULL,("Error!"),("Error in Detours!"),MB_OK);
}
SetDllDirectory("D:\\Detours\\lib");
SetDllDirectory("D:\\Detours\\lib");
break;
case DLL_PROCESS_DETACH:
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach(&(PVOID&)TrueSleep, DelaySleep);
error = DetourTransactionCommit();
::MessageBox(NULL,("Detour ends"),("Prompt!"),MB_OK);
break;






case DLL_THREAD_ATTACH:

SetDllDirectory("D:\\Detours\\lib\\detours.lib");
SetDllDirectory("D:\\Detours\\lib\\detoured.lib");

break;




}
return TRUE;
}
UUcall007 2010-07-30
  • 打赏
  • 举报
回复
发个图片看看
gjskxy1 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lisunlin0 的回复:]
C/C++ code
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include "detours.h"
#pragma comment(lib,"detoured")
#pragma comment(lib,"detours")
void _stdcall……
[/Quote]
弹出的程序 点ok 关闭还是报错
gjskxy1 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lisunlin0 的回复:]
C/C++ code
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include "detours.h"
#pragma comment(lib,"detoured")
#pragma comment(lib,"detours")
void _stdcall……
[/Quote]
改动了什么地方吗
gjskxy1 2010-07-30
  • 打赏
  • 举报
回复
错误ox01175c93 指令引用的ox013052c8内存,该内存不能为 written
sunlin7 2010-07-30
  • 打赏
  • 举报
回复
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include "detours.h"
#pragma comment(lib,"detoured")
#pragma comment(lib,"detours")
void _stdcall myTest()
{

}
static VOID (WINAPI * TrueSleep)(DWORD dwMilliseconds) = &::Sleep;
VOID WINAPI DelaySleep(DWORD dwMilliseconds){
TrueSleep(dwMilliseconds+15000);
}


BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
int error;
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
DetourTransactionBegin();
DetourUpdateThread(::GetCurrentThread());
DetourAttach(&(PVOID&)TrueSleep, DelaySleep);
error = DetourTransactionCommit();

break;
case DLL_PROCESS_DETACH:
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach(&(PVOID&)TrueSleep, DelaySleep);
error = DetourTransactionCommit();
break;

case DLL_THREAD_ATTACH:
break;
}
return TRUE;
}




就可以了。
sunlin7 2010-07-30
  • 打赏
  • 举报
回复
你的MessageBox用的不是时候。还有SetDllDirectory用得不对,而且多此一举。
vincent_1011 2010-07-30
  • 打赏
  • 举报
回复
不和你玩了,没玩detour也不想开大块头VS08
jyzdtn 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lisunlin0 的回复:]
王八蛋,下载还扣我分~~
[/Quote]
下载不扣分啊,我实在调试不好了
vincent_1011 2010-07-30
  • 打赏
  • 举报
回复
在等离职,帮你调试下,不过怎么这么大,没把垃圾文件清掉吗?
sunlin7 2010-07-30
  • 打赏
  • 举报
回复
王八蛋,下载还扣我分~~
sunlin7 2010-07-30
  • 打赏
  • 举报
回复
你先求主管宽限一下~~

明天和后天两天时间你自己牺牲一下休息时间,仔细调试一下,呵呵
angloy 2010-07-30
  • 打赏
  • 举报
回复
是用VC6.0做得吗?
jyzdtn 2010-07-30
  • 打赏
  • 举报
回复
调试不出来
麻烦兄弟们帮我下载了http://download.csdn.net/source/2585410
要我怎么报答都行
wanshi131 2010-07-30
  • 打赏
  • 举报
回复
自己调试一下

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧