|
|
|
[原创]简单分析VMProtect V1.10
细节讲解到位, 感谢分享。 |
|
[讨论][求助]反调试问题
吾之初心_717666 调试游戏遇到和楼主一样的问题断点下不了,SE2.3.9的壳;NtSetInformationThread的参数也是0000000A;下断点(硬断,int3, 内存)游戏假死 取消后恢复,如果下断点的同 ...KiUserExceptionDispather这个函数的断点要注意了, 可以尝试下断点更深入一些, 某些程序会检测函数头。 然后, 啥游戏? |
|
[讨论][求助]反调试问题
Xu. 回复在上面,忘了引用消息,感谢你持续的关注。你是附加的这个程序么? ThreadHideFromDebugger 的设置不需要一直调用,他只用在程序运行之前调用一次即可。 |
|
[讨论][求助]反调试问题
你下的断点是硬件断点,还是软件断点?调试器设置一下不要忽略异常。看看会不会产生异常并且中断。 程序没有在KiUserExceptionDispather断下来,有可能是你的调试器处理了这个异常,那么异常处理流程肯定不会进入到这个流程。你顺便再看看硬件断点是否是被占坑了(查看DR0~DR7的值); 可以尝试在非关键代码上面任意下一个硬件断点, 看看会不会出现程序退出。 在非常关键代码上使用int3 断点来下一个断点,看看有没有可能是程序的对函数代码等有检测。如果是API断点的话, 尝试把断点下的更深入一些, 不要在函数头下断点。 如果以上都不是的话, 那么可能还是因为这个程序设置了ThreadHideFromDebugger. |
|
[讨论][求助]反调试问题
那你再看看程序是不是设置了UEH(UnhandlerExceptionFilter),并且还在UEH里面处理由程序主动触发的异常。 UEH在有调试器的情况下不会被调用,所以如果你的调试器忽略了这个异常,那么程序也是基本上直接就退了。 你现在可以这样测试一波,在异常分发之前(在异常发给调试器或者程序之前, 在NTDLL.dll, 找到KiUserExceptionDispather的处理流程里面)下一个断点, 然后在你的目标程序里面下断点,然后借此看看你的的断点命中之后会不会进入异常分发之前设置的这个断点, 如果断下来了, 借此看看程序在什么地方被停止了。 |
|
[讨论][求助]反调试问题
你的程序发出来看看, 检测点应该是不少的, 你提供的信息太少了。 你的2,3 两点,估计是程序调用NtSetInformationThread设置了标志ThreadHideFromDebugger导致的。
最后于 2019-4-13 17:22
被你的香气编辑
,原因:
|
|
|
|
发一个自己写的简单32位游戏保护
好贴,mark |
|
[求助]关于hook D3D时,游戏崩溃,求高手帮助
可能是你这里导致 栈崩溃了 mov esp, ebp |
|
[求助]內存注入DLL問題,求解
跨进程加载DLL ,可以使用CreateRemoteThread 创建远程线程函数来进行加载。 HANDLE hHandle = ::OpenProcess(PROCESS_ALL_ACCESS, false, nPid); if (NULL == hHandle) { CloseHandle(hHandle); return false; } DWORD dwWritten; LPVOID lpBuf = VirtualAllocEx(hHandle, NULL, MAX_PATH, MEM_COMMIT, PAGE_READWRITE); if (NULL == lpBuf) { CloseHandle(hHandle); return false; // 失败处理 } if (WriteProcessMemory(hHandle, lpBuf, (LPVOID)str, MAX_PATH, &dwWritten)) { // 要写入字节数与实际写入字节数如果不相等,则调用失败! if (dwWritten != MAX_PATH) { VirtualFreeEx(hHandle, lpBuf, MAX_PATH, MEM_DECOMMIT); CloseHandle(hHandle); return false; // 失败处理 } } else { VirtualFreeEx(hHandle, lpBuf, MAX_PATH, MEM_DECOMMIT); CloseHandle(hHandle); return false; // 失败处理 } // 使目标进程调用LoadLibrary,加载DLL DWORD dwID; HANDLE hThread = CreateRemoteThread(hHandle, NULL, 0, (LPTHREAD_START_ROUTINE)pFunc, lpBuf, 0, &dwID); // 等待线程执行完毕 WaitForSingleObject(hThread, INFINITE); |
|
[原创]java如何实现伪造发信地址---针对于邮件攻击
感谢楼主分享 |
|
[原创]360的P2P下载接口
非常感谢 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值