能力值:
( LV2,RANK:10 )
|
-
-
2 楼
代码贴出来啊兄弟
|
能力值:
( LV6,RANK:85 )
|
-
-
3 楼
拍手笑沙鸥
代码贴出来啊兄弟
代码应该没有问题,记事本可以注入成功,win7 计算器也可以注入成功,就win10 计算器不知道为啥不行
|
能力值:
( LV3,RANK:30 )
|
-
-
4 楼
注入用的程序是64位吗?你的代码在我的系统上成功了...
|
能力值:
( LV6,RANK:85 )
|
-
-
5 楼
Boring勇哥
注入用的程序是64位吗?你的代码在我的系统上成功了...
是64位
|
能力值:
( LV3,RANK:30 )
|
-
-
6 楼
自己的小白
是64位
你可以把dll的名称改成ntdll,然后等待线程结束后读取线程的退出代码(也就是LoadLibraryA的返回值),看看是不是nullptr。这样可以排除注入程序的问题。
|
能力值:
( LV5,RANK:71 )
|
-
-
7 楼
win10 64 进程名?calc?
|
能力值:
( LV6,RANK:85 )
|
-
-
8 楼
|
能力值:
( LV6,RANK:85 )
|
-
-
9 楼
Boring勇哥
你可以把dll的名称改成ntdll,然后等待线程结束后读取线程的退出代码(也就是LoadLibraryA的返回值),看看是不是nullptr。这样可以排除注入程序的问题。
我试试看,感谢
|
能力值:
( LV6,RANK:85 )
|
-
-
10 楼
Boring勇哥
你可以把dll的名称改成ntdll,然后等待线程结束后读取线程的退出代码(也就是LoadLibraryA的返回值),看看是不是nullptr。这样可以排除注入程序的问题。
我注入记事本退出代码就不是0,注入计算器退出代码就是0
|
能力值:
( LV8,RANK:130 )
|
-
-
11 楼
win10 各种奇葩的限制 ASLR CFG GS保护 ACG CIG保护啊 还有在ETW新增加的一大坨监视 原先win7不监视的一些中断 页面 异常啊 键鼠啊 它都可以检测 默认开启的hypervistor啊 页面隔离补丁啊 各种细节 你都注意到了吗
最后于 2020-3-26 13:53
被killpy编辑
,原因:
|
能力值:
( LV6,RANK:81 )
|
-
-
12 楼
low level原因吧?或许你dll打印调试信息是成功的
|
能力值:
( LV6,RANK:85 )
|
-
-
13 楼
killpy
win10 各种奇葩的限制 ASLR CFG GS保护 ACG CIG保护啊&nb ...
好多都不了解,学到了,感谢
|
能力值:
( LV6,RANK:85 )
|
-
-
14 楼
mlgbwoai
low level原因吧?或许你dll打印调试信息是成功的
低权限吗,我提权了
|
能力值:
( LV1,RANK:0 )
|
-
-
15 楼
我也没成功....你成功了么
|
能力值:
( LV6,RANK:85 )
|
-
-
16 楼
|
能力值:
( LV3,RANK:30 )
|
-
-
17 楼
楼主你的win10版本号多少我装个试试
|
能力值:
( LV6,RANK:85 )
|
-
-
18 楼
|
能力值:
( LV3,RANK:30 )
|
-
-
19 楼
我知道了。 如图,我用调试器附加在计算器上手动加载一个dll,失败了,LastError是ERROR_ACCESS_DENIED。 经查资料发现,计算器在win10系统中是 App Containor(类似于沙箱的虚拟环境)
应用程序
,这种应用程序会受制于一个特殊的系统用户 "ALL APPLICATION PACKAGES",检查被加载的dll文件的访问控制列表可知,上述用户没有访问此文件的权限,故拒绝访问。 解决方案:如图,手动修改dll文件的访问控制列表,授予"ALL APPLICATION PACKAGES"读取和执行权限。 验证: 加载成功。理论上远程线程也会加载成功。
|
能力值:
( LV6,RANK:85 )
|
-
-
20 楼
感谢,学到了
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
#include <iostream>
#include <windows.h>
#include <string.h>
#include <string>
using namespace std;
HWND hwnd = NULL;
DWORD dwProcessId = NULL;
HANDLE hProcess = NULL;
PVOID lpPathAddr = NULL;
char pszDllFileName[25] = "F:\\test\\1\\2Dll1.dll";
char loadfunc[25] = "LoadLibraryA";
FARPROC loadfuncaddr = NULL;
BOOL todo(){
hwnd = ::FindWindow("Notepad", NULL); //以注入记事本为例
if (hwnd == NULL)
{
MessageBox(NULL, "找不到记事本", "错误", MB_OK);
}
GetWindowThreadProcessId(hwnd, &dwProcessId);
// 1.打开目标进程
HANDLE hProcess = OpenProcess(
PROCESS_ALL_ACCESS, // 打开权限
FALSE, // 是否继承
dwProcessId); // 进程PID
if (NULL == hProcess)
{
MessageBox(NULL, "打开目标进程失败", "错误", MB_OK);
return FALSE;
}
// 2.在目标进程中申请空间
LPVOID lpPathAddr = VirtualAllocEx(
hProcess, // 目标进程句柄
0, // 指定申请地址
strlen(pszDllFileName) + 1, // 申请空间大小
MEM_RESERVE | MEM_COMMIT, // 内存的状态
PAGE_READWRITE); // 内存属性
if (NULL == lpPathAddr)
{
MessageBox(NULL, "在目标进程中申请空间失败", "错误", MB_OK);
CloseHandle(hProcess);
return FALSE;
}
// 3.在目标进程中写入Dll路径
SIZE_T dwWriteSize = 0;
if (FALSE == WriteProcessMemory(
hProcess, // 目标进程句柄
lpPathAddr, // 目标进程地址
pszDllFileName, // 写入的缓冲区
strlen(pszDllFileName) + 1, // 缓冲区大小
&dwWriteSize)) // 实际写入大小
{
MessageBox(NULL, "目标进程中写入Dll路径失败!", "错误", MB_OK);
CloseHandle(hProcess);
return FALSE;
}
//获取LoadLibraryA的函数地址
//FARPROC可以自适应32位与64位
FARPROC pFuncProcAddr = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");
if (NULL == pFuncProcAddr)
{
MessageBox(NULL, "获取LoadLibrary函数地址失败!", "错误", MB_OK);
CloseHandle(hProcess);
return FALSE;
}
// 4.在目标进程中创建线程
HANDLE hThread = CreateRemoteThread(
hProcess, // 目标进程句柄
NULL, // 安全属性
NULL, // 栈大小
(PTHREAD_START_ROUTINE)pFuncProcAddr, // 回调函数
lpPathAddr, // 回调函数参数
NULL, // 标志
NULL // 线程ID
);
if (NULL == hThread)
{
MessageBox(NULL, "目标进程中创建线程失败!", "错误", MB_OK);
CloseHandle(hProcess);
return FALSE;
}
// 5.等待线程结束
WaitForSingleObject(hThread, -1);
// 6.清理环境
VirtualFreeEx(hProcess, lpPathAddr, 0, MEM_RELEASE);
CloseHandle(hThread);
CloseHandle(hProcess);
return TRUE;
}
int main()
{
std::cout << "Hello World!\n";
todo();
}
注入DLL还是借用你的 BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
MessageBox(NULL, L"远程线程注入成功!", L"提示", NULL);
break;
}
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
我借用你的记事本都注入不了,能否帮抽空看下,操作系统版本如下:
|