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 eax, eax
0046F58F . 75 4F jnz short Unpacked.0046F5E0
...........................................................
004731CE |. E8 A13FF9FF call <jmp.&advapi32.RegQueryV>; RegQueryValueExA 第三处中断开始读
004731D3 |. 85C0 test eax, eax "KeyName"
004731D5 |. 0F94C3 sete bl
004731D8 |. 8B0424 mov eax, dword 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 eax, eax
0040717C $- FF25 80B2B700 jmp dword ptr ds:[<&advapi32.>; ADVAPI32.RegSetValueExA
00407182 8BC0 mov eax, eax
00407184 $- FF25 F0B3B700 jmp dword ptr ds:[<&kernel32.>; kernel32.CloseHandle
0040718A 8BC0 mov eax, eax
堆栈窗口。
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 eax, eax
004731D5 |. 0F94C3 sete bl
004731D8 |. 8B0424 mov eax, dword 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 eax, eax 呵,到站了,在F9就飞了。
0040717C $- FF25 80B2B700 jmp dword ptr ds:[<&advapi32.>; ADVAPI32.RegSetValueExA
00407182 8BC0 mov eax, eax
00407184 $- FF25 F0B3B700 jmp dword ptr ds:[<&kernel32.>; kernel32.CloseHandle
0040718A 8BC0 mov eax, eax
0040718C $- FF25 ECB3B700 jmp dword ptr ds:[<&kernel32.>; kernel32.CompareStringA
00407192 8BC0 mov eax, eax
00407194 $- FF25 E8B3B700 jmp dword ptr ds:[<&kernel32.>; kernel32.CreateDirectoryA
0040719A 8BC0 mov eax, eax
堆栈窗口。
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 al, al 这里。
00473202 |. 74 06 je short Unpacked.0047320A
00473204 |. 8B4424 04 mov eax, dword 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 ebx, eax
00473256 |. 85DB test ebx, ebx
00473258 |. 7E 4F jle short Unpacked.004732A9 放心走,没那么快比较。
负杂程序要绕一些弯子,你程序跟踪多了,一眼就可以找到关键点。
....................................................
004732A9 |> 8BC7 mov eax, edi
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 eax, dword ptr ss:[ebp-34>
004F27B9 . 8D55 F0 lea edx, dword ptr ss:[ebp-10>
004F27BC . E8 5F69F1FF call Unpacked.00409120
004F27C1 . 33C0 xor eax, eax
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 eax, dword 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 edx, dword ptr ss:[ebp-40>
004F2802 . A1 18A2B600 mov eax, dword ptr ds:[B6A218>
004F2807 . E8 C466F1FF call Unpacked.00408ED0
004F280C . 8B45 C0 mov eax, dword ptr ss:[ebp-40>
004F280F . 8D55 C4 lea edx, dword 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 eax, dword 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 eax, dword 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 eax, dword ptr ss:[ebp-C]
004F28FA . 8B55 F0 mov edx, dword ptr ss:[ebp-10>
004F28FD . E8 5A25F1FF call Unpacked.00404E5C
004F2902 . 75 1C jnz short Unpacked.004F2920
004F2904 . 8D55 BC lea edx, dword ptr ss:[ebp-44>
004F2907 . A1 18A2B600 mov eax, dword 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 eax, dword ptr ss:[ebp-C] Eax中是注册重要信息,自己看。
004F299A . 8B55 F0 mov edx, dword 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 eax, dword ptr ds:[50607C]
004EE494 |. FF30 push dword ptr ds:[eax]
004EE496 |. 68 FCE54E00 push Unpacked.004EE5FC
004EE49B |. 8D45 F8 lea eax, dword ptr ss:[ebp-8]
004EE49E |. BA 04000000 mov edx, 4
004EE4A3 |. E8 3069F1FF call Unpacked.00404DD8
004EE4A8 |. 8B55 F8 mov edx, dword ptr ss:[ebp-8]
004EE4AB |. A1 E4A1B600 mov eax, dword 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 edx, dword 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 eax, dword ptr ss:[ebp-C]
004EE4E7 |. BA 04000000 mov edx, 4
004EE4EC |. E8 E768F1FF call Unpacked.00404DD8
004EE4F1 |. 8B55 F4 mov edx, dword ptr ss:[ebp-C]
004EE4F4 |. A1 E4A1B600 mov eax, dword 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 eax, dword 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 eax, eax
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 eax, dword 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 eax, dword ptr [$B6A1EC]
004EE88D E866F7FFFF call 004EDFF8
------------------------------------------------------------
用hiew修改 004EE85B 750D jnz 004EE86A
为
004EE85B 740D jz 004EE86A
实在想当正版用户,我们通过分析得知。
004F2997 . 8B45 F4 mov eax, dword 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 ebp, esp
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 eax, dword 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 ecx, dword ptr ss:[ebp-30]
004F276C . BA 282A4F00 mov edx, Unpacked.004F2A28 ; ASCII "Version"
004F2771 . 8B45 F8 mov eax, dword ptr ss:[ebp-8]
004F2774 . E8 C70AF8FF call Unpacked.00473240
004F2779 . 8B45 D0 mov eax, dword ptr ss:[ebp-30]
004F277C . 8D55 E8 lea edx, dword ptr ss:[ebp-18]
004F277F . E8 9C69F1FF call Unpacked.00409120
004F2784 . 33C0 xor eax, eax
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 ecx, dword ptr ss:[ebp-34]
004F27A9 . BA 382A4F00 mov edx, Unpacked.004F2A38 ; ASCII "Key"
004F27AE . 8B45 F8 mov eax, dword 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 eax, dword 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盘中某文件放到它默认的保存地址体验一下。