首页
社区
课程
招聘
[原创]注册“新狐电脑传真” FOR 菜鸟[易]
发表于: 2006-2-17 15:43 12947

[原创]注册“新狐电脑传真” FOR 菜鸟[易]

qduwg 活跃值
35
2006-2-17 15:43
12947

题目:注册“新狐电脑传真” FOR 菜鸟[易]
功能:通过电脑收发传真,实现无纸化办公。《新狐电脑传真》为绿色软件,无需安装即可使用。将下载后的程序文件自解压到硬

盘某一目录下即可。

工具:Softice

引子:今天安装了这个软件,软件解压到一个目录下,双击即可运行。拿PEID查看不带壳,是DELPHI写的。在主界面上有“登记注

册”按钮。单击此按钮,弹出对话框,输入假码87654321。调出SOFTICE,下断点bpx hmemcpy。F5退出,单击“确定”按钮,被

拦住。11次F12来到主程序内,然后F10跟踪来到如下代码处。

004DBF90  /. 55                  PUSH EBP
004DBF91  |. 8BEC                MOV EBP,ESP
004DBF93  |. 83C4 E0             ADD ESP,-20
004DBF96  |. 53                  PUSH EBX
004DBF97  |. 33C9                XOR ECX,ECX
004DBF99  |. 894D E0             MOV DWORD PTR SS:[EBP-20],ECX
004DBF9C  |. 894D F4             MOV DWORD PTR SS:[EBP-C],ECX
004DBF9F  |. 8BD8                MOV EBX,EAX
004DBFA1  |. 33C0                XOR EAX,EAX
004DBFA3  |. 55                  PUSH EBP
004DBFA4  |. 68 AFC04D00         PUSH FAXNOW.004DC0AF
004DBFA9  |. 64:FF30             PUSH DWORD PTR FS:[EAX]
004DBFAC  |. 64:8920             MOV DWORD PTR FS:[EAX],ESP
004DBFAF  |. 8D45 F4             LEA EAX,DWORD PTR SS:[EBP-C]
004DBFB2  |. BA C4C04D00         MOV EDX,FAXNOW.004DC0C4
004DBFB7  |. E8 C48EF2FF         CALL FAXNOW.00404E80
004DBFBC  |. 8D4D F4             LEA ECX,DWORD PTR SS:[EBP-C]
004DBFBF  |. BA D8C04D00         MOV EDX,FAXNOW.004DC0D8
004DBFC4  |. B8 F8C04D00         MOV EAX,FAXNOW.004DC0F8
004DBFC9  |. E8 E637F6FF         CALL FAXNOW.0043F7B4
004DBFCE  |. 3C 01               CMP AL,1
004DBFD0  |. 0F85 BB000000       JNZ FAXNOW.004DC091                //此处未跳。
004DBFD6  |. 8D55 E0             LEA EDX,DWORD PTR SS:[EBP-20]
004DBFD9  |. 8B45 F4             MOV EAX,DWORD PTR SS:[EBP-C]
004DBFDC  |. E8 C3D4F2FF         CALL FAXNOW.004094A4               //复制假码到另一地址。
004DBFE1  |. 8B45 E0             MOV EAX,DWORD PTR SS:[EBP-20]      //假码地址送EAX。
004DBFE4  |. E8 0BD8F2FF         CALL FAXNOW.004097F4               //这个函数把假码转换为十六进制数。(1)
004DBFE9  |. 8945 F8             MOV DWORD PTR SS:[EBP-8],EAX       //得到的低4字节在EAX内。
004DBFEC  |. 8955 FC             MOV DWORD PTR SS:[EBP-4],EDX       //得到的高4字节在EDX内。
004DBFEF  |. 6A 00               PUSH 0
004DBFF1  |. 68 D2010000         PUSH 1D2                           //被除数常量进栈。
004DBFF6  |. 8B45 F8             MOV EAX,DWORD PTR SS:[EBP-8]
004DBFF9  |. 8B55 FC             MOV EDX,DWORD PTR SS:[EBP-4]
004DBFFC  |. E8 DF9DF2FF         CALL FAXNOW.00405DE0               //转换后的假码除以1D2h。
004DC001  |. 8945 F8             MOV DWORD PTR SS:[EBP-8],EAX       //商在EAX内。
004DC004  |. 8955 FC             MOV DWORD PTR SS:[EBP-4],EDX       //余数在EAX内。
004DC007  |. 8B45 F8             MOV EAX,DWORD PTR SS:[EBP-8]
004DC00A  |. 8B55 FC             MOV EDX,DWORD PTR SS:[EBP-4]
004DC00D  |. 2D B3730700         SUB EAX,773B3                      //商减去773B3h。
004DC012  |. 83DA 00             SBB EDX,0                          //带借位,EDX减去0。
004DC015  |. 8945 F8             MOV DWORD PTR SS:[EBP-8],EAX       //结果送回保存。
004DC018  |. 8955 FC             MOV DWORD PTR SS:[EBP-4],EDX
004DC01B  |. 8D45 E4             LEA EAX,DWORD PTR SS:[EBP-1C]
004DC01E  |. E8 E1F4FFFF         CALL FAXNOW.004DB504               //CPU型号入栈。比如686。          (2)
004DC023  |. 8B4D E4             MOV ECX,DWORD PTR SS:[EBP-1C]      //把CPU型号送ECX。比如ECX=686h。
004DC026  |. 8BC1                MOV EAX,ECX                        //ECX送EAX。
004DC028  |. 99                  CDQ                                //EAX扩充到EDX。
004DC029  |. 3B55 FC             CMP EDX,DWORD PTR SS:[EBP-4]       //EDX与与前面得到的[EBP-4]内的结果比较。
004DC02C  |. 75 4E               JNZ SHORT FAXNOW.004DC07C          //不等则OVER。
004DC02E  |. 3B45 F8             CMP EAX,DWORD PTR SS:[EBP-8]       //EAX与前面得到的[EBP-8]内的结果比较。
004DC031  |. 75 49               JNZ SHORT FAXNOW.004DC07C          //不等则OVER。
004DC033  |. 33D2                XOR EDX,EDX                        //否则EDX清0。
004DC035  |. 8B83 78030000       MOV EAX,DWORD PTR DS:[EBX+378]
004DC03B  |. 8B08                MOV ECX,DWORD PTR DS:[EAX]
004DC03D  |. FF51 64             CALL DWORD PTR DS:[ECX+64]
004DC040  |. B2 01               MOV DL,1                           
004DC042  |. 8B83 08030000       MOV EAX,DWORD PTR DS:[EBX+308]
004DC048  |. 8B08                MOV ECX,DWORD PTR DS:[EAX]
004DC04A  |. FF51 64             CALL DWORD PTR DS:[ECX+64]
004DC04D  |. 33D2                XOR EDX,EDX
004DC04F  |. 8B83 84030000       MOV EAX,DWORD PTR DS:[EBX+384]
004DC055  |. E8 BAA2F6FF         CALL FAXNOW.00446314
004DC05A  |. 8B83 94030000       MOV EAX,DWORD PTR DS:[EBX+394]
004DC060  |. E8 D7C0FEFF         CALL FAXNOW.004C813C
004DC065  |. 6A 00               PUSH 0
004DC067  |. 66:8B0D 04C14D00    MOV CX,WORD PTR DS:[4DC104]
004DC06E  |. B2 02               MOV DL,2
004DC070  |. B8 10C14D00         MOV EAX,FAXNOW.004DC110
004DC075  |. E8 1E36F6FF         CALL FAXNOW.0043F698               //里面调用显示成功的函数。
004DC07A  |. EB 15               JMP SHORT FAXNOW.004DC091          //然后跳走。
004DC07C  |> 6A 00               PUSH 0
004DC07E  |. 66:8B0D 04C14D00    MOV CX,WORD PTR DS:[4DC104]
004DC085  |. B2 01               MOV DL,1
004DC087  |. B8 2CC14D00         MOV EAX,FAXNOW.004DC12C
004DC08C  |. E8 0736F6FF         CALL FAXNOW.0043F698
004DC091  |> 33C0                XOR EAX,EAX
004DC093  |. 5A                  POP EDX
004DC094  |. 59                  POP ECX
004DC095  |. 59                  POP ECX
004DC096  |. 64:8910             MOV DWORD PTR FS:[EAX],EDX
004DC099  |. 68 B6C04D00         PUSH FAXNOW.004DC0B6
004DC09E  |> 8D45 E0             LEA EAX,DWORD PTR SS:[EBP-20]
004DC0A1  |. E8 428DF2FF         CALL FAXNOW.00404DE8
004DC0A6  |. 8D45 F4             LEA EAX,DWORD PTR SS:[EBP-C]
004DC0A9  |. E8 3A8DF2FF         CALL FAXNOW.00404DE8
004DC0AE  \. C3                  RETN
=============================================================================
下面看看(1)处的函数:
004097F4  /$ 53                  PUSH EBX
004097F5  |. 83C4 EC             ADD ESP,-14
004097F8  |. 8BD8                MOV EBX,EAX
004097FA  |. 8D5424 08           LEA EDX,DWORD PTR SS:[ESP+8]
004097FE  |. 8BC3                MOV EAX,EBX
00409800  |. E8 AFC7FFFF         CALL FAXNOW.00405FB4               //在此函数内实现注册码转换。        (3)
00409805  |. 890424              MOV DWORD PTR SS:[ESP],EAX
00409808  |. 895424 04           MOV DWORD PTR SS:[ESP+4],EDX
0040980C  |. 837C24 08 00        CMP DWORD PTR SS:[ESP+8],0
00409811  |. 74 19               JE SHORT FAXNOW.0040982C
00409813  |. 895C24 0C           MOV DWORD PTR SS:[ESP+C],EBX
00409817  |. C64424 10 0B        MOV BYTE PTR SS:[ESP+10],0B
0040981C  |. 8D5424 0C           LEA EDX,DWORD PTR SS:[ESP+C]
00409820  |. A1 700B4E00         MOV EAX,DWORD PTR DS:[4E0B70]
00409825  |. 33C9                XOR ECX,ECX
00409827  |. E8 6CF9FFFF         CALL FAXNOW.00409198
0040982C  |> 8B0424              MOV EAX,DWORD PTR SS:[ESP]
0040982F  |. 8B5424 04           MOV EDX,DWORD PTR SS:[ESP+4]
00409833  |. 83C4 14             ADD ESP,14
00409836  |. 5B                  POP EBX
00409837  \. C3                  RETN
=============================================================================
下面看看(2)处的函数:
004DB504  /$ 53                  PUSH EBX
004DB505  |. 57                  PUSH EDI
004DB506  |. 89C7                MOV EDI,EAX
004DB508  |. B8 01000000         MOV EAX,1
004DB50D  |. 0FA2                CPUID                              //得到CPU型号。
004DB50F  |. AB                  STOS DWORD PTR ES:[EDI]            //入栈。
004DB510  |. 89D8                MOV EAX,EBX
004DB512  |. AB                  STOS DWORD PTR ES:[EDI]
004DB513  |. 89C8                MOV EAX,ECX
004DB515  |. AB                  STOS DWORD PTR ES:[EDI]
004DB516  |. 89D0                MOV EAX,EDX
004DB518  |. AB                  STOS DWORD PTR ES:[EDI]
004DB519  |. 5F                  POP EDI
004DB51A  |. 5B                  POP EBX
004DB51B  \. C3                  RETN
=============================================================================
下面看看(3)处的函数:
00405FB4  /$ 53                    PUSH EBX
*省略多行*
004060F5  |> 8A442E FF             /MOV AL,BYTE PTR DS:[ESI+EBP-1]  //下面循环把注册码变换为16进制数。
004060F9  |. 8BD0                  |MOV EDX,EAX                     //EAX内是注册码字符,依次送EDX。
004060FB  |. 80C2 D0               |ADD DL,0D0                      //加D0修正EDX,变为3位16进制数,最低位是

对应10进制数。
004060FE  |. 80EA 0A               |SUB DL,0A                       //测试是否大于10。
00406101  |. 73 62                 |JNB SHORT FAXNOW.00406165       //如果大于等于则跳。
00406103  |. 8BF8                  |MOV EDI,EAX                     //再次把EAX内的注册码字符送EDI。
00406105  |. 81E7 FF000000         |AND EDI,0FF                     //跟FF相与,得到低字节。
0040610B  |. 83EF 30               |SUB EDI,30                      //减去30h即为十进制数了。
0040610E  |. 837C24 0C 00          |CMP DWORD PTR SS:[ESP+C],0      //[ESP+C]内保存结果的高4字节。
00406113  |. 75 09                 |JNZ SHORT FAXNOW.0040611E       //不为0则跳。
00406115  |. 837C24 08 00          |CMP DWORD PTR SS:[ESP+8],0      //[ESP+8]内保存结果的低4字节。
0040611A  |. 72 49                 |JB SHORT FAXNOW.00406165        //高4字节小于0跳。
0040611C  |. EB 02                 |JMP SHORT FAXNOW.00406120       //否则直接跳406120。
0040611E  |> 7C 45                 |JL SHORT FAXNOW.00406165        //小于0则跳。
00406120  |> 817C24 0C CCCCCC0C    |CMP DWORD PTR SS:[ESP+C],0CCCCCCC  //否则高4字节与该常数比较。
00406128  |. 75 0C                 |JNZ SHORT FAXNOW.00406136          //不为0跳。
0040612A  |. 817C24 08 CCCCCCCC    |CMP DWORD PTR SS:[ESP+8],CCCCCCCC  //低4字节与该常数比较。
00406132  |. 76 04                 |JBE SHORT FAXNOW.00406138          //小于则跳406138。
00406134  |. EB 2F                 |JMP SHORT FAXNOW.00406165
00406136  |> 7F 2D                 |JG SHORT FAXNOW.00406165
00406138  |> 6A 00                 |PUSH 0
0040613A  |. 6A 0A                 |PUSH 0A
0040613C  |. 8B4424 10             |MOV EAX,DWORD PTR SS:[ESP+10]
00406140  |. 8B5424 14             |MOV EDX,DWORD PTR SS:[ESP+14]
00406144  |. E8 73FCFFFF           |CALL FAXNOW.00405DBC            //此函数把得到的十进制数乘以10。   
00406149  |. 52                    |PUSH EDX                        //高4字节值进栈。
0040614A  |. 50                    |PUSH EAX                        //低4字节值进栈。
0040614B  |. 8BC7                  |MOV EAX,EDI                     //变换为十进制数的注册码字符送EAX。。
0040614D  |. 99                    |CDQ
0040614E  |. 030424                |ADD EAX,DWORD PTR SS:[ESP]      //前面进栈的低4字节数累加到EAX。
00406151  |. 135424 04             |ADC EDX,DWORD PTR SS:[ESP+4]    //前面进栈的高4字节数累加到EDX。
00406155  |. 83C4 08               |ADD ESP,8
00406158  |. 894424 08             |MOV DWORD PTR SS:[ESP+8],EAX    //保存。
0040615C  |. 895424 0C             |MOV DWORD PTR SS:[ESP+C],EDX    //保存。
00406160  |. 45                    |INC EBP
00406161  |. 33DB                  |XOR EBX,EBX
00406163  |.^EB 90                 \JMP SHORT FAXNOW.004060F5       //循环。
00406165  |> 807C24 10 00          CMP BYTE PTR SS:[ESP+10],0
0040616A  |. 74 17                 JE SHORT FAXNOW.00406183
*略去无用行*
004061BF  |> 8B0424                MOV EAX,DWORD PTR SS:[ESP]
004061C2  |. 33D2                  XOR EDX,EDX
004061C4  |. 8910                  MOV DWORD PTR DS:[EAX],EDX
004061C6  |> 8B4424 08             MOV EAX,DWORD PTR SS:[ESP+8]
004061CA  |. 8B5424 0C             MOV EDX,DWORD PTR SS:[ESP+C]
004061CE  |. 83C4 14               ADD ESP,14
004061D1  |. 5D                    POP EBP
004061D2  |. 5F                    POP EDI
004061D3  |. 5E                    POP ESI
004061D4  |. 5B                    POP EBX
004061D5  \. C3                    RETN
=============================================================================
后记:通过30分钟跟踪,发现这个小软件的保护几乎相当于无,但我还是把过程随便写了一下。这个注册码的产生方法特别简单:

就是你输入的注册码变换为十六进制后除以一个常数1D2h,然后用得到的商减去另一个常数773B3h,然后余数跟686h比较,如果相

等,则注册成功!!所以反推一下即可。文章没有技术含量,让你浪费宝贵时间了!非常抱歉!
注册码=(773B3h+686h)*1D2h=228359106(十进制数)

结论:
注册码:
228359106

注册成功后,注册按钮为灰色,如果想再次注册,注意这个软件在注册表内写入如下键,删除这个键后又可以注册了。
HKLM\Software\CLASSES\CLSID\{1AE69D60-73D0-11D4-BD52-38A480C50000}\233131136

qduwg
[email]qduwg@163.com[/email]

2006年2月16日


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (25)
雪    币: 615
活跃值: (1267)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
第一次见到取CPU型号指令CPUID 学习了!。
2006-2-17 16:10
0
雪    币: 115
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
破解容易
似乎放出来的版本不是完全版
2006-2-17 16:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
已拜读大哥多篇好文了。
2006-2-17 16:43
0
雪    币: 475
活跃值: (1130)
能力值: ( LV9,RANK:1410 )
在线值:
发帖
回帖
粉丝
5
guokexin,你好,此软件的帮助里面的介绍说:这个软件还有一个安装版呢。我这里只有这个注册版。:)

xzchina,感谢支持啊。 我也是第一次见这样的指令呢。呵呵。

lschc  ,感谢支持和交流!:)

感谢看雪及各位斑竹的热情关照!!
2006-2-17 16:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我在2000下不能bpx hmemcpy
请说明一下解决问题
2006-2-17 19:14
0
雪    币: 417
活跃值: (475)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
7
最初由 geven 发布
我在2000下不能bpx hmemcpy
请说明一下解决问题


系统多装一个win98。
win2000下万能断点无效。
2006-2-17 19:32
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
5555555我的主板不支持98,正在研究CCDebuger的OD教程呢
呵呵~~
2006-2-17 21:14
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
9
呵呵,现在对万能断点已经很陌生了
2006-2-17 21:55
0
雪    币: 222
活跃值: (40)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
支持的顶一下
2006-2-17 23:27
0
雪    币: 475
活跃值: (1130)
能力值: ( LV9,RANK:1410 )
在线值:
发帖
回帖
粉丝
11
hao1geren,还有不支持98的主板??缺少98主板驱动程序吧??P4主板都支持98 啊。

现在的确OD比较流行了。但我认为SOFTICE也不见得就不流行。也很用的。萝卜白菜,各有所爱吧。我觉得OD不太好用。跟踪不深入。

感谢楼上各位的支持!
2006-2-18 16:05
0
雪    币: 21
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
SATA对win98的支持不好

我也是没有见过取CPUID的指令,想问问“qduwg”,这种指令是通过API实现?由于我对汇编很陌生,望指教? 谢了...
2006-2-18 16:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
涨见识了!!!!!!!!!!!!!!!1
2006-2-19 07:34
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
14
精彩,我看看了
2006-2-19 08:14
0
雪    币: 475
活跃值: (1130)
能力值: ( LV9,RANK:1410 )
在线值:
发帖
回帖
粉丝
15
Jockey,关于CPUID指令,我也不太熟悉。可能是特殊指令吧。
2006-2-19 15:07
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
最初由 qduwg 发布
hao1geren,还有不支持98的主板??缺少98主板驱动程序吧??P4主板都支持98 啊。

现在的确OD比较流行了。但我认为SOFTICE也不见得就不流行。也很用的。萝卜白菜,各有所爱吧。我觉得OD不太好用。跟踪不深入。

感谢楼上各位的支持!


呵呵,CPU是AMD64位的,说明书上明确标着不支持win98及其以前的操作系统。

萝卜白菜,各有所爱吧。引用一下,主要能分析出来的都是好工具,管他SI还是OD
2006-2-24 19:51
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
看到算法就头晕 还是强暴来的爽
2006-2-28 00:54
0
雪    币: 206
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习,认真学习!
2006-2-28 12:55
0
雪    币: 8
活跃值: (30)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
19
好,让我对程序的走向有了一个清晰的认识,还有些细节不是很清楚,你是如何知道此命令是实现此功能?盼下次能有一个比较详细的说明文章来。我想高手还是少数,是否。能让我们长知识不是坏事吧,我才学二三个月,简单的还行,还停留在爆破。还须努力学习。
2006-3-1 13:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
努力努力啊,
2006-3-17 17:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
学习了!!!
2006-3-17 19:05
0
雪    币: 206
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
谢谢提供学习资料!!!
2006-8-12 21:55
0
雪    币: 338
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
23
分析的好精彩!!膜拜一下!
2006-8-12 22:07
0
雪    币: 434
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
写得很清楚,适合我们这些菜鸟学习!
2006-8-13 16:12
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
看楼上的朋友都看懂了.我却还是莫名其妙!
新手不容易呀!!
2006-8-13 17:57
0
游客
登录 | 注册 方可回帖
返回
//