首页
社区
课程
招聘
[分享]最近在研究系统,特意发个东东给大家玩~
发表于: 2008-1-10 07:16 19289

[分享]最近在研究系统,特意发个东东给大家玩~

2008-1-10 07:16
19289

代码不贴了大家自己下源代码,我感觉很像的~~~~
实际大家和代码里不难发现MS的一些保密的东西,很多东西都是我反汇编而来的因为MS并没有公开的!只是给有兴趣的朋友解解闷,并无其他请大家注意下载,好象FBI会找你麻烦的呵呵!!!
几天没上网了,也没来看雪了,今天看了看高手是好多了!也很荣幸我被分到了工具开发下组!虽然我的工具都不怎么滴,但是至少我相信能够方便点大家了!
原版是英文的我没汉化完!感觉打字很累人,就这样发出来吧!现在都正常了!
最近修了好几个。。可是就这个比较满意点!


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (46)
雪    币: 1946
活跃值: (248)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
2
reactos也有一份
2008-1-10 07:39
0
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不知道怎么用,,,,
2008-1-10 08:29
0
雪    币: 260
活跃值: (102)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
一模一样的啊!
2008-1-10 09:47
0
雪    币: 381
活跃值: (140)
能力值: ( LV13,RANK:330 )
在线值:
发帖
回帖
粉丝
5
是源码,简直不敢相信这是真的
2008-1-10 20:29
0
雪    币: 210
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
牛啊!期待其他东东
2008-1-10 20:49
0
雪    币: 254
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
相当牛。不得了了,离发现重大漏洞日子不远了
2008-1-10 20:57
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不错
学习去
2008-1-11 11:45
0
雪    币: 246
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
看样子比较像win2000的,嘿嘿
学习下,就是我的c挺差的,耐心也不大好(最大的毛病),所以现在还很菜
继续努力中~~~~
2008-1-11 11:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习下,就是我的c挺差的,耐心也不大好(最大的毛病),所以现在还很菜
继续努力中~~~~
2008-1-11 12:05
0
雪    币: 1657
活跃值: (291)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
11
研究系统不是为了发现漏洞!去利用漏洞!我更想知道~~人人都熟悉的WINDOWS是怎么工作的!别看书本上那一堆堆大道理!说不定很有一部分都不是对的!!!!或许只是含糊的提一下!知道这个的只有MS了~~~
2008-1-11 12:29
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
逆向吧~
这个不错。
2008-1-11 13:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
逆向……很好很强大……
2008-1-11 13:45
0
雪    币: 225
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
牛啊!期待explorer,winlogon,貌似一般的讨厌病毒木马都注入到这些里面,
2008-1-12 16:58
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
15
强悍 赶紧下载原码学习下~~
2008-1-12 17:22
0
雪    币: 707
活跃值: (1301)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
16
呵呵,只是显出来的图标有些不同!!
2008-1-12 17:28
0
雪    币: 66
活跃值: (16)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
17
... IMBA
2008-1-12 20:48
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
期待其他东东
2008-1-13 10:19
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
如果有Process Explorer源代码就好了
2008-1-13 10:23
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
难道是传说中的源码?一定要看看了
2008-1-15 14:39
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我下了。看看。呵呵。
2008-1-21 15:36
0
雪    币: 100
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
真是牛人啊,学习中!
2008-1-22 23:33
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
23
发个摘录版的userinit.exe的代码吧,写xx的人可以学习一下,机器狗的userinit.exe不支持cmd模式好挫啊~

static LONG
ReadRegSzKey(
        IN HKEY hKey,
        IN LPCWSTR pszKey,
        OUT LPWSTR* pValue)
{
        LONG rc;
        DWORD dwType;
        DWORD cbData = 0;
        LPWSTR Value;

        rc = RegQueryValueExW(hKey, pszKey, NULL, &dwType, NULL, &cbData);
        if (rc != ERROR_SUCCESS)
                return rc;
        if (dwType != REG_SZ)
                return ERROR_FILE_NOT_FOUND;
        Value = (WCHAR*) HeapAlloc(GetProcessHeap(), 0, cbData + sizeof(WCHAR));
        if (!Value)
                return ERROR_NOT_ENOUGH_MEMORY;
        rc = RegQueryValueExW(hKey, pszKey, NULL, NULL, (LPBYTE)Value, &cbData);
        if (rc != ERROR_SUCCESS)
        {
                HeapFree(GetProcessHeap(), 0, Value);
                return rc;
        }
        /* NULL-terminate the string */
        Value[cbData / sizeof(WCHAR)] = '\0';

        *pValue = Value;
        return ERROR_SUCCESS;
}

static
BOOL IsConsoleShell(void)
{
        HKEY ControlKey = NULL;
        LPWSTR SystemStartOptions = NULL;
        LPWSTR CurrentOption, NextOption; /* Pointers into SystemStartOptions */
        LONG rc;
        BOOL ret = FALSE;

        rc = RegOpenKeyEx(
                HKEY_LOCAL_MACHINE,
                REGSTR_PATH_CURRENT_CONTROL_SET,
                0,
                KEY_QUERY_VALUE,
                &ControlKey);

        rc = ReadRegSzKey(ControlKey, L"SystemStartOptions", &SystemStartOptions);
        if (rc != ERROR_SUCCESS)
                goto cleanup;

        /* Check for CMDCONS in SystemStartOptions */
        CurrentOption = SystemStartOptions;
        while (CurrentOption)
        {
                NextOption = wcschr(CurrentOption, L' ');
                if (NextOption)
                        *NextOption = L'\0';
                if (wcsicmp(CurrentOption, L"CMDCONS") == 0)
                {
                        ret = TRUE;
                        goto cleanup;
                }
                CurrentOption = NextOption ? NextOption + 1 : NULL;
        }

cleanup:
        if (ControlKey != NULL)
                RegCloseKey(ControlKey);
        HeapFree(GetProcessHeap(), 0, SystemStartOptions);
        return ret;
}

static
BOOL GetShell(WCHAR *CommandLine, HKEY hRootKey)
{
  HKEY hKey;
  DWORD Type, Size;
  WCHAR Shell[MAX_PATH];
  BOOL Ret = FALSE;
  BOOL ConsoleShell = IsConsoleShell();

  if(RegOpenKeyEx(hRootKey,
                  L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon", /* FIXME: should be REGSTR_PATH_WINLOGON */
                  0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
  {
    Size = MAX_PATH * sizeof(WCHAR);
    if(RegQueryValueEx(hKey,
                       ConsoleShell ? L"ConsoleShell" : L"Shell",
                       NULL,
                       &Type,
                       (LPBYTE)Shell,
                       &Size) == ERROR_SUCCESS)
    {
      if((Type == REG_SZ) || (Type == REG_EXPAND_SZ))
      {
        wcscpy(CommandLine, Shell);
        Ret = TRUE;
      }
    }
    RegCloseKey(hKey);
  }

  return Ret;
}

static VOID
StartAutoApplications(int clsid)
{
    WCHAR szPath[MAX_PATH] = {0};
    HRESULT hResult;
    HANDLE hFind;
    WIN32_FIND_DATAW findData;
    SHELLEXECUTEINFOW ExecInfo;
    size_t len;

    hResult = SHGetFolderPathW(NULL, clsid, NULL, SHGFP_TYPE_CURRENT, szPath);
    len = wcslen(szPath);
    if (!SUCCEEDED(hResult) || len == 0)
    {
      return;
    }

    wcscat(szPath, L"\\*");
    hFind = FindFirstFileW(szPath, &findData);
    if (hFind == INVALID_HANDLE_VALUE)
    {
      return;
    }
    szPath[len] = L'\0';

    do
    {
      if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && (findData.nFileSizeHigh || findData.nFileSizeLow))
      {
        memset(&ExecInfo, 0x0, sizeof(SHELLEXECUTEINFOW));
        ExecInfo.cbSize = sizeof(ExecInfo);
        ExecInfo.lpVerb = L"open";
        ExecInfo.lpFile = findData.cFileName;
        ExecInfo.lpDirectory = szPath;
        ShellExecuteExW(&ExecInfo);
      }
    }while(FindNextFileW(hFind, &findData));
    FindClose(hFind);
}

static BOOL
TryToStartShell(LPCWSTR Shell)
{
  STARTUPINFO si;
  PROCESS_INFORMATION pi;
  WCHAR ExpandedShell[MAX_PATH];

  ZeroMemory(&si, sizeof(STARTUPINFO));
  si.cb = sizeof(STARTUPINFO);
  ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));

  ExpandEnvironmentStrings(Shell, ExpandedShell, MAX_PATH);

  if(!CreateProcess(NULL,
                   ExpandedShell,
                   NULL,
                   NULL,
                   FALSE,
                   NORMAL_PRIORITY_CLASS,
                   NULL,
                   NULL,
                   &si,
                   &pi))
    return FALSE;

  StartAutoApplications(CSIDL_STARTUP);
  StartAutoApplications(CSIDL_COMMON_STARTUP);
  WaitForSingleObject(pi.hProcess, INFINITE);
  CloseHandle(pi.hProcess);
  CloseHandle(pi.hThread);
  return TRUE;
}

static
void StartShell(void)
{
  WCHAR Shell[MAX_PATH];
  TCHAR szMsg[RC_STRING_MAX_SIZE];

  /* Try to run shell in user key */
  if (GetShell(Shell, HKEY_CURRENT_USER) && TryToStartShell(Shell))
    return;

  /* Try to run shell in local machine key */
  if (GetShell(Shell, HKEY_LOCAL_MACHINE) && TryToStartShell(Shell))
    return;

  /* Try default shell */
  if (IsConsoleShell())
    {
      if(GetSystemDirectory(Shell, MAX_PATH - 8))
        wcscat(Shell, L"\\cmd.exe");
      else
        wcscpy(Shell, L"cmd.exe");
    }
    else
    {
      if(GetWindowsDirectory(Shell, MAX_PATH - 13))
        wcscat(Shell, L"\\explorer.exe");
      else
        wcscpy(Shell, L"explorer.exe");
    }
  if (!TryToStartShell(Shell))
  {
    LoadString( GetModuleHandle(NULL), STRING_USERINIT_FAIL, szMsg, sizeof(szMsg) / sizeof(szMsg[0]));
    MessageBox(0, szMsg, NULL, 0);
  }
}

WCHAR g_RegColorNames[][32] =
  {L"Scrollbar",            /* 00 = COLOR_SCROLLBAR */
  L"Background",            /* 01 = COLOR_DESKTOP */
  L"ActiveTitle",           /* 02 = COLOR_ACTIVECAPTION  */
  L"InactiveTitle",         /* 03 = COLOR_INACTIVECAPTION */
  L"Menu",                  /* 04 = COLOR_MENU */
  L"Window",                /* 05 = COLOR_WINDOW */
  L"WindowFrame",           /* 06 = COLOR_WINDOWFRAME */
  L"MenuText",              /* 07 = COLOR_MENUTEXT */
  L"WindowText",            /* 08 = COLOR_WINDOWTEXT */
  L"TitleText",             /* 09 = COLOR_CAPTIONTEXT */
  L"ActiveBorder",          /* 10 = COLOR_ACTIVEBORDER */
  L"InactiveBorder",        /* 11 = COLOR_INACTIVEBORDER */
  L"AppWorkSpace",          /* 12 = COLOR_APPWORKSPACE */
  L"Hilight",               /* 13 = COLOR_HIGHLIGHT */
  L"HilightText",           /* 14 = COLOR_HIGHLIGHTTEXT */
  L"ButtonFace",            /* 15 = COLOR_BTNFACE */
  L"ButtonShadow",          /* 16 = COLOR_BTNSHADOW */
  L"GrayText",              /* 17 = COLOR_GRAYTEXT */
  L"ButtonText",            /* 18 = COLOR_BTNTEXT */
  L"InactiveTitleText",     /* 19 = COLOR_INACTIVECAPTIONTEXT */
  L"ButtonHilight",         /* 20 = COLOR_BTNHIGHLIGHT */
  L"ButtonDkShadow",        /* 21 = COLOR_3DDKSHADOW */
  L"ButtonLight",           /* 22 = COLOR_3DLIGHT */
  L"InfoText",              /* 23 = COLOR_INFOTEXT */
  L"InfoWindow",            /* 24 = COLOR_INFOBK */
  L"ButtonAlternateFace",   /* 25 = COLOR_ALTERNATEBTNFACE */
  L"HotTrackingColor",      /* 26 = COLOR_HOTLIGHT */
  L"GradientActiveTitle",   /* 27 = COLOR_GRADIENTACTIVECAPTION */
  L"GradientInactiveTitle", /* 28 = COLOR_GRADIENTINACTIVECAPTION */
  L"MenuHilight",           /* 29 = COLOR_MENUHILIGHT */
  L"MenuBar"                /* 30 = COLOR_MENUBAR */
};
#define NUM_SYSCOLORS (sizeof(g_RegColorNames) / sizeof(g_RegColorNames[0]))

static
COLORREF StrToColorref(LPWSTR lpszCol)
{
  BYTE rgb[3];

  rgb[0] = StrToIntW(lpszCol);
  lpszCol = StrChrW(lpszCol, L' ') + 1;
  rgb[1] = StrToIntW(lpszCol);
  lpszCol = StrChrW(lpszCol, L' ') + 1;
  rgb[2] = StrToIntW(lpszCol);
  return RGB(rgb[0], rgb[1], rgb[2]);
}

static
void SetUserSysColors(void)
{
  HKEY hKey;
  INT i;
  WCHAR szColor[20];
  DWORD Type, Size;
  COLORREF crColor;

  if(!RegOpenKeyEx(HKEY_CURRENT_USER,
                  L"Control Panel\\Colors",
                  0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
  {
    return;
  }
  for(i = 0; i < NUM_SYSCOLORS; i++)
  {
    Size = sizeof(szColor);
    if(RegQueryValueEx(hKey, g_RegColorNames[i], NULL, &Type,
        (LPBYTE)szColor, &Size) == ERROR_SUCCESS && Type == REG_SZ)
    {
      crColor = StrToColorref(szColor);
      SetSysColors(1, &i, &crColor);
    }
  }
  RegCloseKey(hKey);
  return;
}

static
void LoadUserFontSetting(LPWSTR lpValueName, PLOGFONTW pFont)
{
  HKEY hKey;
  LOGFONTW lfTemp;
  DWORD Type, Size;
  INT error;

  Size = sizeof(LOGFONTW);
  if(!RegOpenKeyEx(HKEY_CURRENT_USER,
                  L"Control Panel\\Desktop\\WindowMetrics",
                  0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
  {
    return;
  }
  error = RegQueryValueEx(hKey, lpValueName, NULL, &Type, (LPBYTE)&lfTemp, &Size);
  if ((error != ERROR_SUCCESS) || (Type != REG_BINARY))
  {
    return;
  }
  RegCloseKey(hKey);
  /* FIXME: Check if lfTemp is a valid font */
  *pFont = lfTemp;
  return;
}

static
void LoadUserMetricSetting(LPWSTR lpValueName, INT *pValue)
{
  HKEY hKey;
  DWORD Type, Size;
  INT ret;
  WCHAR strValue[8];

  Size = sizeof(strValue);
  if(!RegOpenKeyEx(HKEY_CURRENT_USER,
                  L"Control Panel\\Desktop\\WindowMetrics",
                  0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
  {
    return;
  }
  ret = RegQueryValueEx(hKey, lpValueName, NULL, &Type, (LPBYTE)&strValue, &Size);
  if ((ret != ERROR_SUCCESS) || (Type != REG_SZ))
  {
    return;
  }
  RegCloseKey(hKey);
  *pValue = StrToInt(strValue);
  return;
}

static
void SetUserMetrics(void)
{
  NONCLIENTMETRICSW ncmetrics;
  MINIMIZEDMETRICS mmmetrics;

  ncmetrics.cbSize = sizeof(NONCLIENTMETRICSW);
  mmmetrics.cbSize = sizeof(MINIMIZEDMETRICS);
  SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICSW), &ncmetrics, 0);
  SystemParametersInfoW(SPI_GETMINIMIZEDMETRICS, sizeof(MINIMIZEDMETRICS), &mmmetrics, 0);

  LoadUserFontSetting(L"CaptionFont", &ncmetrics.lfCaptionFont);
  LoadUserFontSetting(L"SmCaptionFont", &ncmetrics.lfSmCaptionFont);
  LoadUserFontSetting(L"MenuFont", &ncmetrics.lfMenuFont);
  LoadUserFontSetting(L"StatusFont", &ncmetrics.lfStatusFont);
  LoadUserFontSetting(L"MessageFont", &ncmetrics.lfMessageFont);
  /* FIXME: load icon font ? */

  LoadUserMetricSetting(L"BorderWidth", &ncmetrics.iBorderWidth);
  LoadUserMetricSetting(L"ScrollWidth", &ncmetrics.iScrollWidth);
  LoadUserMetricSetting(L"ScrollHeight", &ncmetrics.iScrollHeight);
  LoadUserMetricSetting(L"CaptionWidth", &ncmetrics.iCaptionWidth);
  LoadUserMetricSetting(L"CaptionHeight", &ncmetrics.iCaptionHeight);
  LoadUserMetricSetting(L"SmCaptionWidth", &ncmetrics.iSmCaptionWidth);
  LoadUserMetricSetting(L"SmCaptionHeight", &ncmetrics.iSmCaptionHeight);
  LoadUserMetricSetting(L"Menuwidth", &ncmetrics.iMenuWidth);
  LoadUserMetricSetting(L"MenuHeight", &ncmetrics.iMenuHeight);

  SystemParametersInfoW(SPI_SETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICSW), &ncmetrics, 0);

  return;
}

static
void SetUserWallpaper(void)
{
  HKEY hKey;
  DWORD Type, Size;
  WCHAR szWallpaper[MAX_PATH + 1];

  if(RegOpenKeyEx(HKEY_CURRENT_USER,
                  REGSTR_PATH_DESKTOP,
                  0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
  {
    Size = sizeof(szWallpaper);
    if(RegQueryValueEx(hKey,
                       L"Wallpaper",
                       NULL,
                       &Type,
                       (LPBYTE)szWallpaper,
                       &Size) == ERROR_SUCCESS
       && Type == REG_SZ)
    {
      ExpandEnvironmentStrings(szWallpaper, szWallpaper, MAX_PATH);

      /* Load and change the wallpaper */
      SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, szWallpaper, SPIF_SENDCHANGE);
    }
    else
    {
      /* remove the wallpaper */
      SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, NULL, SPIF_SENDCHANGE);
    }
    RegCloseKey(hKey);
  }
}

static
void SetUserSettings(void)
{
  SetUserSysColors();
  SetUserMetrics();
  SetUserWallpaper();
}

typedef DWORD (WINAPI *PCMP_REPORT_LOGON)(DWORD, DWORD);

static VOID
NotifyLogon(VOID)
{
    HINSTANCE hModule;
    PCMP_REPORT_LOGON CMP_Report_LogOn;

    hModule = LoadLibrary(L"setupapi.dll");
    if (hModule)
    {
        CMP_Report_LogOn = (PCMP_REPORT_LOGON)GetProcAddress(hModule, "CMP_Report_LogOn");
        if (CMP_Report_LogOn)
            CMP_Report_LogOn(CMP_MAGIC, GetCurrentProcessId());

        FreeLibrary(hModule);
    }
}

#ifdef _MSC_VER
#pragma warning(disable : 4100)
#endif /* _MSC_VER */

int WINAPI
WinMain(HINSTANCE hInst,
        HINSTANCE hPrevInstance,
        LPSTR lpszCmdLine,
        int nCmdShow)
{
  NotifyLogon();
  SetUserSettings();
  StartShell();
  return 0;
}
2008-1-23 02:06
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
24
上述代码copy于reactos 0.3.3 RC工程
2008-1-23 02:07
0
雪    币: 204
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
哦。下载了,,运行了。的确MS的一模一样。。佩服。。
2008-1-23 13:14
0
游客
登录 | 注册 方可回帖
返回
//