Dr. Hardware 2002破文
软件名称:Dr. Hardware 2002
发布公司:Gebhard Software
软件分类:系统工具
发布日期:2002.07.19
文件大小:2258K
版本:Build 3.5.0e
语言:english
软件大小:
软件简介:好用的,界面友好的系统诊测软件,让你对自己的电脑配置一目了然:硬件系统,各种设备,操作系统,串口与并口信息,鼠标,游戏杆,驱动器,主板,多媒体配置, CMOS,以及内存的详细信息一览无余。PC Test & Benchmark Program for Windows 2000/NT4/XP/95/98/ME
下载网址:http://www.dr-hardware.com
注册金额:分不同的版本,最低$19,最高$49(好贵啊)
pj人:胖大兵[DFCG]
使用工具:侦测壳类:fi2.5,PEid0.8中文版
反编译:w32dasm黄金版中文版
动态调试:Ollydbg中文版v1.04
特殊工具:笔和纸 :-)
过程:首先安装软件,安装程序是一个文件,正常安装。
执行安装程序,程序很好用,对计算机的详细的情况都有很详细的说明!就是不支持打印!好象是!打开注册的信息,注册的部分有两个过程。一个是注册(register),一个是解锁(unlock)。前一个是各种注册的途径,没有实际的用途。后一个才是我们要用的,注册的窗体有两个部分,难道注册码是以XXXXXX-XXXXXXX的形式的吗?前填上一个简单的数字,9898989898-98989898,点注册以后,报错!点确定以后,前面的98989898没有了,后面的一段还在!没有改变。重新用不同的数字和字符串填写,总是后面的不变!分析以后,后面的很有可能是注册的名字!所以不变!主要是前面的数字是注册码!
每一段的数字的限制长度为14位。
程序在没有注册的时候只能使用10天。
好了!已经知道了这么多!现在开始!go,go,go.
先看看程序有没有家壳,使用fi2.5,PEid0.8中文版检查没有加壳!(真是太爽了,作者就是好。这两天一直在手动脱壳,我都快崩溃了),程序是C++编的!(这个还是很难的,要是加aspr的壳)
好了!没有壳的话,就可以直接做的!使用w32dasm黄金版中文版进行反编译,因为主程序很大,要4M多,编译需要时间。我们在QQ聊天一会!哈哈!。。。。。。。。。。。。。。。。。
经过的不长的时间,我的机器相对快一点了!呵呵!程序反编译,点(串式参考),查找我们刚才unlock时候报错的那个信息,如果你用的是这一版的w32dasm黄金版中文版的话!会很麻烦,因为他的串式很多,不过我建议大家可以使用kW32Dsm(20020825)这个修改过的,在他的里面增加了一个搜索的控件真是!好用!呵呵!
"ok"
"okay"
"OKI"
"ole32.dll"
"OleCreateFontIndirect"
"OleCreatePictureIndirect"
"OleCreatePropertyFrame"
"OleLoadPicture"
"olepro32.dll"
"on"
"Once you have received your key "
"Online registration failed."《===========在这一句上双击来到反汇编的地方!
"Online via Internet"
"online"
"Ope&n report or other file..."
"Open file"
"open"
双击后的汇编代码:
:004121C6 90 nop
:004121C7 90 nop
:004121C8 55 push ebp
:004121C9 8BEC mov ebp, esp
:004121CB 83C4D8 add esp, FFFFFFD8
:004121CE 53 push ebx
:004121CF 56 push esi
:004121D0 57 push edi
:004121D1 8BD8 mov ebx, eax
:004121D3 B80C3C6300 mov eax, 00633C0C
:004121D8 E8076F1E00 call 005F90E4〈===========关键比较(A)
:004121DD 66C745E80800 mov [ebp-18], 0008
:004121E3 E89C9E0400 call 0045C084
:004121E8 84C0 test al, al
:004121EA 752F jne 0041221B〈=================关键跳转,暴力pj更改。
:004121EC 66C745E81400 mov [ebp-18], 0014
* Possible StringData Ref from Data Obj ->"Online registration failed."
|
:004121F2 BAE2816600 mov edx, 006681E2
:004121F7 8D45FC lea eax, dword ptr [ebp-04]
:004121FA E8DD321F00 call 006054DC
:004121FF FF45F4 inc [ebp-0C]
:00412202 8B00 mov eax, dword ptr [eax]
:00412204 E80BCD1900 call 005AEF14
:00412209 FF4DF4 dec [ebp-0C]
:0041220C 8D45FC lea eax, dword ptr [ebp-04]
:0041220F BA02000000 mov edx, 00000002
:00412214 E80F341F00 call 00605628
:00412219 EB1A jmp 00412235
跟进关键CALL
:0045C084 55 push ebp
:0045C085 8BEC mov ebp, esp
:0045C087 81C4BCFEFFFF add esp, FFFFFEBC
:0045C08D 53 push ebx
:0045C08E 56 push esi
:0045C08F 57 push edi
:0045C090 BB08E26700 mov ebx, 0067E208
:0045C095 BE1C2D6800 mov esi, 00682D1C
:0045C09A B8CCAF6400 mov eax, 0064AFCC
:0045C09F E840D01900 call 005F90E4
:0045C0A4 8B1500496400 mov edx, dword ptr [00644900]
:0045C0AA 8995BCFEFFFF mov dword ptr [ebp+FFFFFEBC], edx
:0045C0B0 8B1504496400 mov edx, dword ptr [00644904]
:0045C0B6 8995C0FEFFFF mov dword ptr [ebp+FFFFFEC0], edx
:0045C0BC 668B1508496400 mov dx, word ptr [00644908]
:0045C0C3 668995C4FEFFFF mov word ptr [ebp+FFFFFEC4], dx
:0045C0CA 8A150A496400 mov dl, byte ptr [0064490A]
:0045C0D0 8895C6FEFFFF mov byte ptr [ebp+FFFFFEC6], dl
:0045C0D6 8B0D0B496400 mov ecx, dword ptr [0064490B]
:0045C0DC 898D4CFFFFFF mov dword ptr [ebp+FFFFFF4C], ecx
* Possible StringData Ref from Data Obj ->"9X"
|
:0045C0E2 8B0510496400 mov eax, dword ptr [00644910]
:0045C0E8 898540FFFFFF mov dword ptr [ebp+FFFFFF40], eax
* Possible StringData Ref from Data Obj ->"NT"
|
:0045C0EE 8B0514496400 mov eax, dword ptr [00644914]
:0045C0F4 898544FFFFFF mov dword ptr [ebp+FFFFFF44], eax
* Possible StringData Ref from Data Obj ->"PR"
|
:0045C0FA 8B0518496400 mov eax, dword ptr [00644918]
:0045C100 898548FFFFFF mov dword ptr [ebp+FFFFFF48], eax
:0045C106 C68537FFFFFF00 mov byte ptr [ebp+FFFFFF37], 00
:0045C10D 33D2 xor edx, edx
:0045C10F 89952CFFFFFF mov dword ptr [ebp+FFFFFF2C], edx
:0045C115 899530FFFFFF mov dword ptr [ebp+FFFFFF30], edx
:0045C11B 33C9 xor ecx, ecx
:0045C11D 8A4B1F mov cl, byte ptr [ebx+1F]
:0045C120 49 dec ecx
:0045C121 752C jne 0045C14F
:0045C123 33C0 xor eax, eax
:0045C125 8A4320 mov al, byte ptr [ebx+20]
:0045C128 48 dec eax
:0045C129 7524 jne 0045C14F
:0045C12B 33D2 xor edx, edx
:0045C12D 8A5321 mov dl, byte ptr [ebx+21]
:0045C130 4A dec edx
:0045C131 751C jne 0045C14F
:0045C133 33C9 xor ecx, ecx
:0045C135 8A4B22 mov cl, byte ptr [ebx+22]
:0045C138 49 dec ecx
:0045C139 7514 jne 0045C14F
:0045C13B B001 mov al, 01
:0045C13D 8B9550FFFFFF mov edx, dword ptr [ebp+FFFFFF50]
:0045C143 64891500000000 mov dword ptr fs:[00000000], edx
:0045C14A E9360F0000 jmp 0045D085
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0045C121(C), :0045C129(C), :0045C131(C), :0045C139(C)
|
:0045C14F 66C78560FFFFFF0800 mov word ptr [ebp+FFFFFF60], 0008
:0045C158 8B0D04E26700 mov ecx, dword ptr [0067E204]
:0045C15E 8B81A4060000 mov eax, dword ptr [ecx+000006A4]
:0045C164 B201 mov dl, 01
:0045C166 8B08 mov ecx, dword ptr [eax]
:0045C168 FF9120010000 call dword ptr [ecx+00000120]
:0045C16E A104E26700 mov eax, dword ptr [0067E204]
:0045C173 8B80A4060000 mov eax, dword ptr [eax+000006A4]
:0045C179 E872A01000 call 005661F0
:0045C17E 66C78560FFFFFF1400 mov word ptr [ebp+FFFFFF60], 0014
* Possible StringData Ref from Data Obj ->"REGKEY"
|
:0045C187 BA0A686400 mov edx, 0064680A
:0045C18C 8D45FC lea eax, dword ptr [ebp-04]
:0045C18F E848931A00 call 006054DC
:0045C194 FF856CFFFFFF inc dword ptr [ebp+FFFFFF6C]
:0045C19A 8B10 mov edx, dword ptr [eax]
:0045C19C 8B0D04E26700 mov ecx, dword ptr [0067E204]
:0045C1A2 8B81A4060000 mov eax, dword ptr [ecx+000006A4]
:0045C1A8 E8EB901000 call 00565298
:0045C1AD 898514FFFFFF mov dword ptr [ebp+FFFFFF14], eax
:0045C1B3 33D2 xor edx, edx
:0045C1B5 8955F8 mov dword ptr [ebp-08], edx
:0045C1B8 8D55F8 lea edx, dword ptr [ebp-08]
:0045C1BB FF856CFFFFFF inc dword ptr [ebp+FFFFFF6C]
:0045C1C1 8B8514FFFFFF mov eax, dword ptr [ebp+FFFFFF14]
:0045C1C7 8B08 mov ecx, dword ptr [eax]
:0045C1C9 FF5158 call [ecx+58]
:0045C1CC 837DF800 cmp dword ptr [ebp-08], 00000000
:0045C1D0 7405 je 0045C1D7
:0045C1D2 8B45F8 mov eax, dword ptr [ebp-08]
:0045C1D5 EB05 jmp 0045C1DC
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0045C1D0(C)
|
:0045C1D7 B811686400 mov eax, 00646811
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0045C1D5(U)
|
:0045C1DC 85C0 test eax, eax
:0045C1DE 0F94C2 sete dl
:0045C1E1 83E201 and edx, 00000001
:0045C1E4 52 push edx
:0045C1E5 FF8D6CFFFFFF dec dword ptr [ebp+FFFFFF6C]
:0045C1EB 8D45F8 lea eax, dword ptr [ebp-08]
:0045C1EE BA02000000 mov edx, 00000002
:0045C1F3 E830941A00 call 00605628
:0045C1F8 FF8D6CFFFFFF dec dword ptr [ebp+FFFFFF6C]
:0045C1FE 8D45FC lea eax, dword ptr [ebp-04]
:0045C201 BA02000000 mov edx, 00000002
:0045C206 E81D941A00 call 00605628
:0045C20B 59 pop ecx
:0045C20C 84C9 test cl, cl
:0045C20E 0F856A060000 jne 0045C87E
:0045C214 66C78560FFFFFF2000 mov word ptr [ebp+FFFFFF60], 0020
* Possible StringData Ref from Data Obj ->"REGKEY"
|
:0045C21D BA12686400 mov edx, 00646812
:0045C222 8D45F4 lea eax, dword ptr [ebp-0C]
:0045C225 E8B2921A00 call 006054DC
:0045C22A FF856CFFFFFF inc dword ptr [ebp+FFFFFF6C]
:0045C230 8B10 mov edx, dword ptr [eax]
:0045C232 A104E26700 mov eax, dword ptr [0067E204]
:0045C237 8B80A4060000 mov eax, dword ptr [eax+000006A4]
:0045C23D E856901000 call 00565298
:0045C242 898510FFFFFF mov dword ptr [ebp+FFFFFF10], eax
:0045C248 33D2 xor edx, edx
:0045C24A 8955F0 mov dword ptr [ebp-10], edx
:0045C24D 8D55F0 lea edx, dword ptr [ebp-10]
:0045C250 FF856CFFFFFF inc dword ptr [ebp+FFFFFF6C]
:0045C256 8B8510FFFFFF mov eax, dword ptr [ebp+FFFFFF10]
:0045C25C 8B08 mov ecx, dword ptr [eax]
:0045C25E FF5158 call [ecx+58]
:0045C261 837DF000 cmp dword ptr [ebp-10], 00000000
:0045C265 7405 je 0045C26C
:0045C267 8B45F0 mov eax, dword ptr [ebp-10]
:0045C26A EB05 jmp 0045C271
...........................
还有很多!我一直看了个莫名其妙!换动态调试(这个方法也适合其他的pj,2000下不能使用trw,所以用这个方法会比较简单一点)
执行Ollydbg中文版v1.04,加载Dr. Hardware 2002,我们刚刚看到了关键跳转的地方,在他的前面的几行设置断点。
经验:从跳转的语句向上,找到第一个nop或者跳转等,设置中断。
:004121C6 90 nop
:004121C7 90 nop
:004121C8 55 push ebp〈==============设置断点
:004121C9 8BEC mov ebp, esp
:004121CB 83C4D8 add esp, FFFFFFD8
:004121CE 53 push ebx
:004121CF 56 push esi
:004121D0 57 push edi
:004121D1 8BD8 mov ebx, eax
:004121D3 B80C3C6300 mov eax, 00633C0C
:004121D8 E8076F1E00 call 005F90E4
:004121DD 66C745E80800 mov [ebp-18], 0008
:004121E3 E89C9E0400 call 0045C084〈==========关键call
:004121E8 84C0 test al, al
:004121EA 752F jne 0041221B〈===============关键跳转
:004121EC 66C745E81400 mov [ebp-18], 0014
执行程序,点注册,填好注册信息,点注册(unlock)
程序被中断在断点
点f8,一步一步执行,遇到call,点f7进入,然后继续点f8,这个时候就比较简单了。
005F90E4 /$ 53 PUSH EBX
005F90E5 |. 8BDD MOV EBX,EBP
005F90E7 |. 0358 04 ADD EBX,DWORD PTR DS:[EAX+4]
005F90EA |. 8943 08 MOV DWORD PTR DS:[EBX+8],EAX
005F90ED |. 8D4424 08 LEA EAX,DWORD PTR SS:[ESP+8]
005F90F1 |. 8943 0C MOV DWORD PTR DS:[EBX+C],EAX
005F90F4 |. C743 04 AF>MOV DWORD PTR DS:[EBX+4],DRHAR>
005F90FB |. C743 10 00>MOV DWORD PTR DS:[EBX+10],0
005F9102 |. C743 12 00>MOV DWORD PTR DS:[EBX+12],0
005F9109 |. C743 1C 00>MOV DWORD PTR DS:[EBX+1C],0
005F9110 |. 64:67:A1 0>MOV EAX,DWORD PTR FS:[0]
005F9115 |. 8903 MOV DWORD PTR DS:[EBX],EAX
005F9117 |. 64:67:891E>MOV DWORD PTR FS:[0],EBX
005F911D |. 5B POP EBX
005F911E \. C3 RETN〈=========程序从这里返回
005F911F . 90 NOP
返回到这个地方
004121DD . 66:C745 E8>MOV WORD PTR SS:[EBP-18],8
004121E3 . E8 9C9E040>CALL DRHARD.0045C084〈===================关键f7跟进(B)
004121E8 . 84C0 TEST AL,AL
004121EA . 75 2F JNZ SHORT DRHARD.0041221B
004121EC . 66:C745 E8>MOV WORD PTR SS:[EBP-18],14
004121F2 . BA E281660>MOV EDX,DRHARD.006681E2 ; ASCII "Online registration failed."
004121F7 . 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004121FA . E8 DD321F0>CALL DRHARD.006054DC
004121FF . FF45 F4 INC DWORD PTR SS:[EBP-C]
00412202 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
从(B)跟进以后,就一直点f8就可以了!
在30多行以后程序把输入的假注册吗放在ESI中,不断的有字符串在EAX中进行比较!
这些在EAX中比较的字符串就是我们要的注册吗了!有很多,大概15个以上吧!有兴趣的都找出来好了!
Ollydbg中文版v1.04的窗体,左上角是程序代码,右上角是寄存器的内容,右下角是堆栈的信息!所有的信息一目了然,这也是我喜欢用Ollydbg中文版v1.04的缘故。
点f8一步一步跟踪,我们发现程序使用一些长度在10---14的字符串和我们输入的注册号码的前一部分的信息进行比较。
记下所有的字符串。这些就是程序的注册码。
DRHNT2002PROFK
PREMIUM2002DRH
STDKEYDR2002
PROFKEY2002WIN
PROFKEY2002NT
PREMKEYDRH2002
以上是2002这个版本下的注册吗,使用于不同的操作系统。
小结:程序使用内存中固定的字符串和输入的注册信息进行比较,比较简单!但要注意,我们要使用注册码中有2002字样的注册码,因为这个是这一版本的注册吗,其他的是以前版本的注册吗。还有要多试一下,不同的注册吗是给不同的操作系统使用的!
问题:注册后,在关于的窗体里面有单用户的信息!不知道是不是注册吗还不完全,请那位有时间再看一下!谢谢!
相关视频
相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
热门文章 去除winrar注册框方法
最新文章
比特币病毒怎么破解 比去除winrar注册框方法
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据
人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程
查看所有0条评论>>