win32asm(32位下windows汇编)总结经验

备注:开发工具Radasm (以下都是在此工具中操作)

1.如何给win32asm程序添加UAC控制

灵感来自vc如何添加UAC,其中vs10自带UAC控制,如果不特殊设定的话就默认设置asinvoke。

第一,自建个vs10项目,在debug/relese目录下找到.manifest的文件其中内容如下

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level='requireAdministrator' uiAccess='false' />
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

将文件copy到asm工程文件夹下(自己建个文件将以上内容copy进去就行)例如名为 uac.mainfest

第二,UAC控制的文件准备好后;打开xx.rc文件(radasm在创建工程的时候会创建此文件),输入以下内容

#define IDR_RCDATA1 1

IDR_RCDATA1                  24                      "uac.manifest"

注意id值一定要为1,类型24

第三,编译链接的时候,要记住先‘编译资源脚本’。

2. 设置段SECTION的属性

开发中会出现子修改code代码的需求,如果直接利用代码修改自身代码,会提示不可写,这是因为.code段属性为可读可执行,所以写入出错。

打开菜单 ‘工程- 工程选项’ 弹出对话窗口,在’链接‘输入框中 LINKE.exe 后添加 

/SECTION:.text|RWE

 3. struct 定义

struct_name STRUCT
dowrd1    dd ?
struct_name ends

http://www.cnblogs.com/taowen/articles/11237.html

签名档: 从事网络安全和编程的我,很希望能找到志同道合的朋友交流。 欢迎cn博客的好友拍砖,留言。
原文地址:https://www.cnblogs.com/M4ster/p/win32asm_exp.html