二 How to encryption your code

在HOW TO EXCUTE CODE IN DATA SEGMENT中: 实现在数据段 加入指令 执行数据段的指令 既然可以做到这点,那就可以将数据段的指令进行加密,在运行的时候进行动态解密,什么时候进行解密,解密算法怎么样都是变化无穷的,也就是同样一段有特出意义的指令集合具体到程序的时候是千变万化的。 只是为了说明可以这样,为了简单,我只是用了一个最简单的方法对数据段的code1,code2,code3,进行了处理。 源代码如下: ;FOR STUDY I WRITE THIS PROGRAM ;NEED FORWARD STUDY  ;HOW TO ENCRYPTION YOUR CODE                          ;********************************* stackseg     SEGMENT              DW 10 DUP(0)              tos LABEL WORD    stackseg       ENDS ;******************************              dataseg       SEGMENT                       code1       DB   0               code2       DB   0               code3       DB   0               code4       DB   0               code      DW   0               code7       DB   0               code8       DB   0               code910     DW   0               code11      DB   0               code12      DB   0               code13      DB   0               code14      DB   0               code15      DB   0               code16      DB   0               code17      DB   0               code18      DB   0               code19      DB   0               code20      DB   0               code21      DB   0               code22      DB   0 dataseg        ENDS ;**************************** codeseg2    SEGMENT                       main  PROC  FAR             ASSUME    CS:codeseg2,DS:dataseg,SS:stackseg                     MOV       AX,stackseg             MOV       SS,AX             MOV       SP,OFFSET tos            ; MOV       AX,0            ; MOV       DL,2ch          ;put out  ,            ; MOV       AH,02h             ;INT       21h                       CALL    FAR PTR  laozhu            ; MOV       AX,0            ; MOV       DL,1fh            ; MOV       AH,2bh          ; put out  +            ; INT       21h                 main ENDP codeseg2 ENDS                          codeseg1  SEGMENT       laozhu  PROC  FAR                         ASSUME CS:codeseg1              ;*************************************************              MOV       AX,0                   ;AX value is used to change ds              MOV       DS,AX                    MOV       AX,DS              PUSH      AX                    ;use as cs when ret              MOV       AX,0                    PUSH      AX                    ;use as ea when ret             ;*************************************************             ;for simple i only encryption three code in data segment             ;MOV       code1,0adh                ;MOV       code2,0adh             ;MOV       code3,0adh              MOV       code1,0ach                 MOV       code2,0aeh              MOV       code3,09dh              ADD       code1,1              SUB       code2,1              ADD       code3,10h              ;****************************************              ;wtite code to data segment              MOV       code4,  0b8h     ;   MOV       AX,cs              MOV       code,  CS              MOV       code7,50h        ;push ax              MOV       code8, 0b8h      ;mov ax ,0h                 MOV       code910,0h       ;very important  you need choose a good value  can be changed             MOV       code11,50h       ;push ax              MOV       code12,0b8h      ; put out   #    to indicate  code in data segment is runing             MOV       code13,0                           MOV       code14,0              MOV       code15,0b2h             MOV       code16,23h              MOV       code17,0b4h             MOV       code18,2              MOV       code19,0cdh              MOV       code20,21h              MOV       code21,0cbh        ;ret            ;******************************************             ; MOV       AX,0               ;put out  !             ; MOV       DL,21h             ; MOV       AH,02h             ; INT       21h                                      ; MOV       AX,0               ;put out  !             ; MOV       DL,21h             ; MOV       AH,02h             ; INT       21h            ;**************************************************              RET                                       laozhu ENDP codeseg1     ENDS ;**********************************************                           ;********************************                 END 欢迎交流
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值