|
书中的理论知识总是学不透咋办?
实践是检验正理的唯一标准,hoho |
|
读取某个时刻下某个寄存器或某个地址的内容
73D34518 03C8 add ecx, eax 73D3451A 51 push ecx 73D3451B E8 D4E0FFFF call <jmp.&msvcrt.memcpy> 73D34520 8B06 mov eax, dword ptr [esi] 73D34522 83C4 0C add esp, 0C 73D3451B E8 D4E0FFFF call <jmp.&msvcrt.memcpy> 类似动态内存patch,加载程序,注入dll ,在执行到真正入口点后,把这个call替换为自己的地址,再通过pushad获取当前所有寄存器值到堆栈上,取得你想关注的寄存器,作处理,最后再popad,调用原始memcpy,跳回73D34520即可。 |
|
[原创]发个代码...嗯很垃圾的代码,初学的可以看下
好东西,下了就回帖 |
|
[原创]驱动加载监控工具
图一目了然,表达就该这样,学习。 |
|
[求助]不想活了谁能给看看为啥我这个驱动代码老蓝屏啊
MyFunctionAddress=(ULONG)MmGetSystemRoutineAddress(L"NtOpenProcess"); FirstAddress=*(ULONG*)MyFunctionAddress; |
|
[原创]花了2WRMB参加的CISP培训课件,免费给大家看
好东西,感谢了,不少地方公务员考试这个证书必须的 |
|
[求助]我真的想去自杀!
纯粹灌水之作,浮云... |
|
求停止线程源码
发个挂起目标进程所有线程的代码,是否挂起成功没判断 BOOL SuspendProcThread (DWORD dwTargetPid) { HANDLE hThreadSnap = NULL; BOOL bRet = FALSE; THREADENTRY32 te32 = {0}; DWORD dwOwnerPID = GetCurrentProcessId(); HANDLE hThread = NULL; if (dwTargetPid == dwOwnerPID) { return (FALSE); } hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if (hThreadSnap == INVALID_HANDLE_VALUE) { return (FALSE); } te32.dwSize = sizeof(THREADENTRY32); // 遍历所有该PID的线程 if (Thread32First(hThreadSnap, &te32)) { do { if (hThread) { CloseHandle(hThread); hThread = NULL; } if (te32.th32OwnerProcessID == dwTargetPid) { hThread = OpenThread(THREAD_ALL_ACCESS,FALSE,te32.th32ThreadID); if (!hThread) continue; SuspendThread(hThread); } } while (Thread32Next(hThreadSnap, &te32)); bRet = TRUE; } else { bRet = FALSE; } // 清理 CloseHandle (hThreadSnap); return (bRet); } |
|
|
|
[求助]c++输入缓冲问题,哪位大哥帮忙看看
超过6个的后一个就是you的输入,不需要输入了 for(int j=0;j<1;j++) 不知道这个程序想干嘛,按照猜想的意思,这里是不是j<argsize? |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值