打造快速关机迷你程序---FASM

继上一篇文章,写反汇编确实是费力不讨好,因此用FASM来写一个。

神马?你不知道FASM是虾米东东?一个汇编的编译器而已。

原来接触过,没深入,今天心血来潮搞了一下,下了个最新版的玩玩。

汉化了大部分资源之后发现居然公开IDE的源码,我郁闷。

不过改源码心里没底,毕竟不是自己写的。

用了N个小时做了个自己的库,方便以后自己用。

汇编这种伪指令确实要快上许多,当然用C更快,用易语言更更快,那没啥意思。

代码如下,用了很多我自己的库,大家看懂核心代码即可。

include 'win32s.inc'
.GUI
.UNICODE

entry WinMain

.s_code
     SeShutdownName TCHAR 'SeShutdownPrivilege',0;
proc WinMain
     local hToken : HANDLE NULL;
     local TokenPrivileges : TOKEN_PRIVILEGES;

     invoke OpenProcessToken, INVALID_HANDLE_VALUE, TOKEN_QUERY OR TOKEN_ADJUST_PRIVILEGES, addr hToken;
     cmp eax, 0;
     je _EXIT;
     mov [TokenPrivileges.PrivilegeCount], 1;
     mov [TokenPrivileges.Privileges0.Attributes], SE_PRIVILEGE_ENABLED;
     invoke LookupPrivilegeValue, NULL, addr SeShutdownName, addr TokenPrivileges.Privileges0.Luid;
     cmp eax, 0;
     je _END;
     invoke AdjustTokenPrivileges, [hToken], FALSE, addr TokenPrivileges, sizeof.TOKEN_PRIVILEGES, NULL, NULL;
     cmp eax, 0;
     je _END;
     invoke NtShutdownSystem, ShutdownPowerOff;
_END:
     cmp [hToken], 0;
     je _EXIT;
     invoke CloseHandle, [hToken];
_EXIT:
     invoke ExitProcess, 0;
endp

.s_end


得到的反汇编如下

反汇编和汇编几乎一样,但是汇编更加易懂、直观。

文件大小和预计的一样,1.5KB。

决定以后像这样的小东西就用汇编来写了。

不过,像复杂一点的窗体程序,不敢想象那是怎样的痛苦。。。。。。

-------------

我也整理了一个中文版的FASM文档、连同汉化的IDE、如何添加API库的说明一起上传了。

有兴趣的朋友可以去下载玩玩。在我上传的资源里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值