WEB开发网
开发学院网络安全黑客技术 指令动态执行加密法 阅读

指令动态执行加密法

 2007-01-13 20:14:03 来源:WEB开发网   
核心提示:概述:这儿讲述的是用单条指令加密法,再用 int 1 单步中断解下一条指令的第一字节,指令动态执行加密法,由于用另外程序解密时无法预知指令长, 所以不能用编程的方法解密,只能用手工一条一条地解,具体实现见注释,这种加密法的麻烦只处就是加密时也要一句一句来

概述:

这儿讲述的是用单条指令加密法,再用 int 1 单步中断解下一条指令的第一字节,由于用另外程序解密时无法预知指令长, 所以不能用编程的方法解密,只能用手工一条一条地解。具体实现见注释,这种加密法的麻烦只处就是加密时也要一句一句来。

汇编编程示例:

code  segment
    assume  cs:code,ds:code
    org  100h
start:
    jmp  install
d_ok  db  'OK, passed...',0dh,0ah,24h
temp_bx   dw  ?
off1    dw  ?
seg1    dw  ?
int1:
    mov  temp_bx,bx   ;save bx
    mov  bx,sp     ;BX=SP=0016h
    mov  bx,ss:[bx]
    xor  byte ptr ds:[bx],55h   ;decode
    mov  bx,temp_bx
    iret
install:
    mov  ax,3501h       ;保存原 INT 1 中断向量
    int  21h
    mov  off1,bx        ;设置新 INT 1 到 offset int1
    mov  seg1,es
    mov  ax,2501h
    mov  dx,offset int1
    int  21h
   
    xor  byte ptr x1,55h    ;这些指令是先把以下
    xor  byte ptr x2,55h    ;的一些指令加密
    xor  byte ptr x3,55h    ;当然,在应用时就不会有这些指令了
    xor  byte ptr x4,55h
    xor  byte ptr x5,55h
    xor  byte ptr x6,55h
    xor  byte ptr x7,55h
    xor  byte ptr x8,55h
    xor  byte ptr x9,55h
    pushf
    pop  ax
    or   ax,0100h
    push  ax
    popf             ;打开单步跟踪
   
    nop              ;由于单步跟踪要在执行下一条指令后才激活
x1:                  ;所以这儿是一条 NOP 指令
    mov  ah,9
x2:
    mov  dx,offset d_ok
x3:
    int  21h
x4:   
    pushf
x5:
    pop  ax           ;从 X1 到 X9 的指令要在
x6:
    and  ax,0feffh        ;执行中才由 INT 1 逐句解开
x7:
    push  ax
x8:
    popf
x9:
    nop
   
    mov  ax,2501h       ;把 INT 1 复原
    lds  dx,dword ptr off1
    int  21h
    int  20h

Tags:指令 动态 执行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接