关于汇编程序 谁看的懂啊

来源:百度知道 编辑:UC知道 时间:2024/06/07 22:29:45
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.15D9(C)
|
:0001.15DB 50 push ax
:0001.15DC 001E0005 add [0500], bl
:0001.15E0 00F0 add al , dh
:0001.15E2 00A0004B add [bx+si+4B00], ah
:0001.15E6 0019 add [bx+di], bl
:0001.15E8 012C add [si], bp
:0001.15EA 00B40078 add [si+7800], dh
:0001.15EE 0032 add [bp+si], dh
:0001.15F0 00000000000000000000 BYTE 10 DUP(0)
:0001.15FA 00000000000000000000 BYTE 10 DUP(0)
:0001.1604 00000000000000000000 BYTE 10 DUP(0)
:0001.160E 00000000000000000000 BYTE 10 DUP(0)
:0001.1618 00000000000000000000 BYTE 10 DUP(0)
:0001.1622 00000000000000000000 BYTE 10 DUP(0)

这段程序大概什么意思啊

如果单从汇编语言的语法来说,这段代码很简单:就是将几个寄存器(ax、bx、dx)中的数值加到某几个内存变量中,最后那几行是对一段全零数据区的反汇编结果
这一定是用反汇编软件对一段二进制数据的反汇编结果,从代码流程上看是毫无逻辑的,首先前面的几个计算指令完全没有任何逻辑关系,不是任何有意义的计算逻辑;其次到了0001.15F0开始就是全零数据了,而前一句话并不是跳转(jmp)或者函数返回(ret),CPU执行到这里必然根本走不下去,会导致死机。因此分析结论是这段二进制数据根本就不是程序代码,而是程序中的数据区域(如变量、常量、数组等),对它进行反汇编根本就没有任何意义。但反汇编器(如debug、TD)等都比较机械,你让他反汇编哪段地址,它就尝试用机器指令去解释,而不管这段地址中是否是有效的代码
如果你是在用反汇编器想破解某个软件,那么可能是该软件内部使用了仿破解机制,软件采用了自迭代方法,即在运行时由前面的代码动态生成后面的代码,这样使破解者无法使用静态反汇编方法进行分析。