指令动态执行加密法
概述:
这儿讲述的是用单条指令加密法,再用 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
(出处:赢政天下整理收藏)
相关文章:
相关软件:
→ 特别推荐
→ 热点TOP10
我为人人《《==》》人人为我
关于我们 |
帮助(?)
| 广告服务 |
版权声明 |
商业合作 |
发展历程 |
加盟我们 |
联系我们
Copyright © 1998-2003
winzheng.com All Rights Reserved.
繁体版:由华琦数码技术提供
Powered
by:MeSky.Net
当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。