INT 21h常用功能号

AH = 01h

出口参数:AL=ASCII子符
功能说明:键但输入一个字符。如果AL=00h.应再次调用该功能获取扩展ASClI字初代码。本功能将在屏称上显示输入的内容(有回显)。调用该功能如果没有按键输入,则一直循环等待直到按键才结束功能调用,此时控制返回调用程序 继续阅读“INT 21h常用功能号”

指定汇编程序识别新指令

MASM在默认情况下只汇编16位8086处理器的指令;如果需要使用80186及以后处理器新增的指令,必须使用处理器选择伪指令,如下表所示。
例如,当源程序中使用了80286新增的指令时,应该在程序中加上.286或.286P伪指令;若想利用32位寄存器完成32位操作,则必须加上.386及以上处理器的选择伪指令。

继续阅读“指定汇编程序识别新指令”

认识PE格式

Windows的可执行文件(EXE,DLL)是PE(Portable Executable)格式。
PE文件使用的是一个平面地址空间,所有代码和数据都被合并在一起,组成一个很大的结构。文件的内容被分割为不同的区块(Section,又称区段、节等),块中包含代码或数据。每个块都有它自己在内存中的一套属性,比如:这个块是否包含代码、是否只读或可读写等。

继续阅读“认识PE格式”

定位API的原理

要开发通用shellcode,定位API是必不可少的。Windows的API是通过动态链接库中的导出函数来实现的,例如,内存操作等函数在kernel32.dll中实现;大量的图形界面相关的APl则在user32.dll中实现。Win_32平台下的shellcode使用最广泛的方法,就是通过从进程环境块中找到动态链接库的导出表,并搜索出所需的APl地址,然后逐一调用。 继续阅读“定位API的原理”