![]() |
#2
zklhp2012-11-15 21:58
|
MOV EDI,401026;要加密的代码结束地址,也就是要加密的代码最后面的地址
MOV ECX,14;要加密的代码的长度 比如 401012-401026 也就是401026减去401012等于14
XOR BYTE PTR DS:[EDI],AL;异或edi和AL,第一次EDI等于401026 以此类推
DEC EDI
LOOPD SHORT 0040100D;循环异或到加密完成执行下一行,0040100D的地址是XOR BYTE PTR DS:[EDI],AL
下面是MASM 消息框加密源码

.386
.Model Flat, StdCall
Option Casemap :None
Include user32.inc
Include kernel32.inc
IncludeLib user32.lib
IncludeLib kernel32.lib
.data
a db '雨滴小组群:199235789',0
.CODE
start:
nop
mov al, 12h;秘钥
mov edi, codeEnd;要加密的代码结束地址
mov ecx, codeEnd - codeStart;要加密的代码结束地址减去开始地址=要加密的代码长度
decryptLoop:;这个是循环用的
XOR BYTE PTR DS:[EDI],AL
dec edi
loop decryptLoop;循环加密到加密完执行下一行
codeStart:;这里是要加密的代码开始地址
PUSH 0
PUSH offset a
PUSH offset a
PUSH 0
Call MessageBox
ret
codeEnd:;这里是要加密的代码结束地址
END start
.Model Flat, StdCall
Option Casemap :None
Include user32.inc
Include kernel32.inc
IncludeLib user32.lib
IncludeLib kernel32.lib
.data
a db '雨滴小组群:199235789',0
.CODE
start:
nop
mov al, 12h;秘钥
mov edi, codeEnd;要加密的代码结束地址
mov ecx, codeEnd - codeStart;要加密的代码结束地址减去开始地址=要加密的代码长度
decryptLoop:;这个是循环用的
XOR BYTE PTR DS:[EDI],AL
dec edi
loop decryptLoop;循环加密到加密完执行下一行
codeStart:;这里是要加密的代码开始地址
PUSH 0
PUSH offset a
PUSH offset a
PUSH 0
Call MessageBox
ret
codeEnd:;这里是要加密的代码结束地址
END start
要把代码段改成可写 在用OD断点加密 保存加密好的程序实现加密
[ 本帖最后由 dgz333 于 2012-11-15 21:57 编辑 ]