鱼C论坛

 找回密码
 立即注册
查看: 4713|回复: 3

为什么无法注入(已经获得管理员权限并进行了令牌提权)

[复制链接]
发表于 2016-8-19 09:22:36 | 显示全部楼层 |阅读模式
5鱼币
无法注入dll,注入过程中没有发现任何错误,我的电脑是x64的,平台也是换成了x64,好像还是没用
exe代码:
  1. #include<Windows.h>
  2. #include<Stdio.h>
  3. #include<Psapi.h>
  4. #include<TlHelp32.h>

  5. DWORD GetProcessID(char *name)
  6. {
  7.         HANDLE snapshot;
  8.         PROCESSENTRY32 processinfo;
  9.         processinfo.dwSize = sizeof(processinfo);
  10.         snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  11.         if (snapshot == NULL)
  12.                 return FALSE;

  13.         BOOL status = Process32First(snapshot, &processinfo);
  14.         while (status)
  15.         {
  16.                 if (_stricmp(name, processinfo.szExeFile) == 0)
  17.                         return processinfo.th32ProcessID;
  18.                 status = Process32Next(snapshot, &processinfo);
  19.         }
  20.         return -1;
  21. }

  22. int main()
  23. {
  24.         DWORD Processid;
  25.         CHAR name[1000];
  26.         CHAR DllName[1000];
  27.         DWORD dwProcessId;
  28.         HANDLE hProcess;
  29.         TCHAR* pDllName;
  30.         BOOL bSuccess;
  31.         HANDLE hThread;
  32.         HANDLE hToken;
  33.         LUID sedebugnameValue;
  34.         TOKEN_PRIVILEGES tkp;

  35.         printf("输入要注入的程序名称:");
  36.         scanf("%s", name);

  37.         dwProcessId = GetProcessID(name);
  38.         strcpy(DllName, "HOOK.dll");


  39.         if (!OpenProcessToken(GetCurrentProcess(),
  40.                 TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
  41.                 printf("打开令牌失败,错误代码:%d", GetLastError());
  42.                 Sleep(3000);
  43.                 return 0;
  44.         }
  45.         if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue))
  46.         {
  47.                 CloseHandle(hToken);
  48.                 printf("提权失败,错误代码:%d", GetLastError());
  49.                 Sleep(3000);
  50.                 return 0;
  51.         }
  52.         tkp.PrivilegeCount = 1;
  53.         tkp.Privileges[0].Luid = sedebugnameValue;
  54.         tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  55.         if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL))
  56.         {
  57.                 CloseHandle(hToken);
  58.                 printf("提权失败,错误代码:%d", GetLastError());
  59.                 Sleep(3000);
  60.                 return 0;
  61.         }

  62.         hProcess = OpenProcess(
  63.                 PROCESS_CREATE_THREAD |
  64.                 PROCESS_VM_OPERATION |
  65.                 PROCESS_VM_WRITE,
  66.                 FALSE, dwProcessId);
  67.         if (hProcess == NULL)
  68.         {
  69.                 printf("打开进程失败,错误代码:%d", GetLastError());
  70.                 Sleep(3000);
  71.                 return 0;
  72.         }
  73.         pDllName = (TCHAR*)VirtualAllocEx(hProcess,
  74.                 NULL,
  75.                 strlen(DllName),
  76.                 MEM_COMMIT,
  77.                 PAGE_READWRITE);
  78.         if (pDllName == NULL)
  79.         {
  80.                 printf("分配内存失败,错误代码:%d", GetLastError());
  81.                 Sleep(3000);
  82.                 return 0;
  83.         }
  84.         bSuccess = WriteProcessMemory(hProcess,
  85.                 (LPVOID)pDllName,
  86.                 &DllName,
  87.                 strlen(DllName),
  88.                 NULL);
  89.         if (bSuccess == 0)
  90.         {
  91.                 printf("写入内存失败,错误代码:%d", GetLastError());
  92.                 Sleep(3000);
  93.                 return 0;
  94.         }
  95.         PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)
  96.                 GetProcAddress(GetModuleHandle(TEXT("Kernel32.dll")), "LoadLibraryW");
  97.         if (pfnThreadRtn == NULL)
  98.         {
  99.                 printf("获取LoadLinrary地址失败,错误代码:%d", GetLastError());
  100.                 Sleep(3000);
  101.                 return 0;
  102.         }
  103.         hThread = CreateRemoteThread(hProcess,
  104.                 NULL,
  105.                 0,
  106.                 pfnThreadRtn,
  107.                 pDllName,
  108.                 0,
  109.                 NULL);
  110.         if (hThread == NULL)
  111.         {
  112.                 printf("创建远程线程失败,错误代码:%d", GetLastError());
  113.                 Sleep(3000);
  114.                 return 0;
  115.         }
  116.         WaitForSingleObject(hThread, INFINITE);
  117.         VirtualFreeEx(hProcess,
  118.                 &pDllName,
  119.                 strlen(DllName),
  120.                 MEM_RELEASE);
  121.         printf("成功将HOOK.dll注入到目标进程中");
  122.         Sleep(INFINITE);
  123.         WaitForSingleObject(hThread, INFINITE);
  124.         return 0;
  125. }
复制代码

dll代码:
  1. #include<windows.h>

  2. LRESULT WINAPI MsgProc(int, WPARAM, LPARAM);

  3. HHOOK g_hHook = NULL;
  4. HINSTANCE g_hInstance;

  5. BOOL WINAPI DllMain(HINSTANCE hInstanceDll, DWORD fdwReason, PVOID ImpLoad)
  6. {
  7.         switch (fdwReason)
  8.         {
  9.         case DLL_PROCESS_ATTACH:
  10.                 g_hInstance = hInstanceDll;
  11.                 g_hHook = SetWindowsHookEx(WH_GETMESSAGE, MsgProc, hInstanceDll, 0);
  12.                 MessageBox(NULL, TEXT("学编程到鱼C论坛\nbbs.fishc.com\n按“确认打开bbs.fishc.com”"), TEXT("提醒"), MB_OK | MB_ICONEXCLAMATION);
  13.                 system("start bbs.fishc.com");
  14.                 return TRUE;
  15.         case DLL_PROCESS_DETACH:
  16.                 UnhookWindowsHookEx(g_hHook);
  17.         }
  18. }

  19. LRESULT WINAPI MsgProc(int nCode, WPARAM wParam, LPARAM lParam)
  20. {
  21.         MessageBox(NULL, TEXT("学编程到鱼C论坛\nbbs.fishc.com\n按“确认打开bbs.fishc.com”"), TEXT("提醒"), MB_OK | MB_ICONEXCLAMATION);
  22.         system("start bbs.fishc.com");
  23.         return  CallNextHookEx(g_hHook, nCode, wParam, lParam);
  24. }
复制代码

注入成功了,但是注入没啥用,已经获得管理员权限并进行了令牌提权
输出:
testeeeeee.JPG
求大神帮忙!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-8-19 09:27:52 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-19 10:24:45 | 显示全部楼层
本帖最后由 迷雾少年 于 2016-8-19 10:27 编辑

WIN7x64 下普通的线程注入好像失效了 之前我也试过没用
http://bbs.csdn.net/topics/391019707
http://bbs.csdn.net/topics/390402108
http://bbs.fishc.com/thread-45167-1-1.html
你可以试试shellcode注入 我的一个帖子有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-8-19 10:28:24 | 显示全部楼层
迷雾少年 发表于 2016-8-19 10:24
WIN7x64 下普通的线程注入好像失效了 之前我也试过没用
http://bbs.csdn.net/topics/391019707
http://bb ...

恩恩,我试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 22:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表