เดตเดฟเตปเดกเต‹เดธเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเด‚ เด…เด•เตเดฐเต‹เดฃเดฟเดธเต เด†เด•เตเดฑเตเดฑเต€เดตเต เดฑเต€เดธเตเดฑเตเดฑเต‹เตผ เดธเต‡เดตเดจเดตเตเด‚

เด’เดฐเต เดชเดฐเดพเดœเดฏเดคเตเดคเดฟเดจเต เดถเต‡เดทเด‚ เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดตเต‡เด—เดคเตเดคเดฟเตฝ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เด…เดตเดฐเตเดŸเต† เดฎเต†เดทเต€เดจเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด‡เดจเตเดจเต‹เดชเต‹เดณเดฟเดธเต เดฏเต‚เดฃเดฟเดตเต‡เดดเตเดธเดฟเดฑเตเดฑเดฟเดฏเดฟเดฒเต† เด†เตบเด•เตเดŸเตเดŸเดฟเด•เดณเตเดฎเดพเดฏเดฟ เดšเต‡เตผเดจเตเดจเต เดธเดœเต€เดต เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เตฝ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด•เดฅ เด‡เดจเตเดจเต เดžเด™เตเด™เตพ เดคเตเดŸเดฐเตเดจเตเดจเต. เดจเต‡เดฑเตเดฑเต€เดตเต เดตเดฟเตปเดกเต‹เดธเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚, เด…เดตเดฏเตเดŸเต† เดธเตƒเดทเตเดŸเดฟเดฏเตเดŸเต†เดฏเตเด‚ เดธเดฎเดพเดฐเด‚เดญเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เด‰เตพเดชเตเดชเต†เดŸเต†. เด•เดŸเตเดŸเดฟเดจเต เดคเดพเดดเต† เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเต† เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดšเต†เดฑเดฟเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เดณเตเด‚ เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดŽเด™เตเด™เดจเต† เดŽเดดเตเดคเดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดชเตเดฐเดพเดฏเต‹เด—เดฟเด• เด—เตˆเดกเตเด‚ เด‰เดฃเตเดŸเต.

เดตเดฟเตปเดกเต‹เดธเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเด‚ เด…เด•เตเดฐเต‹เดฃเดฟเดธเต เด†เด•เตเดฑเตเดฑเต€เดตเต เดฑเต€เดธเตเดฑเตเดฑเต‹เตผ เดธเต‡เดตเดจเดตเตเด‚

เดฎเตเตป เดชเต‹เดธเตเดฑเตเดฑเตเด•เดณเดฟเตฝ เด…เดคเต เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเต เดธเดœเต€เดตเดฎเดพเดฏ เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตฝ, เด‡เดจเตเดจเต‹เดชเต‹เดณเดฟเดธเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เตพ เดŽเด™เตเด™เดจเต† เดตเดฟเด•เดธเดฟเด•เตเด•เตเดจเตเดจเต เดธเต‡เดตเดจเด‚. เด‡เดจเตเดจเต เดžเดพเตป เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเดฟเตฝ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต, เดžเด™เตเด™เดณเตเดŸเต† เดธเดœเต€เดต เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตฝ เดธเต‡เดตเดจเดคเตเดคเต† "เด…เดŸเด•เตเด•เด‚" เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจ เดคเดฒเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต. เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚:

  • เดตเดณเดฐเต† เดจเต‡เดฐเดคเตเดคเต† เดคเดจเตเดจเต† เดธเต‡เดตเดจเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•
  • เดตเดณเดฐเต† เดจเต‡เดฐเดคเตเดคเต† เดฌเดพเด•เตเด•เดชเตเดชเต เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด•เตเดฒเต—เดกเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเด•
  • เดธเดฟเดธเตเดฑเตเดฑเด‚ เดเดคเต เดฎเต‹เดกเดฟเดฒเดพเดฃเต เดŽเดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดตเดณเดฐเต† เดจเต‡เดฐเดคเตเดคเต† เดคเดจเตเดจเต† - เดธเดพเดงเดพเดฐเดฃ เดฌเต‚เดŸเตเดŸเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตฝ
  • เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เดพเตป เดตเดณเดฐเต† เด•เตเดฑเดšเตเดšเต เดซเดฏเดฒเตเด•เตพ
  • เด•เต‚เดŸเตเดคเตฝ เดตเต‡เด—เดคเตเดคเดฟเตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•.

เดเดคเดพเดฏเดพเดฒเตเด‚ เด’เดฐเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดชเต เดŽเดจเตเดคเดพเดฃเต?

เดˆ เดšเต‹เดฆเตเดฏเดคเตเดคเดฟเดจเต เด‰เดคเตเดคเดฐเด‚ เดจเตฝเด•เดพเตป, เดธเดฟเดธเตเดฑเตเดฑเด‚ เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เดณเตเด•เดณเตเดŸเต† เด•เตเดฐเดฎเด‚ เดจเต‹เด•เตเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด…เดตเดจเตเดฑเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเดฒเต† เด’เดฐเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตผ เด’เดฐเต เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ.

เดตเดฟเตปเดกเต‹เดธเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเด‚ เด…เด•เตเดฐเต‹เดฃเดฟเดธเต เด†เด•เตเดฑเตเดฑเต€เดตเต เดฑเต€เดธเตเดฑเตเดฑเต‹เตผ เดธเต‡เดตเดจเดตเตเด‚
เดชเดตเตฝ เดฏเต‹เดธเดฟเดซเต‹เดตเดฟเดšเตเดšเต - เดตเดฟเตปเดกเต‹เดธเต เด•เต‡เตผเดฃเตฝ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต (2019)

เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตผ เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดซเดฏเตฝ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•, fileapi.h เดŽเดจเตเดจ เดคเดฒเด•เตเด•เต†เดŸเตเดŸเต เดซเดฏเดฒเดฟเตฝ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ Kernel32.dll-เตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดˆ เดซเด‚เด—เตเดทเตป เดคเดจเตเดจเต† เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เด‡เดคเต เด‡เตปเดชเตเดŸเตเดŸเต เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดซเด‚เด—เตเดทเดจเต† เดตเดฟเดณเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต NtCreateFile (เดชเตเดฐเดฟเดซเดฟเด•เตโ€Œเดธเต Nt เดซเด‚เด—เตโ€Œเดทเตป เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดฃเต†เดจเตเดจเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต). เดˆ เดซเด‚เด—เตโ€Œเดทเตป winternl.h เดนเต†เดกเตผ เดซเดฏเดฒเดฟเตฝ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ ntdll.dll-เตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด…เดคเต เดจเตเดฏเต‚เด•เตเดฒเดฟเดฏเตผ เดฌเดนเดฟเดฐเดพเด•เดพเดถเดคเตเดคเต‡เด•เตเด•เต เด•เตเดคเดฟเด•เตเด•เดพเตป เดคเดฏเตเดฏเดพเดฑเต†เดŸเตเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เด…เดคเต เด’เดฐเต เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด’เดฐเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เต‹เตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, Kernel32 Ntdll-เดจเตเดณเตเดณ เด’เดฐเต เดฑเดพเดชเตเดชเตผ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต†เดจเตเดจเต เดฎเดพเดฑเตเดจเตเดจเต. เด‡เดคเต เดšเต†เดฏเตเดคเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด•เดพเดฐเดฃเด‚, เดฎเตˆเด•เตเดฐเต‹เดธเต‹เดซเตเดฑเตเดฑเดฟเดจเต เดจเต‡เดฑเตเดฑเต€เดตเต เดฒเต‹เด•เดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเตเดฃเตเดŸเต, เดชเด•เตเดทเต‡ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด‡เดจเตเดฑเตผเดซเต‡เดธเตเด•เดณเดฟเตฝ เดธเตเดชเตผเดถเดฟเด•เตเด•เดฐเตเดคเต. เดจเต‡เดฑเตเดฑเต€เดตเต เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดตเดฟเดณเดฟเด•เตเด•เดพเตป Microsoft เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ, เด…เดตเดฏเดฟเตฝ เดฎเดฟเด•เตเด•เดคเตเด‚ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ. เดตเดดเดฟเดฏเดฟเตฝ, เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเดพเดคเตเดค เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ เด‡เดตเดฟเดŸเต†.

เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดŸเต† เดชเตเดฐเดงเดพเดจ เดจเต‡เดŸเตเดŸเด‚, เด•เต†เตผเดฃเตฝ 32 เดจเต‡เด•เตเด•เดพเตพ เดตเดณเดฐเต† เดจเต‡เดฐเดคเตเดคเต† เดคเดจเตเดจเต† ntdll เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต. เด‡เดคเต เดฒเต‹เดœเดฟเด•เตเด•เตฝ เด†เดฃเต, เด•เดพเดฐเดฃเด‚ kernel32 เดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป ntdll เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดจเต‡เดฑเตเดฑเต€เดตเต เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดตเดณเดฐเต† เดจเต‡เดฐเดคเตเดคเต† เดคเดจเตเดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเด‚.

เด…เดคเดฟเดจเดพเตฝ, เดตเดฟเตปเดกเต‹เดธเต เดฌเต‚เดŸเตเดŸเดฟเดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เดคเดจเตเดจเต† เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เดณเดพเดฃเต เดตเดฟเตปเดกเต‹เดธเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ. เด…เดตเตผ ntdll-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต. เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚: autochk เด†เตผ เดจเดฟเตผเดตเดนเดฟเด•เตเด•เตเดจเตเดจเต chkdisk เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ เดชเตเดฐเดงเดพเดจ เดธเต‡เดตเดจเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดชเดฟเดถเด•เตเด•เตพเด•เตเด•เดพเดฏเดฟ เดกเดฟเดธเตเด•เต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เดธเดœเต€เดตเดฎเดพเดฏ เดชเตเดจเดƒเดธเตเดฅเดพเดชเดจเด‚ เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจ เดฒเต†เดตเดฒเดพเดฃเดฟเดคเต.

เดจเดฎเตเด•เตเด•เต เดŽเดจเตเดคเดพเดฃเต เดตเต‡เดฃเตเดŸเดคเต?

  • เดกเดฟ.เดกเดฟ.เด•เต† (เดกเตเดฐเตˆเดตเตผ เดกเต†เดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต เด•เดฟเดฑเตเดฑเต), เด‡เดชเตเดชเต‹เตพ WDK 7 (Windows Driver Kit) เดŽเดจเตเดจเตเด‚ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต.
  • เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, Windows 7 x64)
  • เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดนเต†เดกเตผ เดซเดฏเดฒเตเด•เตพ เดธเดนเดพเดฏเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚ เด‡เดตเดฟเดŸเต†

เด•เต‹เดกเดฟเตฝ เดŽเดจเตเดคเดพเดฃเต เด‰เดณเตเดณเดคเต?

เดจเดฎเตเด•เตเด•เต เด•เตเดฑเดšเตเดšเต เดชเดฐเดฟเดถเต€เดฒเดฟเด•เตเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เดšเต†เดฑเดฟเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเดดเตเดคเตเด•:

  1. เดธเตเด•เตเดฐเต€เดจเดฟเตฝ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต
  2. เด•เตเดฑเดšเตเดšเต เดฎเต†เดฎเตเดฎเดฑเดฟ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต
  3. เด•เต€เดฌเต‹เตผเดกเต เด‡เตปเดชเตเดŸเตเดŸเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต
  4. เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เดฎเต†เดฎเตเดฎเดฑเดฟ เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเด•เตเด•เตเดจเตเดจเต

เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเดฟเตฝ, เดŽเตปเดŸเตเดฐเดฟ เดชเต‹เดฏเดฟเดจเตเดฑเต เดชเตเดฐเดงเดพเดจเดฎเต‹ เดตเดฟเตปเดฎเตˆเดจเต‹ เด…เดฒเตเดฒ, เดฎเดฑเดฟเดšเตเดšเต NtProcessStartup เดซเด‚เด—เตโ€Œเดทเดจเดพเดฃเต, เด•เดพเดฐเดฃเด‚ เดžเด™เตเด™เตพ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดชเตเดคเดฟเดฏ เดชเตเดฐเต‹เดธเดธเตเดธเตเด•เตพ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต.

เดธเตเด•เตเดฐเต€เดจเดฟเตฝ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เดจเดฎเตเด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚. เด‡เดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดจเต‡เดฑเตเดฑเต€เดตเต เดซเด‚เด—เตเดทเตป เด‰เดฃเตเดŸเต NtDisplayString, UNICODE_STRING เด˜เดŸเดจเดพเดชเดฐเดฎเดพเดฏ เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเตผ เด’เดฐเต เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต. RtlInitUnicodeString เด…เดคเต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดธเตเด•เตเดฐเต€เดจเดฟเตฝ เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดจเดฎเตเด•เตเด•เต เดˆ เดšเต†เดฑเดฟเดฏ เดซเด‚เด—เตเดทเตป เดŽเดดเตเดคเดพเด‚:

//usage: WriteLn(L"Here is my textn");
void WriteLn(LPWSTR Message)
{
    UNICODE_STRING string;
    RtlInitUnicodeString(&string, Message);
    NtDisplayString(&string);
}

ntdll-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดžเด™เตเด™เตพเด•เตเด•เต เดฒเดญเตเดฏเดฎเดพเด•เต‚, เด•เต‚เดŸเดพเดคเต† เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เดฎเดฑเตเดฑเต เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเตŠเดจเตเดจเตเด‚ เด‡เดคเตเดตเดฐเต† เด‡เดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดฎเต†เดฎเตเดฎเดฑเดฟ เดŽเด™เตเด™เดจเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเดคเดฟเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเตเดฃเตเดŸเดพเด•เตเด‚. เดชเตเดคเดฟเดฏ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด‡เดคเตเดตเดฐเต† เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒ (เด•เดพเดฐเดฃเด‚ เด‡เดคเต เดตเดณเดฐเต† เด‰เดฏเตผเดจเตเดจ เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ C++ เดฒเต‹เด•เดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดตเดฐเตเดจเตเดจเดคเต), เด•เต‚เดŸเดพเดคเต† malloc เดซเด‚เด—เตโ€ŒเดทเดจเตŠเดจเตเดจเตเด‚ เด‡เดฒเตเดฒ (เด‡เดคเดฟเดจเต เดฑเตบเดŸเตˆเด‚ C เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต). เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเตเดฑเตเดฑเดพเด•เตเด•เต เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเต‚. เดŽเดจเตเดจเดพเตฝ เดจเดฎเตเด•เตเด•เต เดฎเต†เดฎเตเดฎเดฑเดฟ เดšเดฒเดจเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เด…เดจเตเดตเดฆเดฟเด•เตเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เด•เต‚เดฎเตเดชเดพเดฐเดคเตเดคเดฟเตฝ (เด…เดคเดพเดฏเดคเต เด•เต‚เดฎเตเดชเดพเดฐเด‚) เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดฟเดตเดฐเตเด‚. เด…เดคเตเด•เตŠเดฃเตเดŸเต เดจเดฎเตเด•เตเด•เต เดจเดฎเตเด•เตเด•เดพเดฏเดฟ เด’เดฐเต เด•เต‚เดฎเตเดชเดพเดฐเด‚ เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚, เดจเดฎเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดชเตเดชเต‹เดดเต†เดฒเตเดฒเดพเด‚ เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเต†เดฎเตเดฎเดฑเดฟ เดŽเดŸเตเด•เตเด•เดพเด‚.

เดˆ เดŸเดพเดธเตเด•เตเด•เดฟเดจเต เดซเด‚เด—เตเดทเตป เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฃเต RtlCreateHeap. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, RtlAllocateHeap, RtlFreeHeap เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดจเดฎเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดชเตเดชเต‹เตพ เดฎเต†เดฎเตเดฎเดฑเดฟ เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเด•เตเด•เตเด‚.

PVOID memory = NULL;
PVOID buffer = NULL;
ULONG bufferSize = 42;

// create heap in order to allocate memory later
memory = RtlCreateHeap(
  HEAP_GROWABLE, 
  NULL, 
  1000, 
  0, NULL, NULL
);

// allocate buffer of size bufferSize
buffer = RtlAllocateHeap(
  memory, 
  HEAP_ZERO_MEMORY, 
  bufferSize
);

// free buffer (actually not needed because we destroy heap in next step)
RtlFreeHeap(memory, 0, buffer);

RtlDestroyHeap(memory);

เด•เต€เดฌเต‹เตผเดกเต เด‡เตปเดชเตเดŸเตเดŸเดฟเดจเดพเดฏเดฟ เดจเดฎเตเด•เตเด•เต เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเด‚.

// https://docs.microsoft.com/en-us/windows/win32/api/ntddkbd/ns-ntddkbd-keyboard_input_data
typedef struct _KEYBOARD_INPUT_DATA {
  USHORT UnitId;
  USHORT MakeCode;
  USHORT Flags;
  USHORT Reserved;
  ULONG  ExtraInformation;
} KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;

//...

HANDLE hKeyBoard, hEvent;
UNICODE_STRING skull, keyboard;
OBJECT_ATTRIBUTES ObjectAttributes;
IO_STATUS_BLOCK Iosb;
LARGE_INTEGER ByteOffset;
KEYBOARD_INPUT_DATA kbData;

// inialize variables
RtlInitUnicodeString(&keyboard, L"DeviceKeyboardClass0");
InitializeObjectAttributes(&ObjectAttributes, &keyboard, OBJ_CASE_INSENSITIVE, NULL, NULL);

// open keyboard device
NtCreateFile(&hKeyBoard,
			SYNCHRONIZE | GENERIC_READ | FILE_READ_ATTRIBUTES,
			&ObjectAttributes,
			&Iosb,
			NULL,
			FILE_ATTRIBUTE_NORMAL,
			0,
			FILE_OPEN,FILE_DIRECTORY_FILE,
			NULL, 0);

// create event to wait on
InitializeObjectAttributes(&ObjectAttributes, NULL, 0, NULL, NULL);
NtCreateEvent(&hEvent, EVENT_ALL_ACCESS, &ObjectAttributes, 1, 0);

while (TRUE)
{
	NtReadFile(hKeyBoard, hEvent, NULL, NULL, &Iosb, &kbData, sizeof(KEYBOARD_INPUT_DATA), &ByteOffset, NULL);
	NtWaitForSingleObject(hEvent, TRUE, NULL);

	if (kbData.MakeCode == 0x01)    // if ESC pressed
	{
			break;
	}
}

เดจเดฎเตเด•เตเด•เต เดตเต‡เดฃเตเดŸเดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต NtReadFile เด’เดฐเต เดคเตเดฑเดจเตเดจ เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเตฝ, เด•เต€เดฌเต‹เตผเดกเต เดžเด™เตเด™เตพเด•เตเด•เต เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด…เดฎเตผเดคเตเดคเตเดจเตเดจเดคเต เดตเดฐเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเด•. ESC เด•เต€ เด…เดฎเตผเดคเตเดคเดฟเดฏเดพเตฝ, เดžเด™เตเด™เตพ เดœเต‹เดฒเดฟ เดคเตเดŸเดฐเตเด‚. เด‰เดชเด•เดฐเดฃเด‚ เดคเตเดฑเด•เตเด•เดพเตป, เดžเด™เตเด™เตพ NtCreateFile เดซเด‚เด—เตโ€Œเดทเดจเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดณเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต (เดžเด™เตเด™เตพ DeviceKeyboardClass0 เดคเตเดฑเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต). เดžเด™เตเด™เดณเตเด‚ เดตเดฟเดณเดฟเด•เตเด•เตเด‚ NtCreateEventเดตเต†เดฏเดฟเดฑเตเดฑเต เด’เดฌเตเดœเด•เตเดฑเตเดฑเต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป. เด•เต€เดฌเต‹เตผเดกเต เดกเดพเดฑเตเดฑเดฏเต† เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ KEYBOARD_INPUT_DATA เด˜เดŸเดจ เดžเด™เตเด™เตพ เดธเตเดตเดฏเด‚ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเด•เตเด•เตเด‚. เด‡เดคเต เดจเดฎเตเดฎเตเดŸเต† เดœเต‹เดฒเดฟ เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเด‚.

เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด’เดฐเต เดซเด‚เด—เตเดทเตป เด•เต‹เดณเต‹เดŸเต† เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดจเตเดจเต NtTerminateProcessเด•เดพเดฐเดฃเด‚ เดจเดฎเตเดฎเตพ เดจเดฎเตเดฎเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเต† เด•เตŠเดฒเตเดฒเตเด•เดฏเดพเดฃเต.

เดžเด™เตเด™เดณเตเดŸเต† เดšเต†เดฑเดฟเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เด•เต‹เดกเตเด•เดณเตเด‚:

#include "ntifs.h" // WinDDK7600.16385.1incddk
#include "ntdef.h"

//------------------------------------
// Following function definitions can be found in native development kit
// but I am too lazy to include `em so I declare it here
//------------------------------------

NTSYSAPI
NTSTATUS
NTAPI
NtTerminateProcess(
  IN HANDLE               ProcessHandle OPTIONAL,
  IN NTSTATUS             ExitStatus
);

NTSYSAPI 
NTSTATUS
NTAPI
NtDisplayString(
	IN PUNICODE_STRING String
);

NTSTATUS 
NtWaitForSingleObject(
  IN HANDLE         Handle,
  IN BOOLEAN        Alertable,
  IN PLARGE_INTEGER Timeout
);

NTSYSAPI 
NTSTATUS
NTAPI
NtCreateEvent(
    OUT PHANDLE             EventHandle,
    IN ACCESS_MASK          DesiredAccess,
    IN POBJECT_ATTRIBUTES   ObjectAttributes OPTIONAL,
    IN EVENT_TYPE           EventType,
    IN BOOLEAN              InitialState
);



// https://docs.microsoft.com/en-us/windows/win32/api/ntddkbd/ns-ntddkbd-keyboard_input_data
typedef struct _KEYBOARD_INPUT_DATA {
  USHORT UnitId;
  USHORT MakeCode;
  USHORT Flags;
  USHORT Reserved;
  ULONG  ExtraInformation;
} KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;

//----------------------------------------------------------
// Our code goes here
//----------------------------------------------------------

// usage: WriteLn(L"Hello Native World!n");
void WriteLn(LPWSTR Message)
{
    UNICODE_STRING string;
    RtlInitUnicodeString(&string, Message);
    NtDisplayString(&string);
}

void NtProcessStartup(void* StartupArgument)
{
	// it is important to declare all variables at the beginning
	HANDLE hKeyBoard, hEvent;
	UNICODE_STRING skull, keyboard;
	OBJECT_ATTRIBUTES ObjectAttributes;
	IO_STATUS_BLOCK Iosb;
	LARGE_INTEGER ByteOffset;
	KEYBOARD_INPUT_DATA kbData;
	
	PVOID memory = NULL;
	PVOID buffer = NULL;
	ULONG bufferSize = 42;

	//use it if debugger connected to break
	//DbgBreakPoint();

	WriteLn(L"Hello Native World!n");

	// inialize variables
	RtlInitUnicodeString(&keyboard, L"DeviceKeyboardClass0");
	InitializeObjectAttributes(&ObjectAttributes, &keyboard, OBJ_CASE_INSENSITIVE, NULL, NULL);

	// open keyboard device
	NtCreateFile(&hKeyBoard,
				SYNCHRONIZE | GENERIC_READ | FILE_READ_ATTRIBUTES,
				&ObjectAttributes,
				&Iosb,
				NULL,
				FILE_ATTRIBUTE_NORMAL,
				0,
				FILE_OPEN,FILE_DIRECTORY_FILE,
				NULL, 0);

	// create event to wait on
	InitializeObjectAttributes(&ObjectAttributes, NULL, 0, NULL, NULL);
	NtCreateEvent(&hEvent, EVENT_ALL_ACCESS, &ObjectAttributes, 1, 0);
	
	WriteLn(L"Keyboard readyn");
	
	// create heap in order to allocate memory later
	memory = RtlCreateHeap(
	  HEAP_GROWABLE, 
	  NULL, 
	  1000, 
	  0, NULL, NULL
	);
	
	WriteLn(L"Heap readyn");

	// allocate buffer of size bufferSize
	buffer = RtlAllocateHeap(
	  memory, 
	  HEAP_ZERO_MEMORY, 
	  bufferSize
	);
	
	WriteLn(L"Buffer allocatedn");

	// free buffer (actually not needed because we destroy heap in next step)
	RtlFreeHeap(memory, 0, buffer);

	RtlDestroyHeap(memory);
	
	WriteLn(L"Heap destroyedn");
	
	WriteLn(L"Press ESC to continue...n");

	while (TRUE)
	{
		NtReadFile(hKeyBoard, hEvent, NULL, NULL, &Iosb, &kbData, sizeof(KEYBOARD_INPUT_DATA), &ByteOffset, NULL);
		NtWaitForSingleObject(hEvent, TRUE, NULL);

		if (kbData.MakeCode == 0x01)    // if ESC pressed
		{
				break;
		}
	}

	NtTerminateProcess(NtCurrentProcess(), 0);
}

PS: เดกเต€เดฌเด—เตเด—เดฑเดฟเตฝ เดจเดฟเตผเดคเตเดคเดพเตป เดžเด™เตเด™เดณเตเดŸเต† เด•เต‹เดกเดฟเดฒเต† DbgBreakPoint() เดซเด‚เด—เตโ€Œเดทเตป เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เดถเดฐเดฟเดฏเดพเดฃเต, เด•เต‡เตผเดฃเตฝ เดกเต€เดฌเด—เตเด—เดฟเด‚เด—เดฟเดจเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพ WinDbg เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเดฟเดฒเต‡เด•เตเด•เต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดคเต เดŽเด™เตเด™เดจเต† เดšเต†เดฏเตเดฏเดฃเดฎเต†เดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ เด‡เดตเดฟเดŸเต† เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• VirtualKD.

เดธเดฎเดพเดนเดฐเดฃเดตเตเด‚ เด…เดธเด‚เดฌเตเดฒเดฟเดฏเตเด‚

เด’เดฐเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดŽเดณเตเดชเตเดช เดฎเดพเตผเด—เด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดกเดฟ.เดกเดฟ.เด•เต† (เดกเตเดฐเตˆเดตเตผ เดตเดฟเด•เดธเดจ เด•เดฟเดฑเตเดฑเต). เดชเดฟเดจเตเดจเต€เดŸเตเดณเตเดณ เดชเดคเดฟเดชเตเดชเตเด•เตพเด•เตเด•เต เด…เดฒเตเดชเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏ เดธเดฎเต€เดชเดจเดตเตเด‚ เดตเดฟเดทเตเดตเตฝ เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเดฎเดพเดฏเดฟ เดšเต‡เตผเดจเตเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฒเตเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดพเดคเดจ เดเดดเดพเดฎเดคเตเดคเต† เดชเดคเดฟเดชเตเดชเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดžเด™เตเด™เตพ DDK เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเต Makefile เด‰เด‚ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเต‚.

Makefile

!INCLUDE $(NTMAKEENV)makefile.def

เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ:

TARGETNAME			= MyNative
TARGETTYPE			= PROGRAM
UMTYPE				= nt
BUFFER_OVERFLOW_CHECKS 		= 0
MINWIN_SDK_LIB_PATH		= $(SDK_LIB_PATH)
SOURCES 			= source.c

INCLUDES 			= $(DDK_INC_PATH); 
				  C:WinDDK7600.16385.1ndk;

TARGETLIBS 			= $(DDK_LIB_PATH)ntdll.lib	
				  $(DDK_LIB_PATH)nt.lib

USE_NTDLL			= 1

เดจเดฟเด™เตเด™เดณเตเดŸเต† Makefile เดคเดฟเด•เดšเตเดšเตเด‚ เดธเดฎเดพเดจเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดŽเดจเตเดจเดพเตฝ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดจเต‹เด•เตเด•เดพเด‚. เดˆ เดซเดฏเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ (.c เดซเดฏเดฒเตเด•เตพ), เดฌเดฟเตฝเดกเต เด“เดชเตเดทเดจเตเด•เตพ, เดฎเดฑเตเดฑเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดŽเดจเตเดจเดฟเดต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต.

  • TARGETNAME - เด…เดตเดธเดพเดจเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเดฒเดฟเดจเตเดฑเต† เดชเต‡เดฐเต.
  • TARGETTYPE - เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเดฒเดฟเดจเตเดฑเต† เดคเดฐเด‚, เด…เดคเต เด’เดฐเต เดกเตเดฐเตˆเดตเตผ (.sys) เด†เด•เดพเด‚, เดคเตเดŸเตผเดจเตเดจเต เดซเต€เตฝเดกเต เดฎเต‚เดฒเตเดฏเด‚ เดกเตเดฐเตˆเดตเตผ เด†เดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เดฒเตˆเดฌเตเดฐเดฑเดฟ (.lib) เด†เดฃเต†เด™เตเด•เดฟเตฝ, เดฎเต‚เดฒเตเดฏเด‚ เดฒเตˆเดฌเตเดฐเดฑเดฟ เด†เดฃเต. เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเตฝ (.exe) เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพ เดฎเต‚เดฒเตเดฏเด‚ PROGRAM-เดฒเต‡เด•เตเด•เต เดธเดœเตเดœเดฎเดพเด•เตเด•เตเดจเตเดจเต.
  • UMTYPE - เดˆ เดซเต€เตฝเดกเดฟเดจเดพเดฏเดฟ เดธเดพเดงเตเดฏเดฎเดพเดฏ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ: เด’เดฐเต เด•เตบเดธเต‹เตพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดณเตเดณ เด•เตบเดธเต‹เตพ, เดตเดฟเตปเดกเต‹ เดฎเต‹เดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเดฟเตปเดกเต‹เด•เตพ. เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดจเดฎเตเด•เตเด•เต nt เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.
  • BUFFER_OVERFLOW_CHECKS - เดฌเดซเตผ เด“เดตเตผเดซเตเดฒเต‹เดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดธเตเดฑเตเดฑเดพเด•เตเด•เต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต, เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดฎเดฒเตเดฒ, เดžเด™เตเด™เตพ เด…เดคเต เด“เดซเดพเด•เตเด•เตเดจเตเดจเต.
  • MINWIN_SDK_LIB_PATH โ€“ เดˆ เดฎเต‚เดฒเตเดฏเด‚ SDK_LIB_PATH เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เดกเดฟเดกเดฟเด•เต†เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเด™เตเด™เตพ เดšเต†เด•เตเด•เตเดกเต เดฌเดฟเตฝเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดกเดฟเด•เตเดฒเดฏเตผ เดšเต†เดฏเตเดค เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเด•เตเด•เดฒเดฟเดฒเตเดฒเต†เดจเตเดจเต เดตเดฟเดทเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸ, เดˆ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด•เดฏเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.
  • เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ - เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเดพเดฏเตเดณเตเดณ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต.
  • เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต - เด…เดธเด‚เดฌเตเดฒเดฟเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดนเต†เดกเตเดกเตผ เดซเดฏเดฒเตเด•เตพ. เด‡เดตเดฟเดŸเต† เด…เดตเตผ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ DDK-เดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดตเดฐเตเดจเตเดจ เดซเดฏเดฒเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดคเดฏเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดฑเตเดฑเต‡เดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.
  • TARGETLIBS - เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต.
  • เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ 1 เด†เดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸ เด’เดฐเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดซเต€เตฝเดกเดพเดฃเต USE_NTDLL.
  • USER_C_FLAGS - เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เต‹เดกเต เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเต€เดชเตเดฐเตŠเดธเดธเตเดธเตผ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเดพเด•เตเดจเตเดจ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดซเตเดฒเดพเด—เตเด•เตพ.

เด…เดคเดฟเดจเดพเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเดฎเตพ x86 (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ x64) เดšเต†เด•เตเด•เตเดกเต เดฌเดฟเตฝเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เดตเตผเด•เตเด•เดฟเด‚เด—เต เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เดชเตเดฐเตŠเดœเด•เตเดฑเตเดฑเต เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเดฟ เดฌเดฟเตฝเดกเต เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•. เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเตฝ เด‰เดฃเตเดŸเต†เดจเตเดจเต เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเดฟเดฒเต† เดซเดฒเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต.

เดตเดฟเตปเดกเต‹เดธเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเด‚ เด…เด•เตเดฐเต‹เดฃเดฟเดธเต เด†เด•เตเดฑเตเดฑเต€เดตเต เดฑเต€เดธเตเดฑเตเดฑเต‹เตผ เดธเต‡เดตเดจเดตเตเด‚

เดˆ เดซเดฏเตฝ เด…เดคเตเดฐ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเดฟเดถเด•เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดคเดฟเดจเตเดฑเต† เดชเต†เดฐเตเดฎเดพเดฑเตเดฑเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดšเดฟเดจเตเดคเดฟเด•เตเด•เดพเตป เดธเดฟเดธเตเดฑเตเดฑเด‚ เดถเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดžเด™เตเด™เดณเต† เด…เดฏเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

เดตเดฟเตปเดกเต‹เดธเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเด‚ เด…เด•เตเดฐเต‹เดฃเดฟเดธเต เด†เด•เตเดฑเตเดฑเต€เดตเต เดฑเต€เดธเตเดฑเตเดฑเต‹เตผ เดธเต‡เดตเดจเดตเตเด‚

เด’เดฐเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเด™เตเด™เดจเต† เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเด‚?

autochk เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เดณเตเดŸเต† เดธเตเดฑเตเดฑเดพเตผเดŸเตเดŸเดชเตเดชเต เด•เตเดฐเดฎเด‚ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ เด•เต€เดฏเตเดŸเต† เดฎเต‚เดฒเตเดฏเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเดพเดฃเต:

HKLMSystemCurrentControlSetControlSession ManagerBootExecute

เดธเต†เดทเตป เดฎเดพเดจเต‡เดœเตผ เดˆ เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เตพ เด“เดฐเต‹เดจเตเดจเดพเดฏเดฟ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดธเดฟเดธเตเดฑเตเดฑเด‚ 32 เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเตฝ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเดฒเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดธเต†เดทเตป เดฎเดพเดจเต‡เดœเตผ เดคเดฟเดฐเดฏเตเดจเตเดจเต. เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ เด•เต€ เดฎเต‚เดฒเตเดฏ เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เด‡เดชเตเดฐเด•เดพเดฐเดฎเดพเดฃเต:

autocheck autochk *MyNative

เดฎเต‚เดฒเตเดฏเด‚ เดนเต†เด•เตเดธเดพเดกเต†เดธเดฟเดฎเตฝ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เดธเดพเดงเดพเดฐเดฃ ASCII เด…เดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดฎเตเด•เดณเดฟเตฝ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เต€ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚:

61,75,74,6f,63,68,65,63,6b,20,61,75,74,6f,63,68,6b,20,2a,00,4d,79,4e,61,74,69,76,65,00,00

เดถเต€เตผเดทเด•เด‚ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเดพเตป, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด“เตบเดฒเตˆเตป เดธเต‡เดตเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด‡เดคเต.

เดตเดฟเตปเดกเต‹เดธเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเด‚ เด…เด•เตเดฐเต‹เดฃเดฟเดธเต เด†เด•เตเดฑเตเดฑเต€เดตเต เดฑเต€เดธเตเดฑเตเดฑเต‹เตผ เดธเต‡เดตเดจเดตเตเด‚
เด’เดฐเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต:

  1. เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเตฝ system32 เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเตเด•
  2. เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด•เต€ เดšเต‡เตผเด•เตเด•เตเด•
  3. เดฎเต†เดทเต€เตป เดฑเต€เดฌเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด•

เดธเต—เด•เดฐเตเดฏเดพเตผเดคเตเดฅเด‚, เด’เดฐเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด‡เดคเดพ:

install.bat

@echo off
copy MyNative.exe %systemroot%system32.
regedit /s add.reg
echo Native Example Installed
pause

add.reg

REGEDIT4

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager]
"BootExecute"=hex(7):61,75,74,6f,63,68,65,63,6b,20,61,75,74,6f,63,68,6b,20,2a,00,4d,79,4e,61,74,69,76,65,00,00

เด‡เตปเดธเตเดฑเตเดฑเดพเดณเตเดšเต†เดฏเตโ€Œเดคเต เดฑเต€เดฌเต‚เดŸเตเดŸเต เดšเต†เดฏเตโ€Œเดคเดคเดฟเดจเตเดถเต‡เดทเด‚, เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดชเตเดชเต เดธเตโ€Œเด•เตเดฐเต€เตป เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเตเดคเดจเตเดจเต†, เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดšเดฟเดคเตเดฐเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚:

เดตเดฟเตปเดกเต‹เดธเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเด‚ เด…เด•เตเดฐเต‹เดฃเดฟเดธเต เด†เด•เตเดฑเตเดฑเต€เดตเต เดฑเต€เดธเตเดฑเตเดฑเต‹เตผ เดธเต‡เดตเดจเดตเตเด‚

เดซเดฒเด‚

เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดšเต†เดฑเดฟเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดตเดฟเตปเดกเต‹เดธเต เดจเต‡เดฑเตเดฑเต€เดตเต เดคเดฒเดคเตเดคเดฟเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเดฟเด•เดšเตเดšเตเด‚ เดธเดพเดฆเตเดงเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพเด•เตเด•เต เดฌเต‹เดงเตเดฏเดชเตเดชเต†เดŸเตเดŸเต. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดฎเตเตป เดชเดคเดฟเดชเตเดชเดฟเดจเต‡เด•เตเด•เดพเตพ เดตเดณเดฐเต† เดจเต‡เดฐเดคเตเดคเต† เดคเดจเตเดจเต† เดกเตเดฐเตˆเดตเดฑเตเดฎเดพเดฏเดฟ เด‡เดŸเดชเดดเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเต‡เดตเดจเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต เดžเดพเดจเตเด‚ เด‡เดจเตเดจเต‹เดชเต‹เดณเดฟเดธเต เดธเตผเดตเด•เดฒเดพเดถเดพเดฒเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณเดตเดฐเตเด‚ เดคเตเดŸเดฐเตเด‚. win32 เดทเต†เดฒเตเดฒเดฟเดจเตเดฑเต† เดตเดฐเดตเต‹เดŸเต†, เด‡เดคเดฟเดจเด•เด‚ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต†เดŸเตเดคเตเดค เด’เดฐเต เดธเดฎเตเดชเต‚เตผเดฃเตเดฃ เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเต เดฏเตเด•เตเดคเดฟเดธเดนเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ (เด‡เดคเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เด‡เดตเดฟเดŸเต†).

เด…เดŸเตเดคเตเดค เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เดธเดœเต€เดต เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เตฝ เดธเต‡เดตเดจเดคเตเดคเดฟเดจเตเดฑเต† เดฎเดฑเตเดฑเตŠเดฐเต เด˜เดŸเด•เดคเตเดคเดฟเตฝ เดธเตเดชเตผเดถเดฟเด•เตเด•เตเด‚, เด…เดคเดพเดฏเดคเต UEFI เดกเตเดฐเตˆเดตเตผ. เดžเด™เตเด™เดณเตเดŸเต† เดฌเตเดฒเต‹เด—เต เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเตˆเดฌเตเดšเต†เดฏเตเดฏเตเด•, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดŸเตเดคเตเดค เดชเต‹เดธเตเดฑเตเดฑเต เดจเดทเตโ€ŒเดŸเดฎเดพเด•เดฟเดฒเตเดฒ.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•