|
此为汇编程序初级帖,主要提及了机器码与汇编指令间的转换,汇编与反汇编的应用,以下是给出的操作实例
重要一点: 是汇编与批处理的结合,从而使批处理可以直接查看内存!
经过几天的观察 终于发现了其中的猫腻(:
其代码用批处理执行如下:因为我们很多人对汇编不了解,所以对这段仅仅64k的代码众说纷纭.
下面引用 一段极其精短的汇编代码进行分析:- more +1 %~s0|debug
- e100 B0 13 CD 10 C4 2F AA 13 C7 64 13 06 6C 04 50 B4 01 CD 16 58 74 F0 B8 03 00 CD 10 C3
- g
复制代码 此段代码,为什么可以被执行呢?它到底是怎么被执行的?
其实这些是机器码,被植入内存后由机器来执行
那么我们用汇编怎么写呢?
接下来我们将其 反汇编就可以看到其中的猫腻了
先将此段代码加入到内存 使用debug的u命令来反汇编(赎不详述) 结果如下:- a100
- MOV AL,13
- INT 10
- LES BP,[BX]
- STOSB
- ADC AX,DI
- DB 64
- ADC AX,[046C]
- PUSH AX
- MOV AH,01
- INT 16
- POP AX
- JZ 0106
- MOV AX,0003
- ADD [BX+SI],AL
- ADD [SI],DH
- ADD [BX+13],CL
复制代码 这下可以看出来 编程高手的作品并不是天书 他们只是省略了第三方工具 直接通过机器码来编译而已(如果不用机器码 想必应该很长吧...)
好了 让我们再运行一下反汇编出来的这一小段程序,看看结果一样吗?
- more +1 %~s0|debug
- a100
- MOV AL,13
- INT 10
- LES BP,[BX]
- STOSB
- ADC AX,DI
- DB 64
- ADC AX,[046C]
- PUSH AX
- MOV AH,01
- INT 16
- POP AX
- JZ 0106
- MOV AX,0003
- ADD [BX+SI],AL
- ADD [SI],DH
- ADD [BX+13],CL
- g
复制代码 以上为个人观点,如有雷同 纯属巧合:)
|
|