找回密码
 注册
搜索
热搜: 回贴

用驻留程序拦你要改的代码前一个中断,驻留程序,其他平台

2010-1-30 18:31| 发布者: admin| 查看: 189| 评论: 0|原作者: 江月


用驻留程序拦你要改的代码前一个中断,驻留程序,其他平台
2008年06月23日 星期一 下午 11:27
如何编制驻留程序



yaoyuan[CCG]



在破解过程中,我们经常遇到这样的情况,我们要向想要破解的程序传递参数或数据(在磁盘解密中常有此情况),我们想要当程序作中断调用时进入我们自已的服务程序,这就将使用到驻留程序,下面我们以破解Nosa的时间过期限制为例,

这个程序是一个非常好的统计软件,在2000年8月5日后会到期而无法使用,在跟踪过程中我们发现它使用了INT 21的2A号子功能取系统时间,在程序中取了很多次,改来有些繁琐,做程序如下:当程序取系统时间时就会为我们的驻留程序欺骗。







.model small

.386

.code

org 100h

Start:

jmp begin

old21 dw 0

dw 0

my21:

pushf

cmp ax,0ff00h ;驻留程式功能一,当子功能号为ff00时送ax为0返回

jnz nomy0 ;作为驻留与否的标志

mov ax,0

popf

retf 2

nomy0:

cmp ax,0ff01h ;驻留程式功能二,当子功能号为ff01恢复中断向量表

jnz nomy1

push es

push 0

pop es

mov eax,dword ptr cs:old21

cli

mov es:[84h],eax

pop es

mov bx,cs

xor ax,ax

popf

retf 2

nomy1:

cmp ah,2ah ;驻留程式功能三,当子功能号为2a时,给出破解程序允许的时间

jnz notime

mov al,4

mov cx,7d0h ;CX=7d0h 代表2000年

mov dx,601h ;DX=601h 代表6月1日

popf

clc

retf 2

notime:

popf

jmp dword ptr cs:old21

begin:

mov ax,0ff00h ;检测程式是否已经驻留

int 21h

or ax,ax

jnz notsr

cmp byte ptr ds:[80h],0 ;是否从内存撤出,为1则call remove

jz existtsr

call remove

existtsr:

lea dx,existmsg

call disp

exit:

mov ah,4ch

int 21h

notsr:

push 0

pop es

mov eax,es:[84h]

mov dword ptr cs:old21,eax ;取21中断向量保存于变量old21

mov ax,cs

mov cl,10h ;当前CS送EAX高8位

shl eax,cl

mov ax,offset my21 ;当前IP送EAX低8位,CS:IP为新的INT21送回中断向量表

cli

mov es:[84h],eax

sti ;置新的int 21中断向量

push cs

pop es

lea dx,okmsg

call disp

lea dx,begin

shr dx,4

add dx,11h

mov ax,3100h

int 21h ;程序驻留

disp:



push ds

push cs

pop ds

mov ah,9

int 21h

pop ds

ret

remove:

mov si,81h

repget:

lodsb

cmp al,20h

jz repget

cmp al,"/"

jz getnext

ret

getnext:

lodsb

or al,20h

cmp al,"r"

jz sure

ret

sure:

mov ax,0ff01h

int 21h ;调用ff01功能恢复旧的int 21中断向量

push bx

pop es

lea ax,exit

mov es:[0ah],ax

mov ax,cs

mov es:[0ch],ax

mov es:[16h],ax

mov ah,50h

int 21h

lea dx,removemsg

call disp

jmp exit

okmsg db "OK !",0dh,0ah,24h

existmsg db "Program already exist in memory !",0dh,0ah,24h

removemsg db "Program remove OK from in memory !",0dh,0ah,24h

end start


最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 11:37 , Processed in 0.154164 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部