{"id":273078,"date":"2016-01-28T10:20:03","date_gmt":"2016-01-28T07:20:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=273078"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=273078","title":{"rendered":"\u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u0441\u0435\u043c \u043c\u043e\u0436\u043d\u043e, \u0430 \u043c\u043d\u0435 \u043d\u0435\u043b\u044c\u0437\u044f?\u00bb \u0438\u043b\u0438 \u0440\u0435\u0432\u0435\u0440\u0441\u0438\u043c API \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 eToken"},"content":{"rendered":"\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/ec8\/ede\/09e\/ec8ede09ea0b4ca48f037cbfb7cb7ce7.jpg\"\/><\/div>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>  \u041e\u0434\u043d\u0430\u0436\u0434\u044b, \u0443 \u043d\u0430\u0441 \u043d\u0430 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0438 \u0432\u0441\u0442\u0430\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u041e\u0427\u0415\u041d\u042c \u0412\u0410\u0416\u041d\u042b\u0425 \u0424\u0410\u0419\u041b\u041e\u0412. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0441\u043b\u043e\u0432\u043e \u0437\u0430 \u0441\u043b\u043e\u0432\u043e, \u0438 \u043f\u0440\u0438\u0448\u043b\u0438 \u043c\u044b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e scp, \u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u043a\u043b\u044e\u0447 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430 \u0431\u0440\u0435\u043b\u043a\u0435 \u0442\u0438\u043f\u0430 eToken, \u0431\u043b\u0430\u0433\u043e \u0438\u0445 \u0443 \u043d\u0430\u0441 \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e.<\/p>\n<p>  \u0418\u0434\u0435\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439, \u043d\u043e \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c? \u0422\u0443\u0442 \u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b, \u043a\u0430\u043a \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0432 \u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u0438\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0431\u0430\u043d\u043a-\u043a\u043b\u0438\u0435\u043d\u0442, \u0440\u0443\u0433\u0430\u044f\u0441\u044c \u043d\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c etsdk.dll, \u043c\u0435\u043d\u044f \u043e\u0445\u0432\u0430\u0442\u0438\u043b\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u043e \u0438 \u044f \u043f\u043e\u043b\u0435\u0437 \u0435\u0435 \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c.<\/p>\n<p>  \u0412\u043e\u043e\u0431\u0449\u0435, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0441\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 SDK, \u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u041f\u041e, \u0430 \u044d\u0442\u043e \u044f\u0432\u043d\u043e \u043d\u0435 \u044f. \u041d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043d\u0430\u0439\u0442\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u043d\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u043e \u043e\u0434\u0435\u0440\u0436\u0430\u043b\u043e \u0432\u0435\u0440\u0445 \u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0441\u0451\u043c \u0441\u0430\u043c. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u2013 \u0432\u043e\u0442 \u043e\u043d\u0430, \u0432\u0440\u0435\u043c\u044f \u0435\u0441\u0442\u044c, \u043a\u0442\u043e \u043c\u0435\u043d\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442?<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b DLL Export Viewer \u043e\u0442 NirSoft, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043c\u043d\u0435 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439. \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e, \u043f\u0440\u043e\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043c\u0430\u043b\u043e, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/61d\/98e\/923\/61d98e923f594c53838f462e2ec42484.jpg\"\/><\/div>\n<p>  \u0422\u0443\u0442-\u0442\u043e \u0438 \u043f\u0440\u0438\u0448\u043b\u0430 \u043f\u043e\u0440\u0430 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043c\u043e\u043b\u043e\u0434\u043e\u0441\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c OllyDbg \u0432\u0435\u0440\u0441\u0438\u0438 2.01, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 ccom.dll \u043a\u0440\u0438\u043f\u0442\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041a\u0440\u0438\u043f\u0442\u043e-\u041a\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0431\u0430\u043d\u043a-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0439 \u0442\u0443 \u0441\u0430\u043c\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 etsdk.dll, \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043d\u0435\u0442, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e loaddll.exe \u0438\u0437 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430 Olly, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438 \u043d\u0435 \u043c\u0435\u0447\u0442\u0430\u0442\u044c. \u041f\u043e \u0441\u0443\u0442\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u043a\u0430\u043a \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 (\u0434\u0430, \u0435\u0441\u0442\u044c IDA, \u043d\u043e \u0441 \u043d\u0435\u0439 \u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u043d\u0430 \u043f\u043b\u0430\u0442\u043d\u0430\u044f).<\/p>\n<p>  \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Search for &gt; All intermodular calls, \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0438 \u0438\u0449\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043d\u0430 ET*, \u0438 \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043c. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0441\u043f\u0438\u0441\u043a\u0435 \u043c\u044b \u0438\u0449\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u044b GetProcAddress, \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0438\u0445 \u0438 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043d\u0430\u0442\u044b\u043a\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0443\u0437\u043d\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 ETReadersEnumOpen, \u0430 \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0435\u0432\u0448\u0438\u0441\u044c \u0447\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u0438\u0434\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 etsdk.dll.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/12f\/bc0\/d32\/12fbc0d325904ddaac7048b0fb8089eb.jpg\"\/><\/div>\n<p>  \u041d\u0435\u043f\u043b\u043e\u0445\u043e. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0442\u0438\u043f\u0430 MOV DWORD PTR DS:[10062870],EAX, \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u0442\u0430\u043a\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Find references to &gt; Address constant. \u0412 \u043e\u0442\u043a\u0440\u044b\u0432\u0448\u0435\u043c\u0441\u044f \u043e\u043a\u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0438 \u0432\u0441\u0435 \u043c\u0435\u0441\u0442\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e \u043d\u0438\u043c \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2013 \u044d\u0442\u0438\u043c \u043c\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u043c \u0441\u0435\u0431\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u0436\u0438\u0437\u043d\u044c.<\/p>\n<p>  \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u0438\u0437\u0443\u0447\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u0435\u043b\u044f\u0445. \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043c\u0435\u0441\u0442\u0443 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 ETReadersEnumOpen \u0438, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c, \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e ETReadersEnumOpen, \u043e\u0431\u0430 ETReadersEnumNext \u0438 ETReadersEnumClose \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043b\u0438\u0441\u044c \u0432 \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2013 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043e\u043d\u0430, \u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<p>  \u0412\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e \u0432\u044b\u0437\u043e\u0432\u0435 cdecl. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 EAX, \u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0435\u043a \u0441\u043f\u0440\u0430\u0432\u0430-\u043d\u0430\u043b\u0435\u0432\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u043e\u0439\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u2013 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442\u0441\u044f \u0434\u043e \u043d\u0435\u0433\u043e, \u0447\u0442\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442 \u043d\u0430\u043c \u0436\u0438\u0437\u043d\u044c.<\/p>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0437\u043e\u0432\u0430 ETReadersEnumOpen:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/5db\/cef\/ef6\/5dbcefef65e54ff4bf0580bd1803c600.jpg\"\/><\/div>\n<p>  \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u043e\u0431\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043d\u0435\u043a\u0443\u044e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0430 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430, \u0435\u0441\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0440\u0430\u0432\u0435\u043d 0, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043a\u0438\u0439 \u044f\u0432\u043d\u043e \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434, \u0430 \u0435\u0441\u043b\u0438 \u0440\u0430\u0432\u0435\u043d \u2013 \u0438\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 (\u043a\u043e\u043c\u0430\u043d\u0434\u0430 JGE \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0435\u0441\u043b\u0438 \u0444\u043b\u0430\u0433\u0438 ZF \u0438 OF \u0440\u0430\u0432\u043d\u044b, \u0430 \u0444\u043b\u0430\u0433 OF \u043a\u043e\u043c\u0430\u043d\u0434\u0430 TEST \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 0). \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a: \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u0435\u0440\u043d\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u0438\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0430 \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u043b\u0438 0 \u0435\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0435\u0442.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a ETReadersEnumNext:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/923\/2f8\/452\/9232f845223246c7a7236029136edea2.jpg\"\/><\/div>\n<p>  \u0412 \u043d\u0435\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430: \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ETReadersEnumOpen (\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f) \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u043a\u0443\u0434\u0430, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041f\u0440\u0438\u0447\u0435\u043c \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0441\u043f\u0440\u0430\u0432\u0430-\u043d\u0430\u043b\u0435\u0432\u043e, \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2013 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u2013 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u041a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u0441\u0435 \u0442\u0430\u043a \u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 EAX, \u043f\u0440\u0438\u0447\u0435\u043c, \u0441\u0443\u0434\u044f \u043f\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0446\u0438\u043a\u043b\u0430, \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u043d\u043e \u0438 \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u043d\u0435\u0447\u0435\u0433\u043e. <\/p>\n<p>  \u0421 ETReadersEnumClose \u0432\u0441\u0435 \u0435\u0449\u0435 \u043f\u0440\u043e\u0449\u0435: \u0432 \u043d\u0435\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u043d\u0443 \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u0432\u043e\u043b\u043d\u0443\u0435\u0442.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/a58\/d5f\/460\/a58d5f46069047c6a18ac4c3efa386e9.jpg\"\/><\/div>\n<p>  \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430\u0448\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445. \u0422\u0443\u0442 \u044f \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043b\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435: \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u0438 \u044f \u2013 \u0441\u0438\u0441\u0430\u0434\u043c\u0438\u043d, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2013 \u044d\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043c\u043e\u0435. \u041f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u043c\u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0443\u0436\u0435\u043d Bash \u0438 Python \u043f\u043e\u0434 Linux, \u043d\u0443 \u0430 \u0435\u0441\u043b\u0438 \u043c\u043d\u0435 \u043d\u0430\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0432\u0430\u044f\u0442\u044c \u043f\u043e\u0434 Windows, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043f\u043e\u043b\u044e\u0431\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u043c\u043d\u0435 <a href=\"http:\/\/www.autoitscript.com\">AutoIt<\/a>. <br \/>  \u041f\u043b\u044e\u0441\u0430\u043c\u0438 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f:   <\/p>\n<ul>\n<li>\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c (\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e portable), <\/li>\n<li>\u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 GUI, <\/li>\n<li>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 (\u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430), <\/li>\n<li>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. <\/li>\n<\/ul>\n<p>  \u041c\u0438\u043d\u0443\u0441\u044b:  <\/p>\n<ul>\n<li>\u041d\u0435\u044f\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u043e\u0432 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432.<\/li>\n<li>\u041e\u0442\u0441\u0443\u0442\u0432\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 (\u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432) \u0438 \u041e\u041e\u041f (\u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u043d\u043e \u0435\u0441\u0442\u044c, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f COM-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u043a\u0430\u043a \u0431\u044b \u0438 \u043d\u0435\u0442\u0443).<\/li>\n<\/ul>\n<p>  \u042d\u0442\u043e \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u0430\u044f\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 AutoIt. \u0412\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043d\u0435\u044f\u0432\u043d\u043e\u0439 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432 \u044f\u0437\u044b\u043a\u0435, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0440\u044f\u0432\u043e, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c: \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043c\u044b \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u043c, \u0447\u0442\u043e \u0438 \u043a\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0443\u0444\u0435\u0440 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442. \u041a\u043e\u0434 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430:<\/p>\n<pre><code class=\"vbscript\">Dim $ETSdkDll=DllOpen('etsdk.dll') Dim $buf=DllStructCreate('BYTE[32]')  Func PrintBuf($buf) \tFor $i=1 To DllStructGetSize($buf) \t\tConsoleWrite(Hex(DllStructGetData($buf,'buf',$i),2)&' ') \tNext \tConsoleWrite(@CRLF) EndFunc  ConsoleWrite('Buffer before: ') PrintBuf($buf) $result=DllCall($ETSdkDll,'DWORD','ETReadersEnumOpen', _ \t'PTR',DllStructGetPtr($buf) _ ) ConsoleWrite('Buffer after:  ') PrintBuf($buf) ConsoleWrite('Return value: '&$result[0]&@CRLF)<\/code><\/pre>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0435\u0433\u043e, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u044b\u0432\u043e\u0434 \u0442\u0438\u043f\u0430 \u0442\u0430\u043a\u043e\u0433\u043e:<\/p>\n<pre><code>Buffer before: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  Buffer after:  44 6F C8 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  Return value: 0<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0438 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0435 4 \u0431\u0430\u0439\u0442\u0430, \u0437\u043d\u0430\u0447\u0438\u0442, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f 4-\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0435 \u0446\u0435\u043b\u043e\u0435, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0447\u0435\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f:<\/p>\n<pre><code class=\"vbscript\">Func ETReaderEnumOpen() \tLocal $id=DllStructCreate('DWORD') \tLocal $result=DllCall($ETSdkDll,'DWORD','ETReadersEnumOpen', _ \t\t'PTR',DllStructGetPtr($id) _ \t) \tReturn $result[0]?0:DllStructGetData($id,1) EndFunc<\/code><\/pre>\n<p>  \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 ETReadersEnumNext \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: \u043f\u0435\u0440\u0432\u044b\u0435 260 \u0431\u0430\u0439\u0442 \u0431\u0443\u0444\u0435\u0440\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0438\u043c\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043d\u0443\u043b\u0438. \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u043b \u043c\u043d\u0435 \u0432\u0441\u0435 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u0435\u043b\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0434 ruToken \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0442\u0440\u0438 \u0448\u0442\u0443\u043a\u0438). \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u0434 eToken \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0447\u0438\u0441\u043b\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438, \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435, \u0443 \u043d\u0438\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u0435\u0434\u0435\u043d\u0438\u0446\u0443 261-\u0439 \u0431\u0430\u0439\u0442 \u0431\u0443\u0444\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0441\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u043d\u0430\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439. \u0415\u0441\u043b\u0438 \u0432\u0433\u043b\u044f\u0434\u0435\u0442\u044c\u0441\u044f \u0432 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0442\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0438, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 261-\u0439 \u0431\u0430\u0439\u0442 \u0440\u0430\u0432\u0435\u043d 0, \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0430\u0439\u0442\u044b \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0443 \u0432\u0441\u0435\u0445 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0440\u0430\u0432\u043d\u044b 0 \u0438 \u043d\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0441\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435. \u041e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0437\u043e\u0432\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0435\u043b\u0430\u0435\u043c bind \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u0435\u043b\u044f, \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u043e\u0436\u0435\u043c \u0443\u0437\u043d\u0430\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u0435, \u043f\u043e\u0442\u043e\u043c \u0434\u0435\u043b\u0430\u0435\u043c \u043b\u043e\u0433\u0438\u043d, \u0438 \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 ETTokenBind \u0438 ETTokenUnbind. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/40a\/8ec\/a14\/40a8eca1427d4ef48c0aa3129c236852.jpg\"\/><\/div>\n<p>  ETTokenBind \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u043e \u0438 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043d\u043e, \u043f\u043e\u043a\u043e\u0432\u044b\u0440\u044f\u0432\u0448\u0438\u0441\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043f\u0435\u0440\u0432\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u2013 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u043e\u0439 328 \u0431\u0430\u0439\u0442 (0x0148), \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u2013 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u0435\u043b\u044f. \u041f\u0443\u0442\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e, \u0447\u0442\u043e \u0432 \u043f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u0430\u0439\u0442\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 (\u0434\u0430\u043b\u0435\u0435: \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438). \u0414\u043b\u044f \u0447\u0435\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u044c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u0443\u0444\u0435\u0440 \u2013 \u043f\u043e\u043a\u0430 \u0437\u0430\u0433\u0430\u0434\u043a\u0430. \u0421 \u043a\u0430\u043a\u0438\u043c\u0438 \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438 \u044f \u0431\u044b \u043d\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 324 \u0431\u0430\u0439\u0442\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u043d\u0443\u043b\u044f\u043c\u0438. \u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u0447\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 ETTokenUnbind \u0438 ETTokenRebind.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/587\/3ff\/554\/5873ff554554450f9067690a1f1f5aaf.jpg\"\/><\/div>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u2013 ETRootDirOpen. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430: \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443. \u0423 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439.<br \/>  \u041f\u0435\u0440\u0432\u043e\u0435: \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u043d\u0443\u043b\u044e (\u0443\u0441\u043f\u0435\u0445), \u043d\u043e \u0438 \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u043c\u043b\u0430\u0434\u0448\u0438\u0445 \u0434\u0432\u0443\u0445 \u0431\u0430\u0439\u0442 \u0447\u0438\u0441\u043b\u0443 0x6982, \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0432\u0435\u043d \u044d\u0442\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0443, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 ETTokenLogin, \u0430 \u043f\u043e\u0442\u043e\u043c \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u0432\u0430\u0442\u044c ETRootDirOpen. \u041e\u0442\u0441\u044e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0447\u0442\u043e 0x6982 \u2013 \u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438, \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0439 \u00ab\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f\u00bb. \u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0438 \u043f\u0430\u043f\u043a\u0430\u043c\u0438, \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0442\u0430\u043a \u0436\u0435.<br \/>  \u0412\u0442\u043e\u0440\u043e\u0435: \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 0xF007. \u0412\u044b\u0437\u043e\u0432\u043e\u0432 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438 \u0432 \u043a\u043e\u0434\u0435 \u043d\u0435\u0442. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u043a\u0430\u043a-\u0442\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u043d\u0430 \u0442\u043e\u043a\u0435\u043d (\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u0445 \u043f\u0430\u043f\u043e\u043a?). \u042f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043f\u0440\u043e\u0439\u0442\u0438 \u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441\u043e\u043c \u043f\u043e \u0432\u0441\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0434\u0432\u0443\u0445\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438 \u0442\u043e\u043a\u0435\u043d \u043e\u0442\u043a\u043b\u0438\u043a\u043d\u0443\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0x0001, 0xF001-0xF00B (\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e, \u043a\u0441\u0442\u0430\u0442\u0438, \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b). \u041f\u043e\u0437\u0436\u0435 \u044f \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u0447\u0442\u043e \u043d\u0430 \u0441\u0432\u0435\u0436\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u0435 \u0436\u0435 \u043f\u0430\u043f\u043a\u0438. \u041f\u043e\u0434\u0443\u043c\u0430\u0432 \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u043f\u043e \u0437\u0430\u043c\u044b\u0441\u043b\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439, \u0438 \u0433\u0434\u0435-\u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e 0xF007 \u2013 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0439.<br \/>  \u0422\u0440\u0435\u0442\u044c\u0435: \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e, \u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0443 \u0442\u043e\u0433\u043e 328-\u0431\u0430\u0439\u0442\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0434\u0435\u043b\u044f\u043b\u0441\u044f \u0440\u0430\u043d\u0435\u0435, \u0438\u0437 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u0442\u043e\u0442 \u0431\u0443\u0444\u0435\u0440 \u2013 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0445\u0440\u0430\u043d\u044f\u0449\u0430\u044f \u0441\u0430\u043c\u044b\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0438 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430.<\/p>\n<p>  \u0420\u0430\u0437 \u0443\u0436 \u043f\u043e\u0448\u043b\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0435\u0439. \u0424\u0443\u043d\u043a\u0446\u0438\u044f ETTokenLogin \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430: \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u0431\u0443\u0444\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u043e\u0434\u043d\u0430\u043a\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u0442\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c: \u0435\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0438\u043b\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0440\u0438\u0441\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043f\u0430\u0440\u043e\u043b\u044f, \u0435\u0441\u043b\u0438 \u0436\u0435 \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043d\u0435\u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u2013 \u044d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u0430\u0440\u043e\u043b\u044c. ETTokenLogout \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439: ETDirEnumOpen, ETDirEnumNext \u0438 ETDirEnumClose. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0443\u0442\u0430\u0442\u044c, \u043d\u0435 \u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f \u0432 \u043a\u043e\u0434. \u0412 \u043e\u0431\u0449\u0435\u043c \u0438 \u0446\u0435\u043b\u043e\u043c \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a ETReadersEnum*, \u0441 \u0442\u043e\u0439 \u043b\u0438\u0448\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0435\u0439, \u0447\u0442\u043e \u0432 ETDirEnumOpen \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0435\u0449\u0435 \u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0430\u043f\u043a\u0438. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u2013 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u0413\u0440\u0443\u043f\u043f\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 ETFilesEnumOpen, ETFilesEnumNext \u0438 ETFilesEnumClose \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0430\u043a \u0436\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e \u0441 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u044b \u043f\u043e\u043a\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u043c, \u0442.\u043a. \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430, \u0441\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435\u0442, \u0430 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u043e\u0440\u0430 \u0443\u0445\u043e\u0434\u0438\u0442\u044c \u0432\u0433\u043b\u0443\u0431\u044c \u0434\u0435\u0440\u0435\u0432\u0430 \u043f\u0430\u043f\u043e\u043a, \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 ETDirOpen.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/af9\/f52\/e66\/af9f52e666284397ac54c710a62aeb47.jpg\"\/><\/div>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u043c API, \u043f\u043e\u0445\u043e\u0436\u0435, \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u044f, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439, \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0435\u0440\u043d\u043e \u0438 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437. \u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432\u0438\u0434\u043e\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b MOVZX EDI,DI, \u0442.\u0435. \u0441\u043b\u043e\u0432\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u0434\u0432\u043e\u0439\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0443\u0445\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0435 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435. \u041d\u0443 \u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u043e \u043b\u043e\u0433\u0438\u043a\u0435 \u0432\u0435\u0449\u0435\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0438. \u041f\u0440\u043e\u0431\u0443\u0435\u043c \u2013 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. ETDirClose \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432: 1 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2013 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0430\u043f\u043a\u0438.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0430\u043f\u043a\u0438 \u043d\u0430 \u0442\u043e\u043a\u0435\u043d\u0435. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u043a\u043e\u0434 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 (\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 DllCall \u044f \u0442\u0443\u0442 \u043d\u0435 \u0434\u0435\u043b\u0430\u044e \u2013 \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438):<\/p>\n<pre><code class=\"vbscript\">Func PrintDir($Id,$Prefix) \tLocal $EnumId=ETDirEnumOpen($Id) \tWhile 1 \t\tLocal $dir=ETDirEnumNext($EnumId) \t\tIf @error Then ExitLoop \t\tConsoleWrite($Prefix&'(dir)'&Hex($dir,4)&@CRLF) \t\tLocal $DirId=ETDirOpen($dir,$Id) \t\tPrintDir($DirId,$Prefix&@TAB) \t\tETDirClose($DirId) \tWEnd \tETDirEnumClose($EnumId) \t$EnumId=ETFilesEnumOpen($Id) \tWhile 1 \t\tLocal $file=ETFilesEnumNext($EnumId) \t\tIf @error Then ExitLoop \t\tConsoleWrite($Prefix&'(file)'&Hex($file,4)&@CRLF) \tWEnd \tETFilesEnumClose($EnumId) EndFunc  Local $EnumId=ETReaderEnumOpen() If $EnumId Then \tWhile 1 \t\tLocal $reader=ETReaderEnumNext($EnumId) \t\tIf @error Then ExitLoop \t\tIf Not $reader[1] Then ContinueLoop \t\tLocal $BindId=ETTokenBind($reader[0]) \t\tConsoleWrite($reader[0]&':'&@CRLF) \t\tETTokenLogin($BindId,'123456') \t\tLocal $DirId=ETRootDirOpen($BindId) \t\tPrintDir($DirId,@TAB) \t\tETDirClose($DirId) \tWEnd EndIf ETReaderEnumClose($EnumId)<\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438:<\/p>\n<pre><code>Aladdin Token JC 0: \t(dir)1921 \t\t(dir)DDDD \t\t\t(file)0002 \t\t\t(file)0003 \t\t\t(file)0004 \t\t\t(file)0001 \t\t(file)A001 \t\t(file)B001 \t\t(file)C001 \t\t(file)AAAA \t\t(file)D001<\/code><\/pre>\n<p>  \u041e\u0442\u043b\u0438\u0447\u043d\u043e!<\/p>\n<p>  \u0427\u0442\u043e\u0436, \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0438, \u043f\u043e\u0440\u0430 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b. ETFileOpen \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 3 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0434\u043b\u044f ETDirOpen: \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0430\u043f\u043a\u0438 \u0438 \u043e\u0431\u043b\u0430\u043c\u044b\u0432\u0430\u0435\u043c\u0441\u044f: \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0438 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430. \u041d\u0443 \u0445\u043e\u0442\u044c ETFileClose \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432.<\/p>\n<p>  ETFileRead. \u0421\u0430\u043c\u0430\u044f \u0441\u0442\u0440\u0430\u0448\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0437 \u0432\u0441\u0435\u0445, \u0442.\u043a. \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0430\u0436 5 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041a\u0443\u0434\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e? \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e: \u043e\u0442\u043a\u0443\u0434\u0430 \u0447\u0438\u0442\u0430\u0442\u044c (\u0444\u0430\u0439\u043b), \u043a\u0443\u0434\u0430 \u0447\u0438\u0442\u0430\u0442\u044c (\u0431\u0443\u0444\u0435\u0440), \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442\u043a\u0443\u0434\u0430 \u0447\u0438\u0442\u0430\u0442\u044c. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0447\u0442\u043e \u0434\u0430 \u043a\u0430\u043a:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/d1d\/bad\/546\/d1dbad5467a24a0b816a11134aed8ac0.jpg\"\/><\/div>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e ETFileRead \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u0435\u043d 0xFFFF, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0441\u043a\u043b\u043e\u043d\u0435\u043d \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u2013 \u0434\u043b\u0438\u043d\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u0443\u0441\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 4 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u0443\u044e \u043c\u043d\u043e\u0439 FileReadHere \u0438\u0437\u0432\u043d\u0435 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041d\u0438\u0436\u0435 \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 ESI+8. \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 FileOpenHere (\u043d\u0430\u0437\u0432\u0430\u043d\u0430 \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443) \u0438 \u0442\u0443\u0434\u0430, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0437\u0430 \u0442\u043e\u0447\u043a\u0443 \u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430. \u0422\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 (\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u0434\u043b\u044f ETFileRead) \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u0443\u0442\u043d\u044b\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440-\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041f\u044f\u0442\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435\u043e\u0431\u044b\u0447\u0435\u043d \u0441\u043e\u0432\u0441\u0435\u043c. \u0412 \u043d\u0435\u0433\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u043e \u0438\u0437 \u0430\u0434\u0440\u0435\u0441\u0430 ESI+12, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044f\u0441\u044c \u0434\u043e \u0434\u0432\u043e\u0439\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 \u2013 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e, \u0442.\u043a. \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0432\u0438\u0434\u0435\u043b, \u0431\u044b\u043b\u0438 \u043a\u0440\u0430\u0442\u043d\u044b 4 (12 \u043d\u0435 \u043a\u0440\u0430\u0442\u043d\u043e 4, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e 0x12, \u0442.\u0435. 18 \u0432 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0439). \u0410\u0434\u0440\u0435\u0441 ESI+10 \u043d\u0438\u0433\u0434\u0435 \u0432 \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044f\u0445 \u043d\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f, \u0430 \u0432\u043e\u0442 ESI+0C \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 FileGetInfoHere, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 ETFileGetInfo. \u041e\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2013 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0444\u0430\u0439\u043b\u0430, \u0432\u0442\u043e\u0440\u043e\u0439 \u2013 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f 1, 2, 3, 7 \u0438 8 \u0431\u0430\u0439\u0442\u044b. \u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434, \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0431\u0430\u0439\u0442\u0430 \u2013 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e ETFileRead \u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0431\u0443\u0444\u0435\u0440 \u0434\u043b\u044f \u043d\u0435\u0435. \u041f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u0431\u0430\u0439\u0442\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 ETFileGetInfo \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u044f \u043d\u0435 \u043f\u043e\u043d\u044f\u043b, \u043d\u043e \u043e\u043d \u0431\u044b\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 1 \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0442\u043e\u043a\u0435\u043d\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432: \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0444\u0430\u0439\u043b\u0430, \u0442\u043e\u0447\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0442\u0435\u043d\u0438\u044f, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0435\u043c\u044b\u0445 \u0431\u0430\u0439\u0442, \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440, \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430.<\/p>\n<p>  \u0420\u0430\u0437 \u0443\u0436 \u043c\u044b \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u043b\u0438 ETFileGetInfo, \u043d\u0430\u0434\u043e \u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c ETDirGetInfo: \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0442\u043e\u0442 \u0436\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0430\u043f\u043a\u0438, \u0430 \u043d\u0435 \u0444\u0430\u0439\u043b\u0430. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u043f\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0443.<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u0441 \u0442\u043e\u043a\u0435\u043d\u0430, \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0442\u043e\u043a\u0435\u043d. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 ETDirCreate: \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 (\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0430\u043f\u043a\u0430 \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0438 \u0441\u044e\u0434\u0430 \u0432\u0435\u0440\u043d\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440), \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0438 0. \u0427\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0436\u0435\u0441\u0442\u043a\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u043a\u043e\u0434\u0435 \u0438 \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b, \u043d\u0430 \u0447\u0442\u043e \u043e\u043d \u0432\u043b\u0438\u044f\u0435\u0442. \u041f\u0430\u043f\u043a\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438. ETDirDelete \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u043e 1 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0438. ETFileCreate \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432: \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e ETDirCreate, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0430\u043f\u043a\u0438, \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430, \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0438 \u043f\u044f\u0442\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440. \u0415\u0441\u043b\u0438 \u043f\u044f\u0442\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u0435 ETFileGetInfo \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0442\u0440\u0435\u0442\u0438\u0439 \u0431\u0430\u0439\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 (\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439, \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439) \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 1. \u041f\u043e\u0434\u0443\u043c\u0430\u0432, \u044f \u043f\u0440\u043e\u0432\u0435\u043b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0438 \u0443\u0431\u0435\u0434\u0438\u043b\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0417\u0430\u0431\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u043d\u0430 \u0442\u043e\u043a\u0435\u043d\u0435, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b, \u0442\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u043a\u043b\u044e\u0447\u0435 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e. ETFileDelete \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e ETDirDelete.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0432 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u2013 ETFileWrite. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 4 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430: \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0444\u0430\u0439\u043b\u0430, \u043d\u043e\u043b\u044c (\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u043c\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u0430\u0439\u043b\u0430), \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0441\u0443\u043c\u043c\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0434\u043b\u0438\u043d\u044b \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430, \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0444\u0430\u0439\u043b \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e \u0441 \u043d\u043e\u0432\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435: \u0435\u0441\u043b\u0438 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0442\u043e \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u0435\u0449\u0435 5 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0438\u0445 \u0432\u044b\u0437\u043e\u0432 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 \u0441 \u0421\u041a\u0417\u0418 \u041a\u0440\u0438\u043f\u0442\u043e-\u041a\u043e\u043c. \u041d\u0430 \u043d\u0430\u0448\u0435 \u0441\u0447\u0430\u0441\u0442\u044c\u0435, \u0442\u043e\u0442 \u0436\u0435 \u0431\u0430\u043d\u043a \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0421\u041a\u0417\u0418 Message-Pro \u2013 mespro2.dll, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438 \u0438 \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2013 \u0432\u044b\u0437\u043e\u0432 ETTokenLabelGet. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/187\/de7\/383\/187de73834454fb3b148fad93a0e72ca.jpg\"\/><\/div>\n<p>  \u041d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e, \u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u2013 \u043a\u0430\u043a\u043e\u043c\u0443-\u0442\u043e \u0447\u0438\u0441\u043b\u0443. \u0422\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u2013 \u0431\u044b\u043b\u043e \u0431\u044b \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0432\u044f\u0437\u043a\u0438 \u0441 \u0442\u043e\u043a\u0435\u043d\u043e\u043c. \u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441 \u043d\u0443\u043b\u0435\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u2013 \u043f\u0435\u0440\u0432\u044b\u0435 4 \u0431\u0430\u0439\u0442\u0430 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0x0000000A, \u0442.\u0435. 10, \u0430 \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0434\u043b\u0438\u043d\u0430 \u0438\u043c\u0435\u043d\u0438 \u00abTestToken\u00bb \u0441 \u043d\u0443\u043b\u0435\u0432\u044b\u043c \u0431\u0430\u0439\u0442\u043e\u043c \u0432 \u043a\u043e\u043d\u0446\u0435. \u041d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u0432 \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432\u043e\u0437\u0432\u0440\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u043e\u0439\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440. \u041f\u043e\u0441\u0435\u043c\u0443 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a: \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0442\u0430\u043a, \u0447\u0442\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2013 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u2013 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0434\u0432\u043e\u0439\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e. \u041f\u043e\u0442\u043e\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0431\u0443\u0444\u0435\u0440 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2013 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440.<\/p>\n<p>  \u041d\u043e \u0432\u044b\u0437\u043e\u0432 \u0435\u0449\u0435 4 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0438 \u0442\u0443\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441\u043e\u043c \u0438 \u0438\u043d\u0442\u0443\u0438\u0446\u0438\u0435\u0439: \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u044d\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439:<br \/>  ETTokenIDGet: 3<br \/>  ETTokenMaxPinGet: 2<br \/>  ETTokenMinPinGet: 2<br \/>  ETTokenPinChange: 2<\/p>\n<p>  ETTokenIDGet \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0435\u0435 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 ETTokenGetLabel \u2013 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u043d\u0430 \u0431\u043e\u043a\u0443 \u0442\u043e\u043a\u0435\u043d\u0430.<\/p>\n<p>  ETTokenMaxPinGet \u0438 ETTokenMinPinGet, \u043a\u0430\u043a \u0440\u0430\u0437 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0438\u043c\u0435\u044e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043e\u0434\u043d\u0433\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2013 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0432\u044f\u0437\u043a\u0438, \u0432\u0442\u043e\u0440\u043e\u0439 \u2013 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0447\u0438\u0441\u043b\u043e. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0434\u043b\u0438\u043d\u044b \u043f\u0430\u0440\u043e\u043b\u044f, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0442\u043e\u043a\u0435\u043d\u0430.<\/p>\n<p>  ETTokenPinChange, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u043f\u0430\u0440\u043e\u043b\u044f \u043d\u0430 \u0442\u043e\u043a\u0435\u043d, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0432\u044f\u0437\u043a\u0438 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043d\u043e\u0432\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c. \u041f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 0x6982, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043a\u0430\u043a \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043d \u043d\u0430 \u0442\u043e\u043a\u0435\u043d. \u041b\u043e\u0433\u0438\u0447\u043d\u043e. \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0441 \u043b\u043e\u0433\u0438\u043d\u043e\u043c \u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u2013 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 0x6416. \u0414\u0435\u043b\u0430\u0435\u043c \u0432\u044b\u0432\u043e\u0434 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u0438\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u044f \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435. \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0441 \u0434\u043b\u0438\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u2013 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0432\u043e\u0434\u0438\u043c \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u2013 \u0431\u0443\u0434\u0435\u043c \u0438\u043d\u043a\u043b\u0443\u0434\u0438\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u0422\u0435\u043a\u0441\u0442 \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u043e\u0439:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">etsdk.au3<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"vbscript\">;Func ETReadersEnumOpen() ;Func ETReadersEnumNext($EnumId) ;Func ETReadersEnumClose($EnumId) ;Func ETTokenBind($ReaderName) ;Func ETTokenRebind($BindId) ;Func ETTokenUnbind($BindId) ;Func ETTokenLogin($BindId,$Pin='') ;Func ETTokenPinChange($BindId,$Pin) ;Func ETTokenLogout($BindId) ;Func ETRootDirOpen($BindId,$Dir=0xF007) ;Func ETDirOpen($Dir,$DirId) ;Func ETDirCreate($Dir,$DirId) ;Func ETDirGetInfo($DirId) ;Func ETDirClose($DirId) ;Func ETDirDelete($DirId) ;Func ETDirEnumOpen($DirId) ;Func ETDirEnumNext($EnumId) ;Func ETDirEnumClose($EnumId) ;Func ETFileOpen($File,$DirId) ;Func ETFileCreate($File,$DirId,$Size,$Private=0) ;Func ETFileGetInfo($FileId) ;Func ETFileRead($FileId) ;Func ETFileWrite($FileId,$Data,$Pos=0) ;Func ETFileClose($FileId) ;Func ETFileDelete($FileId) ;Func ETFilesEnumOpen($DirId) ;Func ETFilesEnumNext($EnumId) ;Func ETFilesEnumClose($EnumId) ;Func ETTokenLabelGet($BindId) ;Func ETTokenIDGet($BindId) ;Func ETTokenMaxPinGet($BindId) ;Func ETTokenMinPinGet($BindId)  Const $ET_READER_NAME=0 Const $ET_READER_ETOKEN=1 Const $ET_FILEINFO_NAME=0 Const $ET_FILEINFO_PRIVATE=1 Const $ET_FILEINFO_SIZE=2  Dim $ETSdkDll=DllOpen('etsdk.dll')  Func ETReadersEnumOpen() \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETReadersEnumOpen', _ \t\t'PTR',DllStructGetPtr($Out) _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETReadersEnumNext($EnumId) \tLocal $Reader=DllStructCreate('CHAR name[260]; BYTE etoken;') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETReadersEnumNext', _ \t\t'DWORD',$EnumId, _ \t\t'PTR',DllStructGetPtr($Reader) _ \t) \tLocal $Result[2]=[\tDllStructGetData($reader,'name'), _ \t\t\t\t\t\tDllStructGetData($reader,'etoken')] \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:$Result EndFunc  Func ETReadersEnumClose($EnumId) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETReadersEnumClose', _ \t\t'DWORD',$EnumId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETTokenBind($ReaderName) \tLocal $In=DllStructCreate('BYTE['&(StringLen($ReaderName)+1)&']') \tLocal $Out=DllStructCreate('DWORD') \tDllStructSetData($In,1,$ReaderName) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETTokenBind', _ \t\t'PTR',DllStructGetPtr($Out), _ \t\t'PTR',DllStructGetPtr($In) _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETTokenRebind($BindId) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETTokenRebind', _ \t\t'DWORD',$BindId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETTokenUnbind($BindId) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETTokenUnbind', _ \t\t'DWORD',$BindId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETTokenLogin($BindId,$Pin='') \tLocal $In=DllStructCreate('BYTE['&(StringLen($Pin)+1)&']') \tDllStructSetData($In,1,$Pin) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETTokenLogin', _ \t\t'DWORD',$BindId, _ \t\t'PTR',DllStructGetPtr($In) _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETTokenPinChange($BindId,$Pin) \tLocal $In=DllStructCreate('CHAR['&(StringLen($Pin)+1)&']') \tDllStructSetData($In,1,$Pin) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETTokenPinChange', _ \t\t'DWORD',$BindId, _ \t\t'PTR',DllStructGetPtr($In) _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETTokenLogout($BindId) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETTokenLogout', _ \t\t'DWORD',$BindId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETRootDirOpen($BindId,$Dir=0xF007) \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETRootDirOpen', _ \t\t'PTR',DllStructGetPtr($Out), _ \t\t'DWORD',$BindId, _ \t\t'DWORD',$Dir _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETDirOpen($Dir,$DirId) \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETDirOpen', _ \t\t'PTR',DllStructGetPtr($Out), _ \t\t'DWORD',$Dir, _ \t\t'DWORD',$DirId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETDirCreate($Dir,$DirId) \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETDirCreate', _ \t\t'PTR',DllStructGetPtr($Out), _ \t\t'DWORD',$Dir, _ \t\t'DWORD',$DirId, _ \t\t'DWORD',0 _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETDirGetInfo($DirId) \tLocal $Out=DllStructCreate('BYTE[8]') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETDirGetInfo', _ \t\t'DWORD',$DirId, _ \t\t'PTR',DllStructGetPtr($Out) _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETDirClose($DirId) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETDirClose', _ \t\t'DWORD',$DirId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETDirDelete($DirId) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETDirDelete', _ \t\t'DWORD',$DirId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETDirEnumOpen($DirId) \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETDirEnumOpen', _ \t\t'PTR',DllStructGetPtr($Out), _ \t\t'DWORD',$DirId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETDirEnumNext($EnumId) \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETDirEnumNext', _ \t\t'DWORD',$EnumId, _ \t\t'PTR',DllStructGetPtr($Out) _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETDirEnumClose($EnumId) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETDirEnumClose', _ \t\t'DWORD',$EnumId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETFileOpen($File,$DirId) \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETFileOpen', _ \t\t'PTR',DllStructGetPtr($Out), _ \t\t'DWORD',$DirId, _ \t\t'DWORD',$File _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETFileCreate($File,$DirId,$Size,$Private=0) \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETFileCreate', _ \t\t'PTR',DllStructGetPtr($Out), _ \t\t'DWORD',$DirId, _ \t\t'DWORD',$File, _ \t\t'DWORD',$Size, _ \t\t'DWORD',$Private _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETFileGetInfo($FileId) \tLocal $Out=DllStructCreate('WORD name;WORD private;WORD;WORD size') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETFileGetInfo', _ \t\t'DWORD',$FileId, _ \t\t'PTR',DllStructGetPtr($Out) _ \t) \tLocal $Result[3]=[\tDllStructGetData($Out,'name'), _ \t\t\t\t\t\tDllStructGetData($Out,'private'), _ \t\t\t\t\t\tDllStructGetData($Out,'size')] \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:$Result EndFunc  Func ETFileRead($FileId) \tLocal $FileInfo=ETFileGetInfo($FileId) \tIf @error Then Return SetError(@error,0,False) \tLocal $Out=DllStructCreate('BYTE ['&$FileInfo[$ET_FILEINFO_SIZE]&']') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETFileRead', _ \t\t'DWORD',$FileId, _ \t\t'DWORD',0, _ \t\t'DWORD',0xFFFF, _ \t\t'PTR',DllStructGetPtr($Out), _ \t\t'DWORD',$FileInfo[$ET_FILEINFO_SIZE] _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETFileWrite($FileId,$Data,$Pos=0) \t$Data=Binary($Data) \tLocal $DataSize=BinaryLen($Data) \tLocal $In=DllStructCreate('BYTE['&$DataSize&']') \tDllStructSetData($In,1,$Data) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETFileWrite', _ \t\t'DWORD',$FileId, _ \t\t'DWORD',$Pos, _ \t\t'PTR',DllStructGetPtr($In), _ \t\t'DWORD',$DataSize _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETFileClose($FileId) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETFileClose', _ \t\t'DWORD',$FileId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETFileDelete($FileId) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETFileDelete', _ \t\t'DWORD',$FileId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETFilesEnumOpen($DirId) \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETFilesEnumOpen', _ \t\t'PTR',DllStructGetPtr($Out), _ \t\t'DWORD',$DirId _ \t)  \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETFilesEnumNext($EnumId) \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETFilesEnumNext', _ \t\t'DWORD',$EnumId, _ \t\t'PTR',DllStructGetPtr($Out) _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETFilesEnumClose($EnumId) \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETFilesEnumClose', _ \t\t'DWORD',$EnumId _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:True EndFunc  Func ETTokenLabelGet($BindId) \tLocal $Out1=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETTokenLabelGet', _ \t\t'DWORD',$BindId, _ \t\t'PTR',0, _ \t\t'PTR',DllStructGetPtr($Out1) _ \t) \tIf $CallRes[0] Then Return SetError($CallRes[0],0,False) \tLocal $Out2=DllStructCreate('CHAR['&DllStructGetData($Out1,1)&']') \t$CallRes=DllCall($ETSdkDll,'WORD','ETTokenLabelGet', _ \t\t'DWORD',$BindId, _ \t\t'PTR',DllStructGetPtr($Out2), _ \t\t'PTR',DllStructGetPtr($Out1) _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out2,1) EndFunc  Func ETTokenIDGet($BindId) \tLocal $Out1=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETTokenIDGet', _ \t\t'DWORD',$BindId, _ \t\t'PTR',0, _ \t\t'PTR',DllStructGetPtr($Out1) _ \t) \tIf $CallRes[0] Then Return SetError($CallRes[0],0,False) \tLocal $Out2=DllStructCreate('CHAR['&DllStructGetData($Out1,1)&']') \t$CallRes=DllCall($ETSdkDll,'WORD','ETTokenIDGet', _ \t\t'DWORD',$BindId, _ \t\t'PTR',DllStructGetPtr($Out2), _ \t\t'PTR',DllStructGetPtr($Out1) _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out2,1) EndFunc  Func ETTokenMaxPinGet($BindId) \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETTokenMaxPinGet', _ \t\t'DWORD',$BindId, _ \t\t'PTR',DllStructGetPtr($Out) _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc  Func ETTokenMinPinGet($BindId) \tLocal $Out=DllStructCreate('DWORD') \tLocal $CallRes=DllCall($ETSdkDll,'WORD','ETTokenMinPinGet', _ \t\t'DWORD',$BindId, _ \t\t'PTR',DllStructGetPtr($Out) _ \t) \tReturn $CallRes[0] _ \t\t?SetError($CallRes[0],0,False) _ \t\t:DllStructGetData($Out,1) EndFunc<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0418\u0442\u0430\u043a, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u0437\u0430\u0445\u043e\u0442\u0438\u043c \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0442\u043e\u043a\u0435\u043d\u0430. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e, \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439. \u0421\u043a\u0440\u0438\u043f\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u00abProof-of-concept\u00bb, \u0442.\u0435. \u0442\u0443\u0442 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0439\u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u043b\u0438 \u0431\u044b \u0431\u044b\u0442\u044c \u0432 \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c\u00bb \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0442\u043e\u043a\u0435\u043d.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">eTokenCopy.au3<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"vbscript\">#include &lt;etsdk.au3&gt; #include &lt;GUIConstantsEx.au3&gt; #include &lt;StaticConstants.au3&gt; #NoTrayIcon  Opt('MustDeclareVars',1) Opt('GUIOnEventMode',1) Opt('GUIDataSeparatorChar',@LF) Const $Title='eToken Copy' Const $GUISize[2]=[250,100]  Dim $SrcCtrl,$DstCtrl,$ListTimer  Func TokenCopyDir($SrcId,$DstId) \tLocal $Name,$SrcSubId,$DstSubId,$SrcInfo,$SrcData \t; \u041f\u0440\u043e\u0445\u043e\u0434 \u043f\u043e \u043f\u0430\u043f\u043a\u0430\u043c \u0441 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0435\u0439 \tLocal $EnumId=ETDirEnumOpen($SrcId) \tWhile 1 \t\t$Name=ETDirEnumNext($EnumId) \t\tIf @error Then ExitLoop \t\t$SrcSubId=ETDirOpen($Name,$SrcId) \t\t$DstSubId=ETDirOpen($Name,$DstId) \t\tIf @error Then \t\t\t$DstSubId=ETDirCreate($Name,$DstId) \t\tEndIf \t\tTokenCopyDir($SrcSubId,$DstSubId) \t\tETDirClose($SrcSubId) \t\tETDirClose($DstSubId) \tWEnd \tETDirEnumClose($EnumId) \t; \u041f\u0440\u043e\u0445\u043e\u0434 \u043f\u043e \u0444\u0430\u0439\u043b\u0430\u043c \t$EnumId=ETFilesEnumOpen($SrcId) \tWhile 1 \t\t$Name=ETFilesEnumNext($EnumId) \t\tIf @error Then ExitLoop \t\t$SrcSubId=ETFileOpen($Name,$SrcId) \t\t$SrcInfo=ETFileGetInfo($SrcSubId) \t\t$DstSubId=ETFileOpen($Name,$DstId) \t\tIf Not @error Then \t\t\tETFileDelete($DstSubId) \t\tEndIf \t\t$DstSubId=ETFileCreate($Name,$DstId,$SrcInfo[$ET_FILEINFO_SIZE],$SrcInfo[$ET_FILEINFO_PRIVATE]) \t\tETFileWrite($DstSubId,ETFileRead($SrcSubId)) \t\tETFileClose($SrcSubId) \t\tETFileClose($DstSubId) \tWEnd \tETFilesEnumClose($EnumId) EndFunc  Func TokenCopy() \tLocal $Src=GUICtrlRead($SrcCtrl) \tLocal $Dst=GUICtrlRead($DstCtrl) \tIf $Src=='' Or $Dst=='' Then \t\tMsgBox(0x10,$Title,'\u041d\u0435 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b') \t\tReturn False \tEndIf \t; \u0418\u0437 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0442\u043e\u043a\u0435\u043d\u0430 \t$Src=StringMid($Src,StringLen($Src)-8,8) \t$Dst=StringMid($Dst,StringLen($Dst)-8,8) \tIf $Src==$Dst Then \t\tMsgBox(0x10,$Title,'\u041d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0442\u043e\u043a\u0435\u043d') \t\tReturn False \tEndIf \t; \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u0442\u043e\u043a\u0435\u043d\u0430\u043c \tLocal $SrcBindId=False,$DstBindId=False \tLocal $EnumId=ETReadersEnumOpen() \tWhile 1 \t\tLocal $Reader=ETReadersEnumNext($EnumId) \t\tIf @error Then ExitLoop \t\tIf Not $Reader[$ET_READER_ETOKEN] Then ContinueLoop \t\tLocal $BindId=ETTokenBind($Reader[$ET_READER_NAME]) \t\tIf ETTokenIDGet($BindId)==$Src Then \t\t\t$SrcBindId=$BindId \t\tElseIf ETTokenIDGet($BindId)==$Dst Then \t\t\t$DstBindId=$BindId \t\tElse \t\t\tETTokenUnbind($BindId) \t\tEndIf \tWEnd \tETReadersEnumClose($EnumId) \tIf Not ETTokenLogin($SrcBindId) Then \t\tMsgBox(0x10,$Title,'\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0442\u043e\u043a\u0435\u043d\u0435-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435') \t\tReturn False \tEndIf \tIf Not ETTokenLogin($DstBindId) Then \t\tMsgBox(0x10,$Title,'\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0442\u043e\u043a\u0435\u043d\u0435-\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438') \t\tReturn False \tEndIf \t; \u0417\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \tTokenCopyDir(ETRootDirOpen($SrcBindId),ETRootDirOpen($DstBindId)) \tETTokenUnbind($SrcBindId) \tETTokenUnbind($DstBindId) \tMsgBox(0x40,$Title,'\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e') EndFunc  Func GetTokenList() \tLocal $Reader, $BindId, $Result='' \tLocal $EnumId=ETReadersEnumOpen() \tWhile 1 \t\t$Reader=ETReadersEnumNext($EnumId) \t\tIf @error Then ExitLoop \t\tIf Not $Reader[$ET_READER_ETOKEN] Then ContinueLoop \t\t$BindId=ETTokenBind($Reader[$ET_READER_NAME]) \t\t$Result&=@LF&ETTokenLabelGet($BindId)&' ('&ETTokenIDGet($BindId)&')' \t\tETTokenUnbind($BindId) \tWEnd \tETReadersEnumClose($EnumId) \tReturn $Result EndFunc  Func UpdateTokenList() \tLocal $Tokens=GetTokenList() \tGUICtrlSetData($SrcCtrl,$Tokens,GUICtrlRead($SrcCtrl)) \tGUICtrlSetData($DstCtrl,$Tokens,GUICtrlRead($DstCtrl)) EndFunc  Func onClose()    Exit EndFunc  Func GUIInit() \tGUICreate($Title,$GUISize[0],$GUISize[1],(@DesktopWidth-$GUISize[0])\/2,(@DesktopHeight-$GUISize[1])\/2) \tGUISetOnEvent($GUI_EVENT_CLOSE,'onClose') \tGUICtrlCreateLabel('\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a:',8,8,64,-1,$SS_RIGHT) \tGUICtrlCreateLabel('\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:',8,32,64,-1,$SS_RIGHT) \t$SrcCtrl=GUICtrlCreateCombo('',76,6,$GUISize[0]-84,-1) \t$DstCtrl=GUICtrlCreateCombo('',76,30,$GUISize[0]-84,-1) \tGUICtrlCreateButton('\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c',8,54,$GUISize[0]-16,$GUISize[1]-62) \tGUICtrlSetOnEvent(-1,'TokenCopy') \tGUISetState(@SW_SHOW) EndFunc  GUIInit() UpdateTokenList() $ListTimer=TimerInit() While 1 \t; \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0440\u0430\u0437 \u0432 3 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \tIf TimerDiff($ListTimer)&gt;3000 Then \t\tUpdateTokenList() \t\t$ListTimer=TimerInit() \tEndIf \tSleep(100) WEnd<\/code><\/pre>\n<\/div>\n<\/div>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/4b1\/632\/465\/4b16324650d244778fb67be81a286019.jpg\"\/><\/div>\n<p>  \u042f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0432\u0441\u0435 \u0421\u041a\u0417\u0418, \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043c\u043e\u0433 \u0434\u043e\u0442\u044f\u043d\u0443\u0442\u044c\u0441\u044f: \u041a\u0440\u0438\u043f\u0442\u043e-\u041a\u043e\u043c, \u041a\u0440\u0438\u043f\u0442\u043e-\u041f\u0440\u043e, Message-Pro, \u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u0438 \u0434\u0430\u0436\u0435 \u0412\u0435\u0440\u0431\u0430. \u0412\u0441\u0435 \u044d\u0442\u0438 \u043a\u043b\u044e\u0447\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u0440\u043e\u0448\u043b\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438.<\/p>\n<p>  \u041d\u043e \u043a\u0430\u043a \u0436\u0435 \u0442\u0430\u043a? \u0420\u0430\u0437\u0432\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u043b\u044e\u0447\u0438 \u0431\u044b\u0442\u044c \u043d\u0435\u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c\u044b\u043c\u0438 \u0441 \u0442\u043e\u043a\u0435\u043d\u0430? \u041e\u0442\u0432\u0435\u0442 \u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\u0445 eToken: \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435\u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c, \u043d\u043e \u0441\u043b\u0443\u0436\u0438\u0442 \u043e\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043a\u0440\u0438\u043f\u0442\u043e\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 RSA. \u041d\u0438 \u043e\u0434\u043d\u043e \u0438\u0437 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0445 \u0421\u041a\u0417\u0418\u2026 \u043d\u0435\u0442, \u0432\u043e\u0442 \u0442\u0430\u043a: \u043d\u0438 \u043e\u0434\u043d\u043e \u0438\u0437 \u0421\u041a\u0417\u0418, \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u043d\u044b\u0445 \u0424\u0421\u0411 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u0420\u0424 (\u0432\u0440\u043e\u0434\u0435 \u0431\u044b) \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 RSA, \u0430 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043a\u0440\u0438\u043f\u0442\u043e\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0413\u041e\u0421\u0422-*, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 eToken \u2013 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0444\u043b\u044d\u0448\u043a\u0430 \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u0438 \u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c.       <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/276057\/\"> https:\/\/habrahabr.ru\/post\/276057\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"https:\/\/habrastorage.org\/files\/ec8\/ede\/09e\/ec8ede09ea0b4ca48f037cbfb7cb7ce7.jpg\"\/><\/div>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>  \u041e\u0434\u043d\u0430\u0436\u0434\u044b, \u0443 \u043d\u0430\u0441 \u043d\u0430 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0438 \u0432\u0441\u0442\u0430\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u041e\u0427\u0415\u041d\u042c \u0412\u0410\u0416\u041d\u042b\u0425 \u0424\u0410\u0419\u041b\u041e\u0412. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0441\u043b\u043e\u0432\u043e \u0437\u0430 \u0441\u043b\u043e\u0432\u043e, \u0438 \u043f\u0440\u0438\u0448\u043b\u0438 \u043c\u044b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e scp, \u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u043a\u043b\u044e\u0447 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430 \u0431\u0440\u0435\u043b\u043a\u0435 \u0442\u0438\u043f\u0430 eToken, \u0431\u043b\u0430\u0433\u043e \u0438\u0445 \u0443 \u043d\u0430\u0441 \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e.<\/p>\n<p>  \u0418\u0434\u0435\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439, \u043d\u043e \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c? \u0422\u0443\u0442 \u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b, \u043a\u0430\u043a \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0432 \u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u0438\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0431\u0430\u043d\u043a-\u043a\u043b\u0438\u0435\u043d\u0442, \u0440\u0443\u0433\u0430\u044f\u0441\u044c \u043d\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c etsdk.dll, \u043c\u0435\u043d\u044f \u043e\u0445\u0432\u0430\u0442\u0438\u043b\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u043e \u0438 \u044f \u043f\u043e\u043b\u0435\u0437 \u0435\u0435 \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c.<\/p>\n<p>  \u0412\u043e\u043e\u0431\u0449\u0435, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0441\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 SDK, \u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u041f\u041e, \u0430 \u044d\u0442\u043e \u044f\u0432\u043d\u043e \u043d\u0435 \u044f. \u041d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043d\u0430\u0439\u0442\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u043d\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u043e \u043e\u0434\u0435\u0440\u0436\u0430\u043b\u043e \u0432\u0435\u0440\u0445 \u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0441\u0451\u043c \u0441\u0430\u043c. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u2013 \u0432\u043e\u0442 \u043e\u043d\u0430, \u0432\u0440\u0435\u043c\u044f \u0435\u0441\u0442\u044c, \u043a\u0442\u043e \u043c\u0435\u043d\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442?  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-273078","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/273078","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=273078"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/273078\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=273078"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=273078"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=273078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}