-
-
[旧帖]
[原创][申请邀请码]vc通用注入器编写+源码
0.00雪花
-
发表于:
2011-1-12 22:21
3196
-
[旧帖] [原创][申请邀请码]vc通用注入器编写+源码
0.00雪花
主界面有
一个下拉列表框用于 列出当前系统进程,一个编辑框用于显示当前选择要注入的dll文件。
下面这段代码用于通用对话框选择dll文件
void C注入器Dlg::OnBnClickedBtnChoosedll()
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlg( TRUE );//设置通用对话框为打开 true为打开对话框 FALSE为另存为对话框
dlg.m_ofn.lpstrFilter=_T("DLL FILES(*.DLL)\0*.DLL\0ALL Files(*.*)\0*.*\0\0");//这个重点说下
//m_ofn是个结构体 其中lpstrFilter是设置后缀名的 不同类型的文件以\0分割最后以\0\0结尾
if ( dlg.DoModal() == IDOK )
{
DllPath=dlg.GetPathName();//取全路径
UpdateData(FALSE);
}
}
这段是用ToolHelpAPI遍历出进程信息
void C注入器Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
m_mylist.ResetContent();//清空列表
HANDLE hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//建立系统快照
PROCESSENTRY32* processInfo=new PROCESSENTRY32;
processInfo->dwSize=sizeof(PROCESSENTRY32);
int C=0;
while(Process32Next(hSnapShot,processInfo)!=FALSE)//开始遍历取进程信息
{C++;
CString str;
str.Format(_T("%d"),processInfo->th32ProcessID);//取得pid
str=_T(" [PID]:")+str;//整理格式
m_mylist.AddString(processInfo->szExeFile+str);//向列表加入进程名
}
CloseHandle(hSnapShot);//关闭句柄
}
当下拉列表选择是 作用的是下面这段代码
CString str; //这开始有点乱 毕竟自学的
m_mylist.GetLBText(m_mylist.GetCurSel(),str);//取得当前选中项文本
int n=str.Find(_T(":"),0);//查找取得文本中“:”的位置
str=str.Mid(n,6);//以前面整理字符串中”[PID]:“中的“:”为特征截取PID
str=str.Mid(1,6);//这个不要笑我哈 实在没想到其他办法了 其实这句作用很简单就是把 “:pid”前面的“:”给去掉
m_pid=_tcstoul(str,NULL,10);//pid转成整数 给上面的注入函数使用
最后的是注入函数代码段
BOOL Inject(LPCTSTR szModule, DWORD dwID)
{
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwID);//打开进程
if ( !hProcess ) {
AfxMessageBox(_T("打开进程失败"));
return FALSE;
}
int cByte = (_tcslen(szModule)+1) * sizeof(TCHAR);
LPVOID pAddr = VirtualAllocEx(hProcess, NULL, cByte, MEM_COMMIT, PAGE_READWRITE);//申请内存
if ( !pAddr || !WriteProcessMemory(hProcess, pAddr, szModule, cByte, NULL))//写入dll地址
{
AfxMessageBox(_T("申请内存失败"));
return FALSE;
}...........后面的由于篇幅没有写完
下面给出完整的源码 如果有不对的地方希望大家批评指正
注入器源码.rar
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!