• 标 题:再次分析坏盘拷贝
  • 作 者:David
  • 时 间:2003年12月14日 12:16
  • 链 接:http://bbs.pediy.com

BadCopy Pro V3.71.0727 汉化版破解分析                 
   
软件名称:

  BadCopy Pro V3.71.0727 汉化版
   
软件简介:
 
    BadCopy 软件可以在不需要人工干预的情况下帮您读出CD-ROM或磁盘上的坏文件。效果显著,还具有智能修复的功能,最大程度挽回您的损失。新增或加强了以下特别功能:1、优化的算法,保证修复拯救数据更快更全。2、支持文件夹直接复制,您甚至可以直接把整个逻辑盘完整复制到另一个文件夹下。3、可以自由定制BadCopy的各项纠错参数,保证能高效,最大限度的挽救您的宝贵数据。4、可以直接对隐含或系统文件进行操作。5、文件操作安全性增强,危险操作先行提示,避免不必要的损失。6、可以直接在BadCopy里面运行或打开程序。
   
下载地址:

  http://www.skycn.com/soft/3497.html
------------------------------------------------------------
   
破解作者:

  weiyi75[Dfcg]


破解工具:

  olldbg,AspackDie,peid,hiew,dede2.40b
   
破解目的:

  个性用户名,对抗Antidede程序。
   
------------------------------------------------------------
   
[破解过程]
   
     这个汉化版本的使用说明中已经含有注册码,好长啊,没数多少位,填入注册成功。标题是授权Id=Brought云云,看着好不舒服。这个注册码如果可以找出来,也很不错啊,实在不行就爆掉它。

     看注册表中它把注册信息写哪去了,作为破解爱好者不难找到位置在

[HKEY_CURRENT_USERSoftwareJufSoftBadCopy]
"ShowNotice"="FALSE"
"Key"="[8655115][ID=BROUGHT TO YOU BY ECLIPSE][JUFSOFT-BADCOPY]"
"KeyName"="ID=BROUGHT TO YOU BY ECLiPSE"

看到这里,实时比较估计不好跟踪,到是启动跟踪比较相对容易些。破解思路,删除原先的注册信息,爆破关键点,让程序授权给空用户,然后伪造一份注册信息到注册表中成为"合法用户"。像Vopt7.X,videofixer3.23
Crack版和我的方法类似,也不失为一种方法。你可能会问,追出注册码不比爆破好吗,下一版还可以用。是的,但一我跟不出注册码,二,这些软件的注册码作者每个版本的算法都不一样,三,在知识不够的情况下,但需要用这个软件爆破是捷径。启动时读取注册表中的值时,先读KeyName,再读Key的键值,读完开始分界。


详细过程:

    启动时读取注册表的必经之函数拦截非ADVAPI32中的RegQueryValueExA莫属。

开始,这里是从未输入过假用户名和假注册码的跟踪过程,即注册表中无注册信息,全都为空。

用Od载入程序,用插件隐藏Od.右键代码窗口-搜索-当前模块中的名称,就是输入表。找到

ADVAPI32.RegQueryValueExA   有两处,选第二处, 回车,

参考位于Unpacked:CODE 到 advapi32.RegQueryValueExA
地址       反汇编                                    注释
00407174   jmp dword ptr ds:[<&advapi32.RegQueryVal  ADVAPI32.RegQueryValueExA
0046F588   call <jmp.&advapi32.RegQueryValueExA>
004731CE   call <jmp.&advapi32.RegQueryValueExA>
0047334B   call <jmp.&advapi32.RegQueryValueExA>


找到这些调用,点右键在每个命令中下断点,因为我们暂时不清除哪个调用是关键Call,跟踪时自然明白。

F9运行程序,时刻观察堆栈窗口中的注册表中的键值。 慢慢按F9

0046F588    .  E8 E77BF9FF   call <jmp.&advapi32.RegQueryV>; RegQueryValueExA  第一处断点。
0046F58D    .  85C0          test eaxeax
0046F58F    .  75 4F         jnz short Unpacked.0046F5E0
...........................................................



004731CE   |.  E8 A13FF9FF   call <jmp.&advapi32.RegQueryV>; RegQueryValueExA  第三处中断开始读
004731D3   |.  85C0          test eaxeax                      "KeyName"
004731D5   |.  0F94C3        sete bl
004731D8   |.  8B0424        mov eaxdword ptr ss:[esp]
004731DB   |.  E8 78FBFFFF   call Unpacked.00472D58
..........................................................

堆栈窗口。

0012FD14   004F2A08  |ValueName = "KeyName"
0012FD18   00000000  |Reserved = NULL  注册表中什么信息也没有输,Keyname不存在。
0012FD1C   0012FD28  |pValueType = 0012FD28
0012FD20   00000000  |Buffer = NULL
0012FD24   0012FD44  pBufSize = 0012FD44
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

00407174    $- FF25 84B2B700 jmp dword ptr ds:[<&advapi32.>;  ADVAPI32.RegQueryValueExA  F9
0040717A       8BC0          mov eaxeax
0040717C    $- FF25 80B2B700 jmp dword ptr ds:[<&advapi32.>;  ADVAPI32.RegSetValueExA
00407182       8BC0          mov eaxeax
00407184    $- FF25 F0B3B700 jmp dword ptr ds:[<&kernel32.>;  kernel32.CloseHandle
0040718A       8BC0          mov eaxeax

堆栈窗口。

0012FD0C   004731D3  /CALL 到 RegQueryValueExA 来自 Unpacked.004731CE
0012FD10   00000090  |hKey = 90
0012FD14   004F2A08  |ValueName = "KeyName"  读取完毕keyname,无内容啊。
0012FD18   00000000  |Reserved = NULL
0012FD1C   0012FD28  |pValueType = 0012FD28
0012FD20   00000000  |Buffer = NULL
0012FD24   0012FD44  pBufSize = 0012FD44
...........................................................

F9几次,到了

004731CE   |.  E8 A13FF9FF   call <jmp.&advapi32.RegQueryV>; RegQueryValueExA
004731D3   |.  85C0          test eaxeax         
004731D5   |.  0F94C3        sete bl
004731D8   |.  8B0424        mov eaxdword ptr ss:[esp]
004731DB   |.  E8 78FBFFFF   call Unpacked.00472D58

堆栈窗口。

0012FD10   00000090  |hKey = 90
0012FD14   004F2A38  |ValueName = "Key" 开始读Key
0012FD18   00000000  |Reserved = NULL    注册表中什么信息也没有输,Key不存在。
0012FD1C   0012FD28  |pValueType = 0012FD28   
0012FD20   00000000  |Buffer = NULL
0012FD24   0012FD44  pBufSize = 0012FD44
0012FD28   0012FD40
0012FD2C   004F2A38  ASCII "Key"
..........................................................


00407174    $- FF25 84B2B700 jmp dword ptr ds:[<&advapi32.>;  ADVAPI32.RegQueryValueExA
0040717A       8BC0          mov eaxeax   呵,到站了,在F9就飞了。
0040717C    $- FF25 80B2B700 jmp dword ptr ds:[<&advapi32.>;  ADVAPI32.RegSetValueExA
00407182       8BC0          mov eaxeax
00407184    $- FF25 F0B3B700 jmp dword ptr ds:[<&kernel32.>;  kernel32.CloseHandle
0040718A       8BC0          mov eaxeax
0040718C    $- FF25 ECB3B700 jmp dword ptr ds:[<&kernel32.>;  kernel32.CompareStringA
00407192       8BC0          mov eaxeax
00407194    $- FF25 E8B3B700 jmp dword ptr ds:[<&kernel32.>;  kernel32.CreateDirectoryA
0040719A       8BC0          mov eaxeax

堆栈窗口。

0012FD0C   004731D3  /CALL 到 RegQueryValueExA 来自 Unpacked.004731CE
0012FD10   00000090  |hKey = 90
0012FD14   004F2A38  |ValueName = "Key"
0012FD18   00000000  |Reserved = NULL   读取完毕key,任无内容啊,郁闷,程序说的。
0012FD1C   0012FD28  |pValueType = 0012FD28
0012FD20   00000000  |Buffer = NULL
0012FD24   0012FD44  pBufSize = 0012FD44
0012FD28   0012FD40
0012FD2C   004F2A38  ASCII "Key"

.............................................................

读取注册表键值完毕,程序即将开始比较结果,现在Alt+B取消所有断点,从系统领空中回到程序中去,ADVAPI32只负责读取注册表,比较真伪可不是它的工作。

Ctrl+F9


77DA24F7     C2 1800         retn 18
77DA24FA     397D 1C         cmp dword ptr ss:[ebp+1C], ed>
77DA24FD     0F84 5CF50000   je ADVAPI32.77DB1A5F
77DA2503   ^ E9 29FFFFFF     jmp ADVAPI32.77DA2431
77DA2508     3955 18         cmp dword ptr ss:[ebp+18], ed>
77DA250B   ^ 0F84 A6FEFFFF   je ADVAPI32.77DA23B7
77DA2511     837D 08 01      cmp dword ptr ss:[ebp+8], 1
77DA2515     0F85 DB000000   jnz ADVAPI32.77DA25F6
......................................................

Ctrl+F9

004731EA   .  C3            retn
004731EB       90            nop
004731EC   /$  53            push ebx
004731ED   |.  56            push esi

F8

回家

00473200   |.  84C0          test alal   这里。
00473202   |.  74 06         je short Unpacked.0047320A
00473204   |.  8B4424 04     mov eaxdword ptr ss:[esp+4]
00473208   |.  EB 03         jmp short Unpacked.0047320D
0047320A   |> 83C8 FF       or eax, FFFFFFFF
0047320D   |>  59            pop ecx
0047320E   |.  5A            pop edx
0047320F   |.  5E            pop esi
00473210   |.  5B            pop ebx
00473211   .  C3            retn



00473254   |.  8BD8          mov ebxeax
00473256   |.  85DB          test ebxebx
00473258   |.  7E 4F         jle short Unpacked.004732A9  放心走,没那么快比较。

负杂程序要绕一些弯子,你程序跟踪多了,一眼就可以找到关键点。

....................................................
004732A9   |> 8BC7          mov eaxedi
004732AB   |.  E8 B017F9FF   call Unpacked.00404A60
004732B0   |>  5A            pop edx
004732B1   |.  5D            pop ebp
004732B2   |.  5F            pop edi
004732B3   |.  5E            pop esi
004732B4   |.  5B            pop ebx
004732B5   .  C3            retn


004F27B6    .  8B45 CC       mov eaxdword ptr ss:[ebp-34>
004F27B9    .  8D55 F0       lea edxdword ptr ss:[ebp-10>
004F27BC    .  E8 5F69F1FF   call Unpacked.00409120
004F27C1    .  33C0          xor eaxeax
004F27C3    .  5A            pop edx
004F27C4    .  59            pop ecx
004F27C5    .  59            pop ecx
004F27C6    .  64:8910       mov dword ptr fs:[eax], edx
004F27C9    .  EB 0A         jmp short Unpacked.004F27D5

004F27D5    > 68 442A4F00   push Unpacked.004F2A44
004F27DA    .  6A 00         push 0
004F27DC    .  68 B8000000   push 0B8
004F27E1    .  B0 03         mov al, 3
004F27E3    .  E8 EC75F1FF   call Unpacked.00409DD4
004F27E8    .  E8 6733F1FF   call Unpacked.00405B54
004F27ED    .  52            push edx                      ; /Arg2
004F27EE    .  50            push eax                      ; |Arg1
004F27EF    .  8D45 C8       lea eaxdword ptr ss:[ebp-38>; |
004F27F2    .  E8 756BF1FF   call Unpacked.0040936C        ; Unpacked.0040936C
004F27F7    .  FF75 C8       push dword ptr ss:[ebp-38]
004F27FA    .  68 502A4F00   push Unpacked.004F2A50        ;  ASCII "]["
004F27FF    .  8D55 C0       lea edxdword ptr ss:[ebp-40>
004F2802    .  A1 18A2B600   mov eaxdword ptr ds:[B6A218>
004F2807    .  E8 C466F1FF   call Unpacked.00408ED0
004F280C    .  8B45 C0       mov eaxdword ptr ss:[ebp-40>
004F280F    .  8D55 C4       lea edxdword ptr ss:[ebp-3C>
004F2812    .  E8 0969F1FF   call Unpacked.00409120
004F2817    .  FF75 C4       push dword ptr ss:[ebp-3C]
004F281A    .  68 5C2A4F00   push Unpacked.004F2A5C
004F281F    .  68 682A4F00   push Unpacked.004F2A68        ;  ASCII "[JUFSOFT-BADCOPY]"
004F2824    .  8D45 F4       lea eaxdword ptr ss:[ebp-C]
004F2827    .  BA 06000000   mov edx, 6
004F282C    .  E8 A725F1FF   call Unpacked.00404DD8
004F2831    .  B3 01         mov bl, 1
004F2833    .  A1 18A2B600   mov eaxdword ptr ds:[B6A218>
004F2838    .  E8 DB24F1FF   call Unpacked.00404D18
004F283D    .  83F8 05       cmp eax, 5
004F2840    .  0F8E B1000000 jle Unpacked.004F28F7

004F28F7    > 8B45 F4       mov eaxdword ptr ss:[ebp-C]  
004F28FA    .  8B55 F0       mov edxdword ptr ss:[ebp-10>  
004F28FD    .  E8 5A25F1FF   call Unpacked.00404E5C   
004F2902    .  75 1C         jnz short Unpacked.004F2920  
                                                           
004F2904    .  8D55 BC       lea edxdword ptr ss:[ebp-44>
004F2907    .  A1 18A2B600   mov eaxdword ptr ds:[B6A218>
004F290C    .  E8 0F68F1FF   call Unpacked.00409120
004F2911    .  837D BC 00    cmp dword ptr ss:[ebp-44], 0
004F2915    .  74 09         je short Unpacked.004F2920
004F2917    .  C745 FC 05270>mov dword ptr ss:[ebp-4], 270>
004F291E    .  EB 05         jmp short Unpacked.004F2925

004F2981    .  E8 A687F1FF   call Unpacked.0040B12C
004F2986    .  DD5D B4       fstp qword ptr ss:[ebp-4C]
004F2989    .  9B            wait
004F298A    .  E8 6189F1FF   call Unpacked.0040B2F0
004F298F    .  DC5D B4       fcomp qword ptr ss:[ebp-4C]
004F2992    .  DFE0          fstsw ax
004F2994    .  9E            sahf
004F2995    .  76 19         jbe short Unpacked.004F29B0
004F2997    .  8B45 F4       mov eaxdword ptr ss:[ebp-C]         Eax中是注册重要信息,自己看。
004F299A    .  8B55 F0       mov edxdword ptr ss:[ebp-10]        我们没有输入Key的假键值
004F299D    .  E8 BA24F1FF   call Unpacked.00404E5C
004F29A2    .  74 0C         je short Unpacked.004F29B0
004F29A4    .  6A 0A         push 0A                           ; /Timeout = 10. ms
004F29A6    .  E8 41BCF1FF   call <jmp.&kernel32.Sleep>        ; Sleep
....................................................................


004EE47D   |.  83C0 0B       add eax, 0B
004EE480   |.  3D 10270000   cmp eax, 2710
004EE485       75 40         jnz short Unpacked.004EE4C7  开始分界了,跳走就授权给你了。爆破点。
004EE487   |.  FF75 FC       push dword ptr ss:[ebp-4]        必须跳走,飞向明教光明顶。
004EE48A   |.  68 E8E54E00   push Unpacked.004EE5E8
004EE48F   |.  A1 7C605000   mov eaxdword ptr ds:[50607C]
004EE494   |.  FF30          push dword ptr ds:[eax]
004EE496   |.  68 FCE54E00   push Unpacked.004EE5FC
004EE49B   |.  8D45 F8       lea eaxdword ptr ss:[ebp-8]
004EE49E   |.  BA 04000000   mov edx, 4
004EE4A3   |.  E8 3069F1FF   call Unpacked.00404DD8
004EE4A8   |.  8B55 F8       mov edxdword ptr ss:[ebp-8]
004EE4AB   |.  A1 E4A1B600   mov eaxdword ptr ds:[B6A1E4]
004EE4B0   |.  E8 AB23F6FF   call Unpacked.00450860

....................................................................



004EE4C7   |> FF75 FC       push dword ptr ss:[ebp-4]         ;  Unpacked.004EE5C0
004EE4CA   |.  68 08E64E00   push Unpacked.004EE608
004EE4CF   |.  8D55 F0       lea edxdword ptr ss:[ebp-10]
004EE4D2   |.  B8 94CF4E00   mov eax, Unpacked.004ECF94
004EE4D7   |.  E8 D088F1FF   call Unpacked.00406DAC
004EE4DC   |.  FF75 F0       push dword ptr ss:[ebp-10]
004EE4DF   |.  68 FCE54E00   push Unpacked.004EE5FC
004EE4E4   |.  8D45 F4       lea eaxdword ptr ss:[ebp-C]
004EE4E7   |.  BA 04000000   mov edx, 4
004EE4EC   |.  E8 E768F1FF   call Unpacked.00404DD8
004EE4F1   |.  8B55 F4       mov edxdword ptr ss:[ebp-C]
004EE4F4   |.  A1 E4A1B600   mov eaxdword ptr ds:[B6A1E4]
004EE4F9   |.  E8 6223F6FF   call Unpacked.00450860

打上评估版本的标记。

破解小结:
            
双击  004EE485   这行   jnz short Unpacked.004EE4C7

直接修改为  jz short Unpacked.004EE4C7  编汇编按钮,关闭。


右键代码窗口-复制到可执行程序-全部修正-复制。

然后在新窗口中右键-保存文件,Badcopyc.exe.

运行程序,爆破成功,授权人是谁呢?


伪造注册用户信息,keyname可个性话。

REGEDIT4

[HKEY_CURRENT_USERSoftwareJufSoftBadCopy]
"ShowNotice"="FALSE"
"Key"="999999999999999999999999999999"
"KeyName"=" 给weiyi75"


保存为user.reg,加入注册表,完工,比正版用户如何。

这篇文章我觉得很像脱壳啊,受Fly影响了,另外算法,管它是rsa还是brofish算法,可不是weiyi75的事。


谢谢大家耐心看完!

补充,虽然软件叫Badcopy,不过好盘一样可以copy.选择硬盘中的某文件恢复,到最后一步提示你是评估版,无法保存结果,必须在线注册。怒!和我猫腻,我吃定你了。

用Dede3.0反编译程序,停止响应???你的是不是这样,Antidede,谁让Dede公开代码的呢,看!不过我还有一个必杀Dede版本----------------------Dede2.40beta版本,根本不运行程序就开始反编译,你如何Anti???超酷!


反编译后如果你有一些汉化的经验就更好,至少应该对Dephi资源有些概念。

点Procedures标签,

在mainunit处点一下,再点BNextClick

***** TRY
|
004EE7B2   64FF30                 push    dword ptr fs:[eax]
004EE7B5   648920                 mov     fs:[eax], esp
004EE7B8   8B45FC                 mov     eax, [ebp-$04]
004EE7BB   E8F81D0000             call    004F05B8
004EE7C0   8D55EC                 lea     edx, [ebp-$14]
004EE7C3   8B45FC                 mov     eax, [ebp-$04]

* Possible reference to control 'MainNote':TNotebook
|
004EE7C6   8B805C030000           mov     eax, [eax+$035C]
004EE7CC   E8176BF5FF             call    004452E8
004EE7D1   8B45EC                 mov     eax, [ebp-$14]

* Possible String Reference to: "SaveFile"  保存文件
|
004EE7D4   BA74EE4E00             mov     edx, $004EEE74
004EE7D9   E87E66F1FF             call    00404E5C
004EE7DE   0F857D010000           jnz     004EE961
004EE7E4   A1BC5D5000             mov     eaxdword ptr [$505DBC]
004EE7E9   803800                 cmp     byte ptr [eax], $00
004EE7EC   750D                   jnz     004EE7FB
004EE7EE   8B45FC                 mov     eax, [ebp-$04]
004EE7F1   E85E1C0000             call    004F0454
004EE7F6   E90F060000             jmp     004EEE0A
004EE7FB   8D55E4                 lea     edx, [ebp-$1C]
004EE7FE   8B45FC                 mov     eax, [ebp-$04]

* Possible reference to control 'ESaveFile':TEdit
|
004EE801   8B8098040000           mov     eax, [eax+$0498]
004EE807   E82420F6FF             call    00450830
004EE80C   8B45E4                 mov     eax, [ebp-$1C]
004EE80F   8D55E8                 lea     edx, [ebp-$18]
004EE812   E809A9F1FF             call    00409120
004EE817   837DE800               cmp     dword ptr [ebp-$18], +$00
004EE81B   751A                   jnz     004EE837
004EE81D   8D55E0                 lea     edx, [ebp-$20]
004EE820   B89CCF4E00             mov     eax, $004ECF9C
004EE825   E88285F1FF             call    00406DAC
004EE82A   8B45E0                 mov     eax, [ebp-$20]
004EE82D   E8C6B7F5FF             call    00449FF8
004EE832   E9D3050000             jmp     004EEE0A
004EE837   E8B4CAF1FF             call    0040B2F0
004EE83C   D81D80EE4E00           fcomp   dword ptr [$4EEE80]
004EE842   DFE0                   fstsw   ax
004EE844   9E                     sahf
004EE845   7223                   jb      004EE86A
004EE847   8B157C605000           mov     edx, [$50607C]
004EE84D   8B12                   mov     edx, [edx]  取标题名字,我的是给weiyi75

* Possible String Reference to: "ID="  猫腻点。
|
004EE84F   B88CEE4E00             mov     eax, $004EEE8C   和ID=字符
004EE854   E8FB67F1FF             call    00405054  比较第一处字符是ID=开始的吗?
004EE859   85C0                   test    eaxeax
004EE85B   750D                   jnz     004EE86A  爆破点,修改让它再次飞向明教光明顶。
004EE85D   8B45FC                 mov     eax, [ebp-$04]
004EE860   E8EF1B0000             call    004F0454  评估限制出现
004EE865   E9A0050000             jmp     004EEE0A
004EE86A   66BA0500               mov     dx, $0005
004EE86E   A1ECA1B600             mov     eaxdword ptr [$B6A1EC]
004EE873   E8C8F6FFFF             call    004EDF40
004EE878   8D55DC                 lea     edx, [ebp-$24]
004EE87B   B8A4CF4E00             mov     eax, $004ECFA4
004EE880   E82785F1FF             call    00406DAC
004EE885   8B55DC                 mov     edx, [ebp-$24]
004EE888   A1ECA1B600             mov     eaxdword ptr [$B6A1EC]
004EE88D   E866F7FFFF             call    004EDFF8

   
------------------------------------------------------------

用hiew修改  004EE85B   750D  jnz     004EE86A 
 


004EE85B   740D                   jz     004EE86A 



实在想当正版用户,我们通过分析得知。



004F2997    .  8B45 F4       mov eaxdword ptr ss:[ebp-C]         Eax中是注册重要信息,自己看。

再次用Od拦截看到 [8655115][ID=给WEIYI75][JUFSOFT-BADCOPY]  是个固定格式,中间是授权人名。

将keyname  给WEIYI75转为大写,在对本上面的猫腻分析,知道结果如下。

再次用计事本新建一个User.reg,内容如下。

REGEDIT4

[HKEY_CURRENT_USERSoftwareJufSoftBadCopy]
"ShowNotice"="FALSE"
"Key"="[8655115][ID=给WEIYI75][JUFSOFT-BADCOPY]"
"KeyName"="ID=给weiyi75"



这个是仿正版reg注册文件。

导入后仍然是评估版本,跟进

004EE473   |.  E8 8066F1FF   call Unpacked.00404AF8
004EE478   |.  E8 BF410000   call Unpacked.004F263C  F7跟进去看看
004EE47D   |.  83C0 0B       add eax, 0B
004EE480   |.  3D 10270000   cmp eax, 2710
004EE485       75 40         jnz short Unpacked.004EE4C7



004F263C    $  55            push ebp  到这里。
004F263D    .  8BEC          mov ebpesp
004F263F    .  B9 09000000   mov ecx, 9
004F2644    >  6A 00         push 0
004F2646    .  6A 00         push 0
004F2648    .  49            dec ecx
004F2649    .^ 75 F9         jnz short Unpacked.004F264
.............................................

里面比较了keyname,key,version


004F26C9    .  BA 082A4F00   mov edx, Unpacked.004F2A08        ;  ASCII "KeyName"
004F26CE    .  8B45 F8       mov eaxdword ptr ss:[ebp-8]
004F26D1    .  E8 6A0BF8FF   call Unpacked.00473240


004F275E    .  68 8E274F00   push Unpacked.004F278E
004F2763    .  64:FF30       push dword ptr fs:[eax]
004F2766    .  64:8920       mov dword ptr fs:[eax], esp
004F2769    .  8D4D D0       lea ecxdword ptr ss:[ebp-30]
004F276C    .  BA 282A4F00   mov edx, Unpacked.004F2A28        ;  ASCII "Version"
004F2771    .  8B45 F8       mov eaxdword ptr ss:[ebp-8]
004F2774    .  E8 C70AF8FF   call Unpacked.00473240
004F2779    .  8B45 D0       mov eaxdword ptr ss:[ebp-30]
004F277C    .  8D55 E8       lea edxdword ptr ss:[ebp-18]
004F277F    .  E8 9C69F1FF   call Unpacked.00409120
004F2784    .  33C0          xor eaxeax
004F2786    .  5A            pop edx
004F2787    .  59            pop ecx
004F2788    .  59            pop ecx
004F2789    .  64:8910       mov dword ptr fs:[eax], edx



004F279B    .  68 CB274F00   push Unpacked.004F27CB
004F27A0    .  64:FF30       push dword ptr fs:[eax]
004F27A3    .  64:8920       mov dword ptr fs:[eax], esp
004F27A6    .  8D4D CC       lea ecxdword ptr ss:[ebp-34]
004F27A9    .  BA 382A4F00   mov edx, Unpacked.004F2A38        ;  ASCII "Key"
004F27AE    .  8B45 F8       mov eaxdword ptr ss:[ebp-8]
004F27B1    .  E8 8A0AF8FF   call Unpacked.00473240


004F2838    .  E8 DB24F1FF   call Unpacked.00404D18  这里不能跳走,应为程序发现几处键值都是空
004F283D    .  83F8 05       cmp eax, 5           要给你打评估版本标记了。
004F2840    .  0F8E B1000000 jle Unpacked.004F28F7
004F2846    .  8B45 E8       mov eaxdword ptr ss:[ebp-18]
004F2849    .  BA 842A4F00   mov edx, Unpacked.004F2A84        ;  ASCII "3.71.0727"
004F284E    .  E8 0926F1FF   call Unpacked.00404E5C  这个就是Version注册键值。


结果如下:


REGEDIT4

[HKEY_CURRENT_USERSoftwareJufSoftBadCopy]
"ShowNotice"="FALSE"
"Key"="[8655115][ID=给WEIYI75][JUFSOFT-BADCOPY]"
"KeyName"="ID=给weiyi75"
"Version"="3.71.0727"


这个是完全仿正版reg注册文件。




破解版,必须修改以下两处跳转。


004EE485 
 

004EE85B  



破解版的Key如下。key和keyname可任意填。

REGEDIT4

[HKEY_CURRENT_USERSoftwareJufSoftBadCopy]
"ShowNotice"="FALSE"
"Key"="99999999999999999999999999999"
"KeyName"="给weiyi75"


再次感谢大家看完,请大家运行badcopy选择媒介或其它驱动器,如d盘中某文件放到它默认的保存地址体验一下。