首页
社区
课程
招聘
雨过天晴自我注册
发表于: 2006-10-23 20:40 24404

雨过天晴自我注册

2006-10-23 20:40
24404

雨过天晴电脑保护系统的注册判断过程非常直接,只要硬盘上有正版注册标志它就认为是正版。但是雨过天晴电脑保护系统可以分为两个部分:windows环境下的主体程序EAZTRAY.exe和非windows环境的辅助程序(计算机启动时按HOME键可进入),而每一个进度还原的操作都会用到这个辅助程序,所以在windows下爆破主体程序或者其他诸如补丁的方法没有任何意义。让试用版变成注册版,我们要做的只能是把已注册标志写入硬盘。自己写程序完成这个过程有点麻烦(在DOS下方便一点),让雨过天晴主体程序自我完成注册标志的写入才是最简单和快捷的。

   这里拿060612专业版本为例。雨过天晴软件在进入系统的时候自动运行,可以先用任务管理器结束其进程,然后OD加载分析看看其正式版的标志是什么。至于判断的位置,很容易就能找见,最简单的方法就是搜索字串"试用期限"然后向前定位,或者通过API函数WinSysTime2ShieldSysTime定位。这里说两个关键的地方:

1.内存地址0040B8C6处,cmp byte ptr[esi+6CD],2
   [esi+6CD]中存放的就是注册标志,一个byte,1为试用版,2为正式版,3就不用管了。在这里中断后要记下[esi+6CD]所指的位置,每台机器上都是不同的。
2.内存地址0040B93C处,jle 0040B95E
   注意后面不远处的call 0043ED36,这个call中有写入注册信息的部分,这意味着0040B93Ch处绝对不能跳。

   接下来很简单了,要做的就是在调用call 0043ED36前把注册标志改为2;当然这个过程必须是在程序执行到0040B93C处才能做。下断0040B8C6和0040B93C,
在0040B93C中断后,修改[esi+6CD]中的值为2,然后设法不让跳,过了call 0043ED36后注册信息就被写入了。修改日期到7天以后,重新启动HOME键进去试试,没有任何提示,正版了吧?
  
   如果要写个类似loader的东西作为注册工具,可以如下:

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;雨过天晴自我注册
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat, stdcall
option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 数据
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include        windows.inc
include        user32.inc
include        kernel32.inc
includelib     user32.lib
includelib     kernel32.lib
includelib     dic32u.lib
include        macro.asm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
BREAK_POINT1   equ 0040B8C6h ;第一个断点
BREAK_POINT2   equ 0040B93Ch ;第二个断点

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.const
dbPatched1     db 02h
dbPatched2     db 90h,90h
dbInt3         db 0cch
dbOldByte      db 80h
szExecFilename db 'EAZTRAY.exe',0

.data?
align           dword
PATCH_POSITION  dd ?
dwTemp          dd ?
stCT            CONTEXT <?>
stDE            DEBUG_EVENT <?>
stStartUp       STARTUPINFO <>
stProcInfo      PROCESS_INFORMATION <>
stProcess       PROCESSENTRY32<>
hSnapShot       dd ?

.code
Start:
    invoke RtlZeroMemory,addr stProcess,sizeof stProcess
    mov stProcess.dwSize,sizeof stProcess
    invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
    mov hSnapShot,eax
    invoke Process32First,hSnapShot,addr stProcess
    .while eax
        invoke CompareString,LOCALE_USER_DEFAULT,NORM_IGNORECASE,addr szExecFilename,\
sizeof szExecFilename,addr stProcess.szExeFile,sizeof szExecFilename
        .if eax==2
            invoke OpenProcess,PROCESS_TERMINATE,FALSE,stProcess.th32ProcessID
            .if eax
                mov ebx,eax
                invoke TerminateProcess,ebx,-1
                invoke  CloseHandle,ebx
            .endif
            .break
        .endif
        invoke Process32Next,hSnapShot,addr stProcess
    .endw
;********************************************************************
; 创建进程
;********************************************************************
    invoke GetStartupInfo,addr stStartUp
    invoke CreateProcess,offset szExecFilename,NULL,NULL,NULL,NULL,\
        DEBUG_PROCESS or DEBUG_ONLY_THIS_PROCESS,NULL,NULL,\
        offset stStartUp,offset stProcInfo
    .if    !eax
        invoke MessageBox,NULL,CTEXT("无法装载目标文件,",0dh,"复制本程序到雨果天晴安装目录下执行!"),NULL,MB_OK or MB_ICONSTOP
        invoke ExitProcess,NULL
    .endif
;********************************************************************
; 调试进程
;********************************************************************
    .while TRUE
        invoke WaitForDebugEvent,addr stDE,INFINITE
        .break .if stDE.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT
;********************************************************************
; 如果进程开始,则将入口地址处的代码改为 int 3 断点中断
;********************************************************************
        .if stDE.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT
            invoke WriteProcessMemory,stProcInfo.hProcess,BREAK_POINT1,addr dbInt3,1,addr dwTemp
            invoke WriteProcessMemory,stProcInfo.hProcess,BREAK_POINT2,addr dbInt3,1,addr dwTemp
;********************************************************************
; 如果发生断点中断,则恢复断点处代码并进行内存补丁
;********************************************************************
        .elseif stDE.dwDebugEventCode == EXCEPTION_DEBUG_EVENT
            .if stDE.u.Exception.pExceptionRecord.ExceptionCode == EXCEPTION_BREAKPOINT
                mov stCT.ContextFlags,CONTEXT_FULL
                invoke GetThreadContext,stProcInfo.hThread,addr stCT
                .if stCT.regEip == BREAK_POINT1 + 1
                    dec stCT.regEip
                    invoke WriteProcessMemory,stProcInfo.hProcess,BREAK_POINT1,addr dbOldByte,1,addr dwTemp
                    mov eax,stCT.regEsi
                    add eax,6CDh
                    mov PATCH_POSITION,eax
                    invoke SetThreadContext,stProcInfo.hThread,addr stCT
                .elseif stCT.regEip == BREAK_POINT2 + 1
                    dec stCT.regEip
                    invoke WriteProcessMemory,stProcInfo.hProcess,BREAK_POINT2,addr dbPatched2,sizeof dbPatched2,addr dwTemp
                    invoke WriteProcessMemory,stProcInfo.hProcess,PATCH_POSITION,addr dbPatched1,sizeof dbPatched1,addr dwTemp
                    invoke SetThreadContext,stProcInfo.hThread,addr stCT
                .endif
            .endif
        .endif
        invoke ContinueDebugEvent,stDE.dwProcessId,stDE.dwThreadId,DBG_CONTINUE
    .endw
    invoke CloseHandle,stProcInfo.hProcess
    invoke CloseHandle,stProcInfo.hThread
    invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end Start

好了,想要研究该软件的穷光蛋们不妨试试。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (54)
雪    币: 1022
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
支持,直接贴源代码!!!!
2006-10-23 22:39
0
雪    币: 110
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这样的贴是值得顶的,支持
2006-10-24 08:34
0
雪    币: 14950
活跃值: (4733)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
学习.原来方法可以这么简单.想复杂了.
2006-10-24 08:38
0
雪    币: 405
活跃值: (10)
能力值: ( LV9,RANK:1130 )
在线值:
发帖
回帖
粉丝
5
我也来试试。看到楼主的汇编注册。头晕,还是用高级语言好
2006-10-24 10:49
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
下蒌??一下看看,著著分享
2006-10-24 14:23
0
雪    币: 261
活跃值: (162)
能力值: ( LV13,RANK:320 )
在线值:
发帖
回帖
粉丝
7
原本如此,不过对新版本即9月8号版不能完成注册。你启机时按HOME键进去看看,尝试恢复进度,如果没有出现注册对话框就算是注册了。
2006-10-24 14:46
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
0908的好象网站只有试用版……
2006-10-24 14:51
0
雪    币: 560
活跃值: (359)
能力值: ( LV13,RANK:1370 )
在线值:
发帖
回帖
粉丝
9
最初由 qfejj 发布
1.内存地址0040B8C6处,cmp byte ptr[esi+6CD],2
........


其中的部分代码非常有用!
2006-10-24 15:27
0
雪    币: 14950
活跃值: (4733)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
10
有了这分析结果对付060908就太容易了.多谢分享~
2006-10-24 20:41
0
雪    币: 290
活跃值: (645)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
依据lz的分析搞定1.0.5.0.20061023

未搞定,
2006-10-25 10:09
0
雪    币: 261
活跃值: (162)
能力值: ( LV13,RANK:320 )
在线值:
发帖
回帖
粉丝
12
最初由 jmzz 发布
依据lz的分析搞定1.0.5.0.20061023


把日期往后调,恢复进度试试。windows下主程序EAZTRAY.exe没有注册提示不表示已经完全注册了。
2006-10-25 10:50
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
13
最初由 寒秋 发布
这是安悦科技主页上的材料:
最新版本 V1.0.5.1.20060908
人气指数 80433
【关于版本号】 由于公安部销售许可证上面注明的产品名称为"雨过天晴电脑保护系统V1.0",所以,本产品的版本号就固定为V1.0,这个版本号是不可以更改的。 为了区分每次发布的新版本,我们在后面注明真实的版本号例如5.0 和版本发布日期如20060611。

........


原来是电脑保护系统。我可不愿意消耗大量的资源来保护系统。

LZ 的方法值得学习。
2006-10-25 11:12
0
雪    币: 290
活跃值: (645)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 寒秋 发布
这是安悦科技主页上的材料:
最新版本 V1.0.5.1.20060908
人气指数 80433
【关于版本号】 由于公安部销售许可证上面注明的产品名称为"雨过天晴电脑保护系统V1.0",所以,本产品的版本号就固定为V1.0,这个版本号是不可以更改的。 为了区分每次发布的新版本,我们在后面注明真实的版本号例如5.0 和版本发布日期如20060611。

........

企业版本
主要有个网络管理程序
2006-10-25 11:31
0
雪    币: 290
活跃值: (645)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
革命尚未成功。
2006-10-25 12:03
0
雪    币: 261
活跃值: (162)
能力值: ( LV13,RANK:320 )
在线值:
发帖
回帖
粉丝
16
最初由 寒秋 发布
最新版的个人专业版060908,依葫芦画瓢,破解成功。


如果仅仅依葫芦画瓢,应该是没有破解成功;060908版做过处理了。不妨用Winhex打开硬盘看看,会给你带来惊喜。
2006-10-25 13:19
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
最初由 qfejj 发布
如果仅仅依葫芦画瓢,应该是没有破解成功;060908版做过处理了。不妨用Winhex打开硬盘看看,会给你带来惊喜。

做过什么处理?能具体说说吗?谢谢!
2006-10-25 14:31
0
雪    币: 716
活跃值: (162)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
18
qfejj强啊,我连个loader的编不出来,
你的代码借用了,谢谢,
2006-10-25 18:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
引用: 最初由 qfejj 发布
如果仅仅依葫芦画瓢,应该是没有破解成功;060908版做过处理了。不妨用Winhex打开硬盘看看,会给你带来惊喜。

做过什么处理?能具体说说吗?谢谢!

试试重新启动 按Home键 然后创建个新的进度 看看
2006-10-26 17:57
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
好是很好呀!可是俺是菜鸟呀!
2006-10-27 07:59
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
顶一个。请楼主多谈一点0908版做了什么处理了?
2006-10-27 22:03
0
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
22
电脑保护系统功能不怎么好
不过LZ的破解方法是值得学习的
2006-10-28 11:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
060908版始终无法破解?哪位前辈能否指点一二
2006-10-31 22:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
最初由 LOCKLOSE 发布
有了这分析结果对付060908就太容易了.多谢分享~

的确是啊,柳暗花明,当时想的他复杂了
2006-11-1 00:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
用这个方法,在按home键进入恢复,还是要输注册码。Why
2006-11-1 10:41
0
游客
登录 | 注册 方可回帖
返回
//