软件名称:IPBOOK v0.49
软件大小:345K
软件功能:
1、查出自己的IP地址和计算机名等等。
2、查出自己所在网段所有机器的计算机名,工作组,MAC地址和共享资源。并且可以打开共享资源,类似于Windows的网络邻居。
3、查出Internet上任意IP地址的计算机名,工作组和共享资源。并且可以进行Ping,Nbtstat等操作。
4、可以自动将查出的主要信息存储起来,以便下次查看。并且可以将之输出(Export)到文本文件中去,以便于编辑。
5、给局域网或者Internet上指定的计算机发送消息。(新版本的IPBook可以在win98/win2000等操作系统中使用发送短信功能。但 注意只有win2000以上的操作系统才集成了接受信使服务的收短信功能,如果win98系统要收短信的话,就要打开winpopup程序才行。)
6、对指定的IP地址检测端口是否开放,进行ping,nbtstat,域名-IP地址互换等。
7、检查HTTP、FTP服务及隐藏共享。
破解所用软件:OllyDebug1.09C,W32Dasm9b,PE-Scan3.31,Stripper,HIEW
先将IPBOOK文件夹复制一份,以免破解时搞坏了文件还可以恢复!(凡事要给自己留条后路)
首先用PE-Scan扫描软件,知道是ASP2.12的壳,然后用Stripper进行脱壳。
运行脱壳后的软件进行注册,随便输入注册码12345678,点注册按钮进行注册,出现出错提示框(真的好幸运啊,看来很简单就可以搞定)
然后用W32Dasm9b进行反汇编,查找出错提示框显示的文本,???没找到,是不是翻太快了?妈的,一条一条找,还是没有找到,我日。
真TMD狡猾。再仔细看看,看到“请单击下面的变色文字取得注册码,谢谢!……”,这个不是注册对话框上面的文字吗?看来有戏。记住它的地址(004A10DF)。
用OllyDebug进行反编译,在004A10DF按F2下断点,然后按F9运行->点"注册",被OllyDebug拦截,然后一直按F8(按到手指头快骨折了),发现程序一直在下面这段循环
0046522D |> 8B03 /MOV EAX,DWORD PTR DS:[EBX] \
0046522F |. E8 74310000 |CALL IPBOOK.004683A8 |
00465234 |. 8B03 |MOV EAX,DWORD PTR DS:[EBX] |
00465236 |. 80B8 9C000000 >|CMP BYTE PTR DS:[EAX+9C],0 |
0046523D |. 74 0F |JE SHORT IPBOOK.0046524E |
0046523F |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] |
00465242 |. C780 4C020000 >|MOV DWORD PTR DS:[EAX+24C],2 |
0046524C |. EB 14 |JMP SHORT IPBOOK.00465262 循环
0046524E |> 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] |
00465251 |. 83B8 4C020000 >|CMP DWORD PTR DS:[EAX+24C],0 |
00465258 |. 74 08 |JE SHORT IPBOOK.00465262 |
0046525A |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] |
0046525D |. E8 36FDFFFF |CALL IPBOOK.00464F98 |
00465262 |> 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] |
00465265 |. 8B80 4C020000 |MOV EAX,DWORD PTR DS:[EAX+24C] |
0046526B |. 85C0 |TEST EAX,EAX |
0046526D |.^74 BE \JE SHORT IPBOOK.0046522D /
0046526F |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
要跳出循环就在0046526F处按F2设断点,然后按F9,然后在注册码输入框中随便输入注册码"12345678",点注册按钮,程序被拦截在刚刚下断的0046526F处。(终于找到突破口了^_^)
一直按F8(这次要慢慢按了,因为快接近目标了)来到这里,觉得很可疑(典型的CALL+判断+跳转),所以在004C3EAE和004C3EB2下断(顺便把上面下的2个断点取消,免得断点太多分不清)
004C3EA9 |. E8 AE44F8FF CALL IPBOOK.0044835C
004C3EAE |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 <-----SS:[EBP-4]显示的是"12345678"(估计是判断注册码是否为空)
004C3EB2 |. 75 18 JNZ SHORT IPBOOK.004C3ECC
看来还不是关键不过没关系,慢慢来吧。因为注册码不为空,所以跳到下面
看到又有可以的地方了(典型的CALL+判断+跳转),赶快在004C3EE0、004C3EE5和004C3EE7下断。
004C3ECC |> 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004C3ECF |. E8 3856F4FF CALL IPBOOK.0040950C
004C3ED4 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
004C3ED7 |. 8955 F4 MOV DWORD PTR SS:[EBP-C],EDX
004C3EDA |. FF75 F4 PUSH DWORD PTR SS:[EBP-C]
004C3EDD |. FF75 F0 PUSH DWORD PTR SS:[EBP-10]
004C3EE0 |. E8 4BCFFDFF CALL IPBOOK.004A0E30
004C3EE5 |. 84C0 TEST AL,AL
004C3EE7 |. 74 3E JE SHORT IPBOOK.004C3F27
小心地按F8,到了004C3EE7就到下面,还是小心的按F8向下走
004C3F27 |> A1 30CD4C00 MOV EAX,DWORD PTR DS:[4CCD30]
004C3F2C |. 8B40 40 MOV EAX,DWORD PTR DS:[EAX+40]
004C3F2F |. E8 8CD1F7FF CALL IPBOOK.004410C0
004C3F34 |> 33C0 XOR EAX,EAX
004C3F36 |. 5A POP EDX
004C3F37 |. 59 POP ECX
004C3F38 |. 59 POP ECX
004C3F39 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004C3F3C |. 68 513F4C00 PUSH IPBOOK.004C3F51
004C3F41 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004C3F44 |. E8 D30BF4FF CALL IPBOOK.00404B1C
004C3F49 \. C3 RETN
结果到了004C3F2F就不走了,原来是出现了出错提示框。(^Q^太好了,看来找到关键跳转了,就是那个004C3EE7)
按出错提示框上的"OK"按钮先,然后重新注册。走到004C3EE7处时按空格键,把"JE"改成"JNE",然后再按F8往下走
004C3EE9 |. FF75 F4 PUSH DWORD PTR SS:[EBP-C]
004C3EEC |. FF75 F0 PUSH DWORD PTR SS:[EBP-10]
004C3EEF |. E8 78CDFDFF CALL IPBOOK.004A0C6C
004C3EF4 |. E8 23D2FDFF CALL IPBOOK.004A111C
004C3EF9 |. 6A 00 PUSH 0
004C3EFB |. A1 30CD4C00 MOV EAX,DWORD PTR DS:[4CCD30]
004C3F00 |. 8B40 3C MOV EAX,DWORD PTR DS:[EAX+3C]
004C3F03 |. E8 C410F4FF CALL IPBOOK.00404FCC
004C3F08 |. 50 PUSH EAX
004C3F09 |. A1 30CD4C00 MOV EAX,DWORD PTR DS:[4CCD30]
004C3F0E |. 8B40 38 MOV EAX,DWORD PTR DS:[EAX+38]
004C3F11 |. E8 B610F4FF CALL IPBOOK.00404FCC
004C3F16 |. 8BD0 MOV EDX,EAX
004C3F18 |. A1 C8CB4C00 MOV EAX,DWORD PTR DS:[4CCBC8]
004C3F1D |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C3F1F |. 59 POP ECX
004C3F20 |. E8 A747FAFF CALL IPBOOK.004686CC
004C3F25 |. EB 0D JMP SHORT IPBOOK.004C3F34
走到004C3F20处听到系统弹出对话框的声音,赶紧看,WA~~~HA~~~HA~~~HA~~~是注册成功的提示框。004C3EE7就是关键跳了,看来搞定了。
好,关闭程序。用HIEW加载IPBOOK,找到004C3EE7处,按F3进入修改状态,将"74"改成"75",然后按F9保存,再按F10退出HIEW。
运行爆破后的IPBOOK,看看自己的劳动成果。???怎么还是未注册版。妈的!(现在好多程序注册成功后都写入注册表或什么文件中的,真TMD狡猾)
看来要重新来过了。
用OllyDebug重新加载IPBOOK,来到关键CALL(004C3EE0),下断。运行程序,进行注册,程序来到004C3EE0被拦截,按F7进去看看。
先按F8走一遍,看看有没有什么ASCII码字符出现。
004A0E30 /$ 55 PUSH EBP
004A0E31 |. 8BEC MOV EBP,ESP
004A0E33 |. 83C4 EC ADD ESP,-14
004A0E36 |. 53 PUSH EBX
004A0E37 |. 56 PUSH ESI
004A0E38 |. 33C0 XOR EAX,EAX
004A0E3A |. 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
004A0E3D |. 33C0 XOR EAX,EAX
004A0E3F |. 55 PUSH EBP
004A0E40 |. 68 6A0F4A00 PUSH _IPBOOK.004A0F6A
004A0E45 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004A0E48 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004A0E4B |. 33DB XOR EBX,EBX
004A0E4D |. BE 01000000 MOV ESI,1
004A0E52 |> 8BC6 /MOV EAX,ESI
004A0E54 |. 99 |CDQ
004A0E55 |. 8945 F8 |MOV DWORD PTR SS:[EBP-8],EAX
004A0E58 |. 8955 FC |MOV DWORD PTR SS:[EBP-4],EDX
004A0E5B |. 6A 00 |PUSH 0
004A0E5D |. 68 30070000 |PUSH 730
004A0E62 |. 8B45 F8 |MOV EAX,DWORD PTR SS:[EBP-8]
004A0E65 |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4]
004A0E68 |. E8 EB4DF6FF |CALL _IPBOOK.00405C58
004A0E6D |. 52 |PUSH EDX
004A0E6E |. 50 |PUSH EAX
004A0E6F |. 6A 00 |PUSH 0
004A0E71 |. 68 9D070000 |PUSH 79D
004A0E76 |. FF75 FC |PUSH DWORD PTR SS:[EBP-4]
004A0E79 |. FF75 F8 |PUSH DWORD PTR SS:[EBP-8]
004A0E7C |. 8B45 F8 |MOV EAX,DWORD PTR SS:[EBP-8]
004A0E7F |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4]
004A0E82 |. E8 D14DF6FF |CALL _IPBOOK.00405C58
004A0E87 |. E8 CC4DF6FF |CALL _IPBOOK.00405C58
004A0E8C |. 030424 |ADD EAX,DWORD PTR SS:[ESP]
004A0E8F |. 135424 04 |ADC EDX,DWORD PTR SS:[ESP+4]
004A0E93 |. 83C4 08 |ADD ESP,8
004A0E96 |. 05 D0070000 |ADD EAX,7D0
004A0E9B |. 83D2 00 |ADC EDX,0
004A0E9E |. 3B55 0C |CMP EDX,DWORD PTR SS:[EBP+C]
004A0EA1 |. 75 0E |JNZ SHORT _IPBOOK.004A0EB1
004A0EA3 |. 3B45 08 |CMP EAX,DWORD PTR SS:[EBP+8]
004A0EA6 |. 75 09 |JNZ SHORT _IPBOOK.004A0EB1
004A0EA8 |. 83FE 64 |CMP ESI,64
004A0EAB |. 7E 04 |JLE SHORT _IPBOOK.004A0EB1
004A0EAD |. B3 01 |MOV BL,1
004A0EAF |. EB 09 |JMP SHORT _IPBOOK.004A0EBA
004A0EB1 |> 46 |INC ESI
004A0EB2 |. 81FE 10270000 |CMP ESI,2710
004A0EB8 |.^75 98 \JNZ SHORT _IPBOOK.004A0E52
004A0EBA |> 84DB TEST BL,BL
004A0EBC |. 0F85 92000000 JNZ _IPBOOK.004A0F54
004A0EC2 |. A1 E4C74C00 MOV EAX,DWORD PTR DS:[4CC7E4]
004A0EC7 |. 8338 00 CMP DWORD PTR DS:[EAX],0
004A0ECA |. 0F85 84000000 JNZ _IPBOOK.004A0F54
004A0ED0 |. 837D 0C 00 CMP DWORD PTR SS:[EBP+C],0
004A0ED4 |. 75 04 JNZ SHORT _IPBOOK.004A0EDA
004A0ED6 |. 837D 08 00 CMP DWORD PTR SS:[EBP+8],0
004A0EDA |> 74 20 JE SHORT _IPBOOK.004A0EFC
004A0EDC |. 6A 00 PUSH 0
004A0EDE |. 68 30070000 PUSH 730
004A0EE3 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
004A0EE6 |. 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C]
004A0EE9 |. E8 564EF6FF CALL _IPBOOK.00405D44
004A0EEE |. 83FA 00 CMP EDX,0
004A0EF1 |. 75 09 JNZ SHORT _IPBOOK.004A0EFC
004A0EF3 |. 83F8 00 CMP EAX,0
004A0EF6 |. 75 04 JNZ SHORT _IPBOOK.004A0EFC
004A0EF8 |. B3 01 MOV BL,1
004A0EFA |. EB 02 JMP SHORT _IPBOOK.004A0EFE
004A0EFC |> 33DB XOR EBX,EBX
004A0EFE |> 837D 0C 00 CMP DWORD PTR SS:[EBP+C],0
004A0F02 |. 75 07 JNZ SHORT _IPBOOK.004A0F0B
004A0F04 |. 817D 08 00042E>CMP DWORD PTR SS:[EBP+8],142E0400
004A0F0B |> 74 1E JE SHORT _IPBOOK.004A0F2B
004A0F0D |. 837D 0C 00 CMP DWORD PTR SS:[EBP+C],0
004A0F11 |. 75 07 JNZ SHORT _IPBOOK.004A0F1A
004A0F13 |. 817D 08 E04700>CMP DWORD PTR SS:[EBP+8],47E0
004A0F1A |> 74 0F JE SHORT _IPBOOK.004A0F2B
004A0F1C |. 837D 0C 00 CMP DWORD PTR SS:[EBP+C],0
004A0F20 |. 75 32 JNZ SHORT _IPBOOK.004A0F54
004A0F22 |. 817D 08 300700>CMP DWORD PTR SS:[EBP+8],730
004A0F29 |. 75 29 JNZ SHORT _IPBOOK.004A0F54
004A0F2B |> 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004A0F2E |. 50 PUSH EAX ; /Arg1
004A0F2F |. A1 3CC44C00 MOV EAX,DWORD PTR DS:[4CC43C] ; |
004A0F34 |. 8945 EC MOV DWORD PTR SS:[EBP-14],EAX ; |
004A0F37 |. C645 F0 00 MOV BYTE PTR SS:[EBP-10],0 ; |
004A0F3B |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14] ; |
004A0F3E |. 33C9 XOR ECX,ECX ; |
004A0F40 |. A1 44C44C00 MOV EAX,DWORD PTR DS:[4CC444] ; |
004A0F45 |. E8 CE94F6FF CALL _IPBOOK.0040A418 ; \_IPBOOK.0040A418
004A0F4A |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
004A0F4D |. E8 6E01FAFF CALL _IPBOOK.004410C0
004A0F52 |. 33DB XOR EBX,EBX
004A0F54 |> 33C0 XOR EAX,EAX
004A0F56 |. 5A POP EDX
004A0F57 |. 59 POP ECX
004A0F58 |. 59 POP ECX
004A0F59 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004A0F5C |. 68 710F4A00 PUSH _IPBOOK.004A0F71
004A0F61 |> 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004A0F64 |. E8 B33BF6FF CALL _IPBOOK.00404B1C
004A0F69 \. C3 RETN
没看出什么名堂来,没办法谁让自己是菜鸟呢:(
看来只能想其他办法了,推理:此段一定是判断注册码真确与否的子程序,一般程序判断注册码的子程序只会有一个(如果程序员吃饱了没事做,多写几个判断注册码的子程序那也没办法),所以就算是重启检验,那也一定会调用这段子程序的!
先看看这段程序被多少地方调用,来到子程序入口看到:
004A0E30 /$ 55 PUSH EBP <-----局部调用来自004A2E99,004BFD5B,004C3EE0
我们刚才的CALL是004C3EE0,还有2个CALL在调用这段程序。
退出程序,重新加载IPBOOK,看看程序启动时如何调用这个关键子程序的。
分别来到004A2E99和004BFD5B下断点
004A2E99 |. E8 92DFFFFF CALL IPBOOK.004A0E30
004A2E9E |. 84C0 TEST AL,AL
004A2EA0 |. 0F85 84000000 JNZ IPBOOK.004A2F2A
004BFD5B |. E8 D010FEFF CALL IPBOOK.004A0E30
004BFD60 |. 84C0 TEST AL,AL
004BFD62 |. 0F85 82000000 JNZ IPBOOK.004BFDEA
程序被拦截在004BFD5B处,看来这个CALL就是程序启动时判断注册码的正确性。老办法,将下面004BFD62的"JNZ"改成"JZ",然后按F9继续运行程序。
为什么不用按F8慢慢看,因为此处调用的CALL和上面注册时调用的CALL是同一个CALL,它只返回正确的标志和错误的标志,如果是错误的那肯定会出现注册按钮,否则注册按钮就没有了(破解有时候需要先简单的推理然后再行动,这样可能节约好多时间,不知道大侠们是怎么做的,小弟只是菜鸟,还是以大侠们的话为标准)
奇迹发生了,竟然没有出现注册按钮了,哈哈哈哈哈。看来这个才是真正的关键CALL啊。原先那个注册用的CALL(004C3EE0)下面的跳转语句就不用改了。
好了,IPBOOK的爆破就告一段落了。
不知道004A2E99出的CALL是什么时候调用的。还有,注册码算法是怎么样的?小弟MAIL:etie323@sina.com
希望大侠们能指点一二,让我这个菜鸟早日进入大侠的行列。
想大侠们敬礼!!!!!
附上小弟做的简单补丁
附件:IPBook_Patch.rar
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课