首页
社区
课程
招聘
还有人会DOS下的代码分析吗?
发表于: 2004-8-31 08:49 6689

还有人会DOS下的代码分析吗?

2004-8-31 08:49
6689
这是以前的一个老程序,DOS下的,用DEBUG编写的,

谁能找出它的脱密算法和密钥。

PS:该程序有简单的防跟踪功能。附件:DISPLAY.rar

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (14)
雪    币: 209
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
怎么没有人回应呀???
2004-9-2 09:57
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
3
想来现在很少有人搞dos破解了
2004-9-2 10:19
0
雪    币: 280
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
什么也不是,一运行就出个
Thank you very much !
                        yuan
2004-9-10 18:13
0
雪    币: 255
活跃值: (266)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
5
没看到加密的地方
seg000:0100 ;
seg000:0100 ; ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
seg000:0100 ; ※    This file is generated by The Interactive Disassembler (IDA)        ※
seg000:0100 ; ※    Copyright (c) 2003 by DataRescue sa/nv, <ida@datarescue.com>        ※
seg000:0100 ; ※ Licensed to: Michael Wolski - Personal Use (1-user Standard 07/2003)   ※
seg000:0100 ; ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
seg000:0100 ;
seg000:0100 ; File Name   : C:\Documents and Settings\Administrator\桌面\DISPLAY.COM
seg000:0100 ; Format      : MS-DOS COM-file
seg000:0100 ; Base Address: 0h Range: 100h-2A0h Loaded length: 1A0h
seg000:0100 
seg000:0100 
seg000:0100 ; ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
seg000:0100 
seg000:0100 ; Segment type: Pure code
seg000:0100 seg000 segment byte public 'CODE'
seg000:0100 assume cs:seg000
seg000:0100 assume es:nothing, ss:seg000, ds:seg000
seg000:0100 
seg000:0100 ; 〓〓〓〓〓〓〓〓 S U B R O U T I N E  〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
seg000:0100 
seg000:0100 
seg000:0100 public start
seg000:0100 start proc near
seg000:0100 push    ds
seg000:0101 mov     ax, 0
seg000:0104 push    ax
seg000:0105 push    cs
seg000:0106 pop     ds
seg000:0107 push    ds
seg000:0108 pop     es
seg000:0109 assume es:seg000
seg000:0109 push    ds
seg000:010A mov     ax, 3516h
seg000:010D int     21h                   ; DOS - 2+ - GET INTERRUPT VECTOR
seg000:010D                               ; AL = interrupt number
seg000:010D                               ; Return: ES:BX = value of interrupt vector
seg000:010F push    es
seg000:0110 pop     ds
seg000:0111 mov     dx, bx
seg000:0113 mov     ax, 2546h
seg000:0116 int     21h                   ; DOS - SET INTERRUPT VECTOR
seg000:0116                               ; AL = interrupt number
seg000:0116                               ; DS:DX = new vector to be used for specified interrupt
seg000:0118 pop     ds
seg000:0119 mov     ds:300h, ss
seg000:011D mov     ds:302h, sp
seg000:0121 mov     ah, 0Fh
seg000:0123 int     10h                   ; - VIDEO - GET CURRENT VIDEO MODE
seg000:0123                               ; Return: AH = number of columns on screen
seg000:0123                               ; AL = current video mode
seg000:0123                               ; BH = current active display page
seg000:0125 mov     ds:304h, ax
seg000:0128 mov     ds:306h, bx
seg000:012C mov     ax, 0
seg000:012F mov     ds, ax
seg000:0131 mov     dx, 46D0h
seg000:0134 mov     ax, 3
seg000:0137 int     10h                   ; - VIDEO - SET VIDEO MODE
seg000:0137                               ; AL = mode
seg000:0139 mov     ax, 3501h
seg000:013C int     21h                   ; DOS - 2+ - GET INTERRUPT VECTOR
seg000:013C                               ; AL = interrupt number
seg000:013C                               ; Return: ES:BX = value of interrupt vector
seg000:013E dec     dx
seg000:013F mov     es:[bx], dl
seg000:0142 mov     ds:4, dx
seg000:0146 not     dx
seg000:0148 mov     ds:0Ch, dx
seg000:014C push    cs
seg000:014D pop     es
seg000:014E mov     cx, 40h
seg000:0151 xor     si, si
seg000:0153 mov     di, 400h
seg000:0156 cld
seg000:0157 repne movsw
seg000:0159 mov     ah, 6
seg000:015B mov     cx, 0
seg000:015E mov     dx, 1950h
seg000:0161 mov     bx, 0
seg000:0164 int     10h                   ; - VIDEO - SCROLL PAGE UP
seg000:0164                               ; AL = number of lines to scroll window (0 = blank whole window)
seg000:0164                               ; BH = attributes to be used on blanked lines
seg000:0164                               ; CH,CL = row,column of upper left corner of window to scroll
seg000:0164                               ; DH,DL = row,column of lower right corner of window
seg000:0166 push    cs
seg000:0167 pop     ds
seg000:0168 push    cx
seg000:0169 pop     ss
seg000:016A mov     sp, 80h
seg000:016D mov     ax, ds:410h
seg000:0170 mov     ds:330h, ax
seg000:0173 mov     ax, ds:412h
seg000:0176 mov     ds:332h, ax
seg000:0179 mov     ax, ds:470h
seg000:017C mov     ds:334h, ax
seg000:017F mov     ax, ds:472h
seg000:0182 mov     ds:336h, ax
seg000:0185 mov     ax, 1DCh
seg000:0188 mov     ds:410h, ax
seg000:018B mov     ds:412h, ds
seg000:018F mov     ds:45Ah, ds
seg000:0193 mov     ds:472h, ds
seg000:0197 mov     ax, 204h
seg000:019A mov     cx, 228h
seg000:019D mov     ds:458h, ax
seg000:01A0 mov     ds:470h, cx
seg000:01A4 xor     ax, ax
seg000:01A6 mov     cx, 18h
seg000:01A9 mov     bx, 1A0h
seg000:01AC 
seg000:01AC loc_1AC:                      ; CODE XREF: start+B0j
seg000:01AC add     ax, [bx]
seg000:01AE inc     bx
seg000:01AF inc     bx
seg000:01B0 loop    loc_1AC
seg000:01B2 mov     ds:340h, ax
seg000:01B5 mov     bx, 47Eh
seg000:01B8 mov     cx, 40h
seg000:01BB 
seg000:01BB loc_1BB:                      ; CODE XREF: start+BFj
seg000:01BB push    word ptr [bx]
seg000:01BD dec     bx
seg000:01BE dec     bx
seg000:01BF loop    loc_1BB
seg000:01C1 mov     ss, ds:300h
seg000:01C5 mov     sp, ds:302h
seg000:01C9 mov     ax, 7654h
seg000:01CC not     ax
seg000:01CE mov     bx, ax
seg000:01D0 add     ax, ax
seg000:01D2 into
seg000:01D3 jz      locret_1DB
seg000:01D5 add     bx, bx
seg000:01D7 into
seg000:01D8 call    loc_245
seg000:01DB 
seg000:01DB locret_1DB:                   ; CODE XREF: start+D3j
seg000:01DB retn
seg000:01DB start endp ; sp = -6
seg000:01DB 
seg000:01DB ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
seg000:01DC db  83h ; ?
seg000:01DD db 0C4h ; ?
seg000:01DE db    6 ;  
seg000:01DF db 0B8h ; ?
seg000:01E0 db  63h ; c
seg000:01E1 db  0Fh ;  
seg000:01E2 db  33h ; 3
seg000:01E3 db    6 ;  
seg000:01E4 db  40h ; @
seg000:01E5 db    3 ;  
seg000:01E6 db 0BEh ; ?
seg000:01E7 db  45h ; E
seg000:01E8 db    2 ;  
seg000:01E9 db 0B9h ; ?
seg000:01EA db  2Dh ; -
seg000:01EB db    0 ;  
seg000:01EC db  31h ; 1
seg000:01ED db    4 ;  
seg000:01EE db  8Bh ; ?
seg000:01EF db    4 ;  
seg000:01F0 db  46h ; F
seg000:01F1 db  46h ; F
seg000:01F2 db 0E2h ; ?
seg000:01F3 db 0F8h ; ?
seg000:01F4 db 0B8h ; ?
seg000:01F5 db    3 ;  
seg000:01F6 db    0 ;  
seg000:01F7 db 0CDh ; ?
seg000:01F8 db  10h ;  
seg000:01F9 db 0A1h ; ?
seg000:01FA db    4 ;  
seg000:01FB db    3 ;  
seg000:01FC db  8Bh ; ?
seg000:01FD db  1Eh ;  
seg000:01FE db    6 ;  
seg000:01FF db    3 ;  
seg000:0200 db 0CDh ; ?
seg000:0201 db  10h ;  
seg000:0202 db 0EBh ; ?
seg000:0203 db  41h ; A
seg000:0204 db    6 ;  
seg000:0205 db  53h ; S
seg000:0206 db  31h ; 1
seg000:0207 db 0DBh ; ?
seg000:0208 db  8Eh ; ?
seg000:0209 db 0C3h ; ?
seg000:020A db 0BBh ; ?
seg000:020B db 0CFh ; ?
seg000:020C db  46h ; F
seg000:020D db  26h ; &
seg000:020E db  39h ; 9
seg000:020F db  1Eh ;  
seg000:0210 db    4 ;  
seg000:0211 ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
seg000:0211 
seg000:0211 loc_211:                      ; CODE XREF: seg000:0250j
seg000:0211 add     [si+11h], dh
seg000:0214 push    ds
seg000:0215 push    cs
seg000:0216 pop     ds
seg000:0217 mov     bx, 100h
seg000:021A mov     cx, 82h
seg000:021D 
seg000:021D loc_21D:                      ; CODE XREF: seg000:0221j
seg000:021D mov     [bx], ax
seg000:021F inc     bx
seg000:0220 inc     bx
seg000:0221 loop    loc_21D
seg000:0223 pop     ds
seg000:0224 nop
seg000:0225 pop     bx
seg000:0226 pop     es
seg000:0227 assume es:nothing
seg000:0227 iret
seg000:0227 ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
seg000:0228 db  1Eh ;  
seg000:0229 db 0B8h ; ?
seg000:022A db    0 ;  
seg000:022B db    0 ;  
seg000:022C db  8Eh ; ?
seg000:022D db 0D8h ; ?
seg000:022E db 0A1h ; ?
seg000:022F db    4 ;  
seg000:0230 db    0 ;  
seg000:0231 db    3 ;  
seg000:0232 db    6 ;  
seg000:0233 db  0Ch ;  
seg000:0234 db    0 ;  
seg000:0235 db  0Eh ;  
seg000:0236 db  1Fh ;  
seg000:0237 db 0BEh ; ?
seg000:0238 db  45h ; E
seg000:0239 db    2 ;  
seg000:023A db 0B9h ; ?
seg000:023B db  30h ; 0
seg000:023C db    0 ;  
seg000:023D db  21h ; !
seg000:023E db    4 ;  
seg000:023F db  46h ; F
seg000:0240 db  46h ; F
seg000:0241 db 0E2h ; ?
seg000:0242 db 0FAh ; ?
seg000:0243 db  1Fh ;  
seg000:0244 db 0CFh ; ?
seg000:0245 ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
seg000:0245 
seg000:0245 loc_245:                      ; CODE XREF: start+D8p
seg000:0245 cmp     ax, [ecx]
seg000:0248 mov     ah, 9Fh
seg000:024A mov     ax, 0B34h
seg000:024D jns     near ptr loc_276+1
seg000:024F cld
seg000:0250 loope   loc_211
seg000:0252 add     [bx], ch
seg000:0254 hlt
seg000:0255 mov     ds:0A012h, al
seg000:0258 push    si
seg000:0259 mov     ds:36D1h, ax
seg000:025C mov     ds:0A010h, al
seg000:025F push    sp
seg000:0260 mov     ds:30D3h, ax
seg000:0263 mov     ds:0A016h, al
seg000:0266 mov     ss:32B1h, ax
seg000:026A mov     ds:0A014h, al
seg000:026D xor     al, 0A3h
seg000:026F stosb
seg000:0270 inc     si
seg000:0271 lea     cx, [bp+di+4414h]
seg000:0275 sti
seg000:0276 
seg000:0276 loc_276:                      ; CODE XREF: seg000:024Dj
seg000:0276 pop     bp
seg000:0278 mov     si, 9D09h
seg000:027B fild    dword ptr [si]
seg000:027D shl     dl, cl
seg000:027F pop     ds
seg000:0280 xchg    ax, di
seg000:0280 ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
seg000:0281 db  68h ; h
seg000:0282 db  35h ; 5
seg000:0283 db    6 ;  
seg000:0284 db  0Ah ;  
seg000:0285 db  4Eh ; N
seg000:0286 db  12h ;  
seg000:0287 db  4Fh ; O
seg000:0288 db  0Ch ;  
seg000:0289 db  4Fh ; O
seg000:028A db    3 ;  
seg000:028B db  45h ; E
seg000:028C db    4 ;  
seg000:028D db  1Ch ;  
seg000:028E db  52h ; R
seg000:028F db  14h ;  
seg000:0290 db  55h ; U
seg000:0291 db  0Eh ;  
seg000:0292 db  1Dh ;  
seg000:0293 db  43h ; C
seg000:0294 db  49h ; I
seg000:0295 db  20h ;  
seg000:0296 db  21h ; !
seg000:0297 db  0Ah ;  
seg000:0298 db    0 ;  
seg000:0299 db  73h ; s
seg000:029A db  75h ; u
seg000:029B db  18h ;  
seg000:029C db  1Bh ;  
seg000:029D db  61h ; a
seg000:029E db  4Ah ; J
seg000:029F db    0 ;  
seg000:029F seg000 ends
seg000:029F 
seg000:029F 
seg000:029F end start
2004-9-10 18:20
0
雪    币: 280
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
seg000:0100 ;
seg000:0100 ; 赏屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?
seg000:0100 ; ?    This file is generated by The Interactive Disassembler (IDA)        ?
seg000:0100 ; ?    Copyright (c) 2004 by DataRescue sa/nv, <ida@datarescue.com>        ?
seg000:0100 ; ?    Licensed to: xxxxxxxxxx, 1 user, std, 01/2004      ?s
seg000:0100 ; 韧屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?
seg000:0100 ;
seg000:0100 ; File Name   : D:\DISPLAY.COM
seg000:0100 ; Format      : MS-DOS COM-file
seg000:0100 ; Base Address: 0h Range: 100h-2A0h Loaded length: 1A0h
seg000:0100
seg000:0100
seg000:0100 ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?
seg000:0100
seg000:0100 ; Segment type: Pure code
seg000:0100 seg000          segment byte public 'CODE' use16
seg000:0100                 assume cs:seg000
seg000:0100                 org 100h
seg000:0100                 assume es:nothing, ss:nothing, ds:seg000, fs:nothing, gs:nothing
seg000:0100
seg000:0100 ; 圹圹圹圹圹圹圹?S U B R O U T I N E 圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹?
seg000:0100
seg000:0100
seg000:0100                 public start
seg000:0100 start           proc near
seg000:0100                 push    ds
seg000:0101                 mov     ax, 0
seg000:0104                 push    ax
seg000:0105                 push    cs
seg000:0106                 pop     ds
seg000:0107                 push    ds
seg000:0108                 pop     es
seg000:0109                 assume es:seg000
seg000:0109                 push    ds
seg000:010A                 mov     ax, 3516h
seg000:010D                 int     21h             ; DOS - 2+ - GET INTERRUPT VECTOR
seg000:010D                                         ; AL = interrupt number
seg000:010D                                         ; Return: ES:BX = value of interrupt vector
seg000:010F                 push    es
seg000:0110                 pop     ds
seg000:0111                 mov     dx, bx
seg000:0113                 mov     ax, 2546h
seg000:0116                 int     21h             ; DOS - SET INTERRUPT VECTOR
seg000:0116                                         ; AL = interrupt number
seg000:0116                                         ; DS:DX = new vector to be used for specified interrupt
seg000:0118                 pop     ds
seg000:0119                 mov     word ptr ds:300h, ss
seg000:011D                 mov     ds:302h, sp
seg000:0121                 mov     ah, 0Fh
seg000:0123                 int     10h             ; - VIDEO - GET CURRENT VIDEO MODE
seg000:0123                                         ; Return: AH = number of columns on screen
seg000:0123                                         ; AL = current video mode
seg000:0123                                         ; BH = current active display page
seg000:0125                 mov     ds:304h, ax
seg000:0128                 mov     ds:306h, bx
seg000:012C                 mov     ax, 0
seg000:012F                 mov     ds, ax
seg000:0131                 mov     dx, 46D0h
seg000:0134                 mov     ax, 3
seg000:0137                 int     10h             ; - VIDEO - SET VIDEO MODE
seg000:0137                                         ; AL = mode
seg000:0139                 mov     ax, 3501h
seg000:013C                 int     21h             ; DOS - 2+ - GET INTERRUPT VECTOR
seg000:013C                                         ; AL = interrupt number
seg000:013C                                         ; Return: ES:BX = value of interrupt vector
seg000:013E                 dec     dx
seg000:013F                 mov     es:[bx], dl
seg000:0142                 mov     ds:4, dx
seg000:0146                 not     dx
seg000:0148                 mov     ds:0Ch, dx
seg000:014C                 push    cs
seg000:014D                 pop     es
seg000:014E                 mov     cx, 40h
seg000:0151                 xor     si, si
seg000:0153                 mov     di, 400h
seg000:0156                 cld
seg000:0157                 repne movsw
seg000:0159                 mov     ah, 6
seg000:015B                 mov     cx, 0
seg000:015E                 mov     dx, 1950h
seg000:0161                 mov     bx, 0
seg000:0164                 int     10h             ; - VIDEO - SCROLL PAGE UP
seg000:0164                                         ; AL = number of lines to scroll window (0 = blank whole window)
seg000:0164                                         ; BH = attributes to be used on blanked lines
seg000:0164                                         ; CH,CL = row,column of upper left corner of window to scroll
seg000:0164                                         ; DH,DL = row,column of lower right corner of window
seg000:0166                 push    cs
seg000:0167                 pop     ds
seg000:0168                 push    cx
seg000:0169                 pop     ss
seg000:016A                 assume ss:seg000
seg000:016A                 mov     sp, 80h
seg000:016D                 mov     ax, ds:410h
seg000:0170                 mov     ds:330h, ax
seg000:0173                 mov     ax, ds:412h
seg000:0176                 mov     ds:332h, ax
seg000:0179                 mov     ax, ds:470h
seg000:017C                 mov     ds:334h, ax
seg000:017F                 mov     ax, ds:472h
seg000:0182                 mov     ds:336h, ax
seg000:0185                 mov     ax, 1DCh
seg000:0188                 mov     ds:410h, ax
seg000:018B                 mov     word ptr ds:412h, ds
seg000:018F                 mov     word ptr ds:45Ah, ds
seg000:0193                 mov     word ptr ds:472h, ds
seg000:0197                 mov     ax, 204h
seg000:019A                 mov     cx, 228h
seg000:019D                 mov     ds:458h, ax
seg000:01A0                 mov     ds:470h, cx
seg000:01A4                 xor     ax, ax
seg000:01A6                 mov     cx, 18h
seg000:01A9                 mov     bx, 1A0h
seg000:01AC
seg000:01AC loc_1AC:                                ; CODE XREF: start+B0j
seg000:01AC                 add     ax, [bx]
seg000:01AE                 inc     bx
seg000:01AF                 inc     bx
seg000:01B0                 loop    loc_1AC
seg000:01B2                 mov     ds:340h, ax
seg000:01B5                 mov     bx, 47Eh
seg000:01B8                 mov     cx, 40h
seg000:01BB
seg000:01BB loc_1BB:                                ; CODE XREF: start+BFj
seg000:01BB                 push    word ptr [bx]
seg000:01BD                 dec     bx
seg000:01BE                 dec     bx
seg000:01BF                 loop    loc_1BB
seg000:01C1                 mov     ss, word ptr ds:300h
seg000:01C5                 assume ss:nothing
seg000:01C5                 mov     sp, ds:302h
seg000:01C9                 mov     ax, 7654h
seg000:01CC                 not     ax
seg000:01CE                 mov     bx, ax
seg000:01D0                 add     ax, ax
seg000:01D2                 into
seg000:01D3                 jz      short locret_1DB
seg000:01D5                 add     bx, bx
seg000:01D7                 into
seg000:01D8                 call    loc_245
seg000:01DB
seg000:01DB locret_1DB:                             ; CODE XREF: start+D3j
seg000:01DB                 retn
seg000:01DB start           endp ; sp = -6
seg000:01DB
seg000:01DB ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:01DC                 db  83h ; ?
seg000:01DD                 db 0C4h ; ?
seg000:01DE                 db    6
seg000:01DF                 db 0B8h ; ?
seg000:01E0                 db  63h ; c
seg000:01E1                 db  0Fh
seg000:01E2                 db  33h ; 3
seg000:01E3                 db    6
seg000:01E4                 db  40h ; @
seg000:01E5                 db    3
seg000:01E6                 db 0BEh ; ?
seg000:01E7                 db  45h ; E
seg000:01E8                 db    2
seg000:01E9                 db 0B9h ; ?
seg000:01EA                 db  2Dh ; -
seg000:01EB                 db    0
seg000:01EC                 db  31h ; 1
seg000:01ED                 db    4
seg000:01EE                 db  8Bh ; ?
seg000:01EF                 db    4
seg000:01F0                 db  46h ; F
seg000:01F1                 db  46h ; F
seg000:01F2                 db 0E2h ; ?
seg000:01F3                 db 0F8h ; ?
seg000:01F4                 db 0B8h ; ?
seg000:01F5                 db    3
seg000:01F6                 db    0
seg000:01F7                 db 0CDh ; ?
seg000:01F8                 db  10h
seg000:01F9                 db 0A1h ; ?
seg000:01FA                 db    4
seg000:01FB                 db    3
seg000:01FC                 db  8Bh ; ?
seg000:01FD                 db  1Eh
seg000:01FE                 db    6
seg000:01FF                 db    3
seg000:0200                 db 0CDh ; ?
seg000:0201                 db  10h
seg000:0202                 db 0EBh ; ?
seg000:0203                 db  41h ; A
seg000:0204                 db    6
seg000:0205                 db  53h ; S
seg000:0206                 db  31h ; 1
seg000:0207                 db 0DBh ; ?
seg000:0208                 db  8Eh ; ?
seg000:0209                 db 0C3h ; ?
seg000:020A                 db 0BBh ; ?
seg000:020B                 db 0CFh ; ?
seg000:020C                 db  46h ; F
seg000:020D                 db  26h ; &
seg000:020E                 db  39h ; 9
seg000:020F                 db  1Eh
seg000:0210                 db    4
seg000:0211 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:0211
seg000:0211 loc_211:                                ; CODE XREF: seg000:0250j
seg000:0211                 add     [si+11h], dh
seg000:0214                 push    ds
seg000:0215                 push    cs
seg000:0216                 pop     ds
seg000:0217                 mov     bx, 100h
seg000:021A                 mov     cx, 82h
seg000:021D
seg000:021D loc_21D:                                ; CODE XREF: seg000:0221j
seg000:021D                 mov     [bx], ax
seg000:021F                 inc     bx
seg000:0220                 inc     bx
seg000:0221                 loop    loc_21D
seg000:0223                 pop     ds
seg000:0224                 nop
seg000:0225                 pop     bx
seg000:0226                 pop     es
seg000:0227                 assume es:nothing
seg000:0227                 iret
seg000:0227 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:0228                 db  1Eh
seg000:0229                 db 0B8h ; ?
seg000:022A                 db    0
seg000:022B                 db    0
seg000:022C                 db  8Eh ; ?
seg000:022D                 db 0D8h ; ?
seg000:022E                 db 0A1h ; ?
seg000:022F                 db    4
seg000:0230                 db    0
seg000:0231                 db    3
seg000:0232                 db    6
seg000:0233                 db  0Ch
seg000:0234                 db    0
seg000:0235                 db  0Eh
seg000:0236                 db  1Fh
seg000:0237                 db 0BEh ; ?
seg000:0238                 db  45h ; E
seg000:0239                 db    2
seg000:023A                 db 0B9h ; ?
seg000:023B                 db  30h ; 0
seg000:023C                 db    0
seg000:023D                 db  21h ; !
seg000:023E                 db    4
seg000:023F                 db  46h ; F
seg000:0240                 db  46h ; F
seg000:0241                 db 0E2h ; ?
seg000:0242                 db 0FAh ; ?
seg000:0243                 db  1Fh
seg000:0244                 db 0CFh ; ?
seg000:0245 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:0245
seg000:0245 loc_245:                                ; CODE XREF: start+D8p
seg000:0245                 cmp     ax, [ecx]
seg000:0248                 mov     ah, 9Fh
seg000:024A                 mov     ax, 0B34h
seg000:024D                 jns     short near ptr loc_276+1
seg000:024F                 cld
seg000:0250                 loope   loc_211
seg000:0252                 add     [bx], ch
seg000:0254                 hlt
seg000:0255                 mov     ds:0A012h, al
seg000:0258                 push    si
seg000:0259                 mov     ds:36D1h, ax
seg000:025C                 mov     ds:0A010h, al
seg000:025F                 push    sp
seg000:0260                 mov     ds:30D3h, ax
seg000:0263                 mov     ds:0A016h, al
seg000:0266                 mov     ss:32B1h, ax
seg000:026A                 mov     ds:0A014h, al
seg000:026D                 xor     al, 0A3h
seg000:026F                 stosb
seg000:0270                 inc     si
seg000:0271                 lea     cx, [bp+di+4414h]
seg000:0275                 sti
seg000:0276
seg000:0276 loc_276:                                ; CODE XREF: seg000:024Dj
seg000:0276                 pop     bp
seg000:0278                 mov     si, 9D09h
seg000:027B                 fild    dword ptr [si]
seg000:027D                 shl     dl, cl
seg000:027F                 pop     ds
seg000:0280                 xchg    ax, di
seg000:0281                 push    635h
seg000:0284                 or      cl, [bp+12h]
seg000:0287                 dec     di
seg000:0288                 or      al, 4Fh
seg000:028A                 add     ax, [di+4]
seg000:028D                 sbb     al, 52h
seg000:028F                 adc     al, 55h
seg000:0291                 push    cs
seg000:0292                 sbb     ax, 4943h
seg000:0295                 and     [bx+di], ah
seg000:0297                 or      al, [bx+si]
seg000:0299                 jnb     short near ptr 310h
seg000:029B                 sbb     [bp+di], bl
seg000:029D                 popa
seg000:029E                 dec     dx
seg000:029E ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:029F                 db    0
seg000:029F seg000          ends
seg000:029F
seg000:029F
seg000:029F                 end start
2004-9-10 20:13
0
雪    币: 280
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我想,是不是就是说,那个
Thank you very much !
                        yuan
是一段密文,解出来显示的。没意思。
2004-9-10 20:17
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
8
我认为不是
2004-9-10 21:54
0
雪    币: 280
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
显示的那段文字和显示的代码,INT21的9号功能调用是以密文方式存在在程序中的,显示代码从245开始。那段文字在280。程序用了自身代码的校验和还有中断向量表来还原那段程序和密文。没有什么特殊算法。就是一些简单的校验和还有异或操作。
2004-9-10 22:20
0
雪    币: 280
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这样看舒服些
seg000:0100 ; File Name   : D:\DISPLAY.COM
seg000:0100 ; Format      : MS-DOS COM-file
seg000:0100 ; Base Address: 0h Range: 100h-2A0h Loaded length: 1A0h
seg000:0100
seg000:0100
seg000:0100 ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?
seg000:0100
seg000:0100 ; Segment type: Pure code
seg000:0100 seg000          segment byte public 'CODE' use16
seg000:0100                 assume cs:seg000
seg000:0100                 org 100h
seg000:0100                 assume es:nothing, ss:nothing, ds:seg000, fs:nothing, gs:nothing
seg000:0100
seg000:0100 ; 圹圹圹圹圹圹圹?S U B R O U T I N E 圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹?
seg000:0100
seg000:0100
seg000:0100                 public start
seg000:0100 start           proc near
seg000:0100                 push    ds
seg000:0101                 mov     ax, 0
seg000:0104                 push    ax
seg000:0105                 push    cs
seg000:0106                 pop     ds
seg000:0107                 push    ds
seg000:0108                 pop     es
seg000:0109                 assume es:seg000
seg000:0109                 push    ds
seg000:010A                 mov     ax, 3516h
seg000:010D                 int     21h             ; DOS - 2+ - GET INTERRUPT VECTOR
seg000:010D                                         ; AL = interrupt number
seg000:010D                                         ; Return: ES:BX = value of interrupt vector
seg000:010F                 push    es
seg000:0110                 pop     ds
seg000:0111                 mov     dx, bx
seg000:0113                 mov     ax, 2546h
seg000:0116                 int     21h             ; DOS - SET INTERRUPT VECTOR
seg000:0116                                         ; AL = interrupt number
seg000:0116                                         ; DS:DX = new vector to be used for specified interrupt
seg000:0118                 pop     ds
seg000:0119                 mov     word ptr ds:300h, ss
seg000:011D                 mov     ds:302h, sp
seg000:0121                 mov     ah, 0Fh
seg000:0123                 int     10h             ; - VIDEO - GET CURRENT VIDEO MODE
seg000:0123                                         ; Return: AH = number of columns on screen
seg000:0123                                         ; AL = current video mode
seg000:0123                                         ; BH = current active display page
seg000:0125                 mov     ds:304h, ax
seg000:0128                 mov     ds:306h, bx
seg000:012C                 mov     ax, 0
seg000:012F                 mov     ds, ax
seg000:0131                 mov     dx, 46D0h
seg000:0134                 mov     ax, 3
seg000:0137                 int     10h             ; - VIDEO - SET VIDEO MODE
seg000:0137                                         ; AL = mode
seg000:0139                 mov     ax, 3501h
seg000:013C                 int     21h             ; DOS - 2+ - GET INTERRUPT VECTOR
seg000:013C                                         ; AL = interrupt number
seg000:013C                                         ; Return: ES:BX = value of interrupt vector
seg000:013E                 dec     dx
seg000:013F                 mov     es:[bx], dl
seg000:0142                 mov     ds:4, dx
seg000:0146                 not     dx
seg000:0148                 mov     ds:0Ch, dx
seg000:014C                 push    cs
seg000:014D                 pop     es
seg000:014E                 mov     cx, 40h
seg000:0151                 xor     si, si
seg000:0153                 mov     di, 400h
seg000:0156                 cld
seg000:0157                 repne movsw
seg000:0159                 mov     ah, 6
seg000:015B                 mov     cx, 0
seg000:015E                 mov     dx, 1950h
seg000:0161                 mov     bx, 0
seg000:0164                 int     10h             ; - VIDEO - SCROLL PAGE UP
seg000:0164                                         ; AL = number of lines to scroll window (0 = blank whole window)
seg000:0164                                         ; BH = attributes to be used on blanked lines
seg000:0164                                         ; CH,CL = row,column of upper left corner of window to scroll
seg000:0164                                         ; DH,DL = row,column of lower right corner of window
seg000:0166                 push    cs
seg000:0167                 pop     ds
seg000:0168                 push    cx
seg000:0169                 pop     ss
seg000:016A                 assume ss:seg000
seg000:016A                 mov     sp, 80h
seg000:016D                 mov     ax, ds:410h
seg000:0170                 mov     ds:330h, ax
seg000:0173                 mov     ax, ds:412h
seg000:0176                 mov     ds:332h, ax
seg000:0179                 mov     ax, ds:470h
seg000:017C                 mov     ds:334h, ax
seg000:017F                 mov     ax, ds:472h
seg000:0182                 mov     ds:336h, ax
seg000:0185                 mov     ax, 1DCh
seg000:0188                 mov     ds:410h, ax
seg000:018B                 mov     word ptr ds:412h, ds
seg000:018F                 mov     word ptr ds:45Ah, ds
seg000:0193                 mov     word ptr ds:472h, ds
seg000:0197                 mov     ax, 204h
seg000:019A                 mov     cx, 228h
seg000:019D                 mov     ds:458h, ax
seg000:01A0                 mov     ds:470h, cx
seg000:01A4                 xor     ax, ax
seg000:01A6                 mov     cx, 18h
seg000:01A9                 mov     bx, 1A0h
seg000:01AC
seg000:01AC loc_1AC:                                ; CODE XREF: start+B0j
seg000:01AC                 add     ax, [bx]
seg000:01AE                 inc     bx
seg000:01AF                 inc     bx
seg000:01B0                 loop    loc_1AC
seg000:01B2                 mov     ds:340h, ax
seg000:01B5                 mov     bx, 47Eh
seg000:01B8                 mov     cx, 40h
seg000:01BB
seg000:01BB loc_1BB:                                ; CODE XREF: start+BFj
seg000:01BB                 push    word ptr [bx]
seg000:01BD                 dec     bx
seg000:01BE                 dec     bx
seg000:01BF                 loop    loc_1BB
seg000:01C1                 mov     ss, word ptr ds:300h
seg000:01C5                 assume ss:nothing
seg000:01C5                 mov     sp, ds:302h
seg000:01C9                 mov     ax, 7654h
seg000:01CC                 not     ax
seg000:01CE                 mov     bx, ax
seg000:01D0                 add     ax, ax
seg000:01D2                 into
seg000:01D3                 jz      short locret_1DB
seg000:01D5                 add     bx, bx
seg000:01D7                 into
seg000:01D8                 call    near ptr byte_245
seg000:01DB
seg000:01DB locret_1DB:                             ; CODE XREF: start+D3j
seg000:01DB                 retn
seg000:01DB start           endp ; sp = -6
seg000:01DB
seg000:01DC ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:01DC                 add     sp, 6
seg000:01DF                 mov     ax, 0F63h
seg000:01E2                 xor     ax, ds:340h
seg000:01E6                 mov     si, 245h
seg000:01E9                 mov     cx, 2Dh
seg000:01EC
seg000:01EC loc_1EC:                                ; CODE XREF: seg000:01F2j
seg000:01EC                 xor     [si], ax
seg000:01EE                 mov     ax, [si]
seg000:01F0                 inc     si
seg000:01F1                 inc     si
seg000:01F2                 loop    loc_1EC
seg000:01F4                 mov     ax, 3
seg000:01F7                 int     10h             ; - VIDEO - SET VIDEO MODE
seg000:01F7                                         ; AL = mode
seg000:01F9                 mov     ax, ds:304h
seg000:01FC                 mov     bx, ds:306h
seg000:0200                 int     10h             ; - VIDEO -
seg000:0202                 jmp     short near ptr byte_245
seg000:0202 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:0204 byte_204        db 6, 53h, 31h, 0DBh, 8Eh, 0C3h, 0BBh, 0CFh, 46h, 26h
seg000:0204                 db 39h, 1Eh, 4, 0, 74h, 11h, 1Eh, 0Eh, 1Fh, 0BBh, 0, 1
seg000:0204                 db 0B9h, 82h, 0, 89h, 7, 2 dup(43h), 0E2h, 0FAh, 1Fh, 90h
seg000:0204                 db 5Bh, 7, 0CFh, 1Eh, 0B8h, 2 dup(0), 8Eh, 0D8h, 0A1h
seg000:0204                 db 4, 0, 3, 6, 0Ch, 0, 0Eh, 1Fh, 0BEh, 45h, 2, 0B9h, 30h
seg000:0204                 db 0, 21h, 4, 2 dup(46h), 0E2h, 0FAh, 1Fh, 0CFh
seg000:0245 byte_245        db 67h, 3Bh, 1, 0B4h, 9Fh, 0B8h, 34h, 0Bh, 79h, 28h, 0FCh
seg000:0245                                         ; CODE XREF: start+D8p
seg000:0245                                         ; seg000:0202j
seg000:0245                 db 0E1h, 0BFh, 0, 2Fh, 0F4h, 0A2h, 12h, 0A0h, 56h, 0A3h
seg000:0245                 db 0D1h, 36h, 0A2h, 10h, 0A0h, 54h, 0A3h, 0D3h, 30h, 0A2h
seg000:0245                 db 16h, 0A0h, 36h, 0A3h, 0B1h, 32h, 0A2h, 14h, 0A0h, 34h
seg000:0245                 db 0A3h, 0AAh, 46h, 8Dh, 8Bh, 14h, 44h, 0FBh, 8Fh, 0C5h
seg000:0245                 db 0BEh, 9, 9Dh, 0DBh, 4, 0D2h, 0E2h, 1Fh, 97h, 68h, 35h
seg000:0245                 db 6, 0Ah, 4Eh, 12h, 4Fh, 0Ch, 4Fh, 3, 45h, 4, 1Ch, 52h
seg000:0245                 db 14h, 55h, 0Eh, 1Dh, 43h, 49h, 20h, 21h, 0Ah, 0, 73h
seg000:0245                 db 75h, 18h, 1Bh, 61h, 4Ah, 0
seg000:0245 seg000          ends
seg000:0245
seg000:0245
seg000:0245                 end start
2004-9-10 22:45
0
雪    币: 280
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
执行到还原完毕的。
seg000:0245 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:0245
seg000:0245 loc_245:                                ; CODE XREF: start+D8p
seg000:0245                                         ; seg000:0202j
seg000:0245                 push    ds
seg000:0246                 push    cs
seg000:0247                 pop     ds
seg000:0248                 mov     dx, 280h
seg000:024B                 mov     ah, 9
seg000:024D                 int     21h             ; DOS - PRINT STRING
seg000:024D                                         ; DS:DX -> string terminated by "$"
seg000:024F                 xor     ax, ax
seg000:0251                 mov     es, ax
seg000:0253                 assume es:seg000
seg000:0253                 mov     ax, ds:334h
seg000:0256                 mov     es:70h, ax
seg000:025A                 mov     ax, ds:336h
seg000:025D                 mov     es:72h, ax
seg000:0261                 mov     ax, ds:330h
seg000:0264                 mov     es:10h, ax
seg000:0268                 mov     ax, ds:332h
seg000:026B                 mov     es:12h, ax
seg000:026F                 mov     ax, 3546h
seg000:0272                 int     21h             ; DOS - 2+ - GET INTERRUPT VECTOR
seg000:0272                                         ; AL = interrupt number
seg000:0272                                         ; Return: ES:BX = value of interrupt vector
seg000:0274                 mov     dx, bx
seg000:0276                 push    es
seg000:0277                 pop     ds
seg000:0278                 mov     ax, 2516h
seg000:027B                 int     21h             ; DOS - SET INTERRUPT VECTOR
seg000:027B                                         ; AL = interrupt number
seg000:027B                                         ; DS:DX = new vector to be used for specified interrupt
seg000:027D                 pop     ds
seg000:027E                 retn
seg000:027E ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:027F                 db    0
seg000:0280 aThankYouVeryMu db 'Thank you very much !',0
seg000:0296                 db    0
seg000:0297                 db  0Ah
seg000:0298                 db    0
seg000:0299 aYuan           db 'yuan',0
seg000:029E                 db  24h ; $
seg000:029F                 db    0
seg000:029F seg000          ends
seg000:029F
seg000:029F
seg000:029F                 end start
2004-9-10 22:55
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
似曾相识  能不能指点一下破解DOS程序中如何跳过软驱的检查,以及如何检查是否有key file,谢谢!
2004-9-20 08:45
0
雪    币: 209
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
最初由 似曾相识 发布
执行到还原完毕的。
seg000:0245 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:0245
seg000:0245 loc_245: ; CODE XREF: start+D8p
seg000:0245 ; seg000:0202j
........


不错,你找到地方了,只不过,没有找出解密键,和解密算法!!
2004-9-20 23:46
0
雪    币: 280
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 y129104 发布




不错,你找到地方了,只不过,没有找出解密键,和解密算法!!


需要吗?你自己看吧,一些简单的位运算,自校验。我觉得已经很明白了。
2004-9-21 12:00
0
雪    币: 209
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我当然知道,

你看清了的话,那也就不要了吧!
2004-9-21 12:21
0
游客
登录 | 注册 方可回帖
返回
//