【破文标题】屏幕录像加密系统破解详细过程!
【破文作者】vipany
【作者邮箱】vipany@163.com
【作者主页】www.vipany.net
【破解工具】OD+EmEditor
【破解平台】windowsXP
【软件名称】屏幕录像加密系统
【软件大小】XX
【原版下载】http://www.tlxsoft.com/
【保护方式】购买
【软件简介】对新世纪网安,黑鹰,黑防,黑吧等黑客网站的vip教程加密!
【破解声明】对该加密系统的测试仅仅处于兴趣爱好,有不妥之处请联系本人删除!
------------------------------------------------------------------------
教程下载地址:http://bbs.vipany.net/showpic/crackvip.htm


【破解过程】游戏开始:

方法一:爆破
为了方便初学破解的朋友,提前做了下记录,大家只要按这个操作一步步来,绝对是可以成功的!
follow me! 

step1:

OD载入需要破解的教程,超级字符串参考,查找ASCLL直接CTRL+G跳到这个六个地方(为了节约时间,六处需要下断点的位置我已经写好了):

00416EEC---F2下断
004170AE---F2下断
00417137---F2下断

0040AB1B---F2下断
0040AB32---F2下断
0040AB68---F2下断

step2:
需要修改的地方:
00417114---JNZ改为JZ(目的是不让跳转实现!)
0040AB22---JE改为JMP(这里是关键跳,让他无条件跳转!)

step3:
需要注意的地方:
00417114---这个CALL需要F7跟进!
0040AB1B---这个地方我们第一步已经下好了断点,走到这里的时候,我们需要F7跟进去(破解里面常说的近CALL得跟进!)


此方法的不完美之处:
声音被破坏掉了,修复的办法:
用EmEditor(或者C32或者winhex,个人喜好问题)打开TEMP文件夹下的plzj.wav,如果你不知道plzj.wav在哪里,用windows自带的搜索功能搜索下可以找到!

替换前四排:
52 49 46 46 AA FE C6 01 57 41 56 45 66 6D 74 20
10 00 00 00 01 00 01 00 11 2B 00 00 22 56 00 00
02 00 10 00 64 61 74 61 86 FE C6 01 00 00 FE 00
FE FF
看操作!

没有修复前是无法播放的,修复后可以正常播放!


方法二:替换KEY
需要注册码大全的朋友可以到论坛会员交流区下载:

我们知道加密教程在每台电脑播放都会绑定一个机器码,分别是你电脑的CPU和网卡
替换KEY顾名思义就是让所有的机器用同一个机器码,这样我们就不需要研究他的算法了,屏幕录像加密系统对教程的每帧都进行了加密,就是说每张图片都有密码,
做他的算法注册机不是不可能,而是很困难!初步估计是背包加密形式,如果侥幸得到背包,那么算法注册机就不难制作了!

step1:弄清楚替换原理:nop掉教程获取机器码的算法,寻找新的零区域,用MOV赋值,为了简便,这里我们把相应的二进制代码直接复制进去
已知注册码(可以查找注册码大全 点击下载):
机器码=(此机器码有CPU机器码+MAC网卡机器码组成,两者采用了不同的算法)
用户名=
注册码= 

step2:观察CPU机器码获取处的算法
打开OD,清空UDD文件夹里面的内容
载入被加密的教程,ctrl+G,跳到0040A470,然后F2下断,shift+F9运行到此处,F7单步观察可以发现机器码出现的位置是12F118
在0040A489处机器码开始发生变化,此时EBP的值为12F54C,EBP-434=12F118  EBP-20=12F52C


0040A47D  |> \0FBE85 CCFBFFF>MOVSX EAX,BYTE PTR SS:[EBP-434]
0040A484  |.  83F8 30        CMP EAX,30
0040A487  |.  75 07          JNZ SHORT 录像3.0040A490
0040A489  |.  C685 CCFBFFFF >MOV BYTE PTR SS:[EBP-434],39   //EBP=12F54C,EBP-434=12F118,EBP-20=12F52C,得出计算结果
0040A490  |>  66:C745 E0 380>MOV WORD PTR SS:[EBP-20],38    //12F118上赋值字符串8.
0040A496  |.  8D95 CCFBFFFF  LEA EDX,DWORD PTR SS:[EBP-434]   //计算结果赋值给EDX

cpu机器码的获取算法结束的位置:0040A490
这里我们把CPU机器码的算法全部NOP掉,即NOP 0040A47D~0040A489
保存所有修改,文件另存!

jmp到零区域开始的地方写入代码:即jmp 004CFE1B
0040A490这里就是等下我们需要跳回去的地方,jmp 0040A490


寻找任意的零区域,可以事先用C32打开教程查找一下(要求足够写入以下代码)
CTRL+G跳到:004CFE1B  零区域开始的地方   把零区域上一句NOP掉
004CFE1B    C685 CCFBFFFF 39      mov byte ptr ss:[ebp-434],39
004CFE22    C685 CDFBFFFF 35      mov byte ptr ss:[ebp-433],35
004CFE29    C685 CEFBFFFF 31      mov byte ptr ss:[ebp-432],31
004CFE30    C685 CFFBFFFF 36      mov byte ptr ss:[ebp-431],36
004CFE37    C685 D0FBFFFF 32      mov byte ptr ss:[ebp-430],32
004CFE3E    C685 D1FBFFFF 33      mov byte ptr ss:[ebp-42F],33
004CFE45    C685 D2FBFFFF 33      mov byte ptr ss:[ebp-42E],33
004CFE4C    C685 D3FBFFFF 30      mov byte ptr ss:[ebp-42D],30
004CFE53    C685 D4FBFFFF 33      mov byte ptr ss:[ebp-42C],33
004CFE5A    C685 D5FBFFFF 30      mov byte ptr ss:[ebp-42B],30
004CFE61    C685 D6FBFFFF 32      mov byte ptr ss:[ebp-42A],32
004CFE68    C685 D7FBFFFF 37      mov byte ptr ss:[ebp-429],37
004CFE6F    C685 D8FBFFFF 30      mov byte ptr ss:[ebp-428],30
004CFE76    C685 D9FBFFFF 33      mov byte ptr ss:[ebp-427],33
004CFE7D    C685 DAFBFFFF 31      mov byte ptr ss:[ebp-426],31
004CFE84    C685 DBFBFFFF 30      mov byte ptr ss:[ebp-425],30
004CFE8B    C685 DCFBFFFF 35      mov byte ptr ss:[ebp-424],35
004CFE92    C685 DDFBFFFF 34      mov byte ptr ss:[ebp-423],34
004CFE99    C685 DEFBFFFF 30      mov byte ptr ss:[ebp-422],30
004CFEA0    C685 DFFBFFFF 31      mov byte ptr ss:[ebp-421],31
004CFEA7    90                    nop
004CFEA8  - E9 E3A5F3FF           jmp 去除自校.0040A490
004CFEAD    90                    nop



为了节约时间,不必一一填写,我们把以上代码对应的二进制语句进行二进制粘贴:

C6 85 CC FB FF FF 39 C6 85 CD FB FF FF 35 C6 85 CE FB FF FF 31 C6 85 CF FB FF FF 36 C6 85 D0 FB
FF FF 32 C6 85 D1 FB FF FF 33 C6 85 D2 FB FF FF 33 C6 85 D3 FB FF FF 30 C6 85 D4 FB FF FF 33 C6
85 D5 FB FF FF 30 C6 85 D6 FB FF FF 32 C6 85 D7 FB FF FF 37 C6 85 D8 FB FF FF 30 C6 85 D9 FB FF
FF 33 C6 85 DA FB FF FF 31 C6 85 DB FB FF FF 30 C6 85 DC FB FF FF 35 C6 85 DD FB FF FF 34 C6 85
DE FB FF FF 30 C6 85 DF FB FF FF 31 90 E9 E3 A5 F3 FF 90

保存所有修改,文件另存!

粘贴时注意:
尽可能的多选(宁可多不可以少,先估计下二进制语句占用的字节数)

jmp  0040A490 (原理:去掉CPU机器码的获取算法,跳到零区域用MOV语句强制赋值可以注册的CPU机器码,然后跳回去继续执行)
-------------------------------------------------------------------------------------------------------
step3:观察MAC网卡机器码获取处的算法:
ctrl+G,跳到004020C0,然后F2下断,shift+F9运行到此处,为什么断到这里?因为上面是循环算法,我们要跳过循环!

004020A3   . /EB 14         JMP SHORT crack.004020B9
004020A5   > |0FBE08        MOVSX ECX,BYTE PTR DS:[EAX]       //EAX=0012F4D4,12位数值的储存位置
004020A8   . |0FBE70 0A     MOVSX ESI,BYTE PTR DS:[EAX+A]
004020AC   . |03CE          ADD ECX,ESI
004020AE   . |D1F9          SAR ECX,1
004020B0   . |79 03         JNS SHORT crack.004020B5
004020B2   . |83D1 00       ADC ECX,0
004020B5   > |8808          MOV BYTE PTR DS:[EAX],CL
004020B7   . |42            INC EDX
004020B8   . |40            INC EAX
004020B9   > \8D4B F6       LEA ECX,DWORD PTR DS:[EBX-A]
004020BC   .  3BD1          CMP EDX,ECX
004020BE   .^ 7C E5         JL SHORT crack.004020A5
004020C0   .  C645 8E 00    MOV BYTE PTR SS:[EBP-72],0     //把第11位赋值00,以截取10位数,因为此MAC机器码只需要取10位。

其中004020A3~004020BE为MAC网卡机器码的获取过程,我们把这一段算法给NOP掉!
保存所有修改,文件另存!

然后找一个零区域,方法同上,这里我们找好了零区域开始的地方:004CFEBE
需要jmp跳回去继续执行的地方:004020C0    jmp 004020C0
写如一下代码(注意在写入代码之前把上一句NOP掉)
004CFEBE    36:C600 35            mov byte ptr ss:[eax],35
004CFEC2    36:C640 01 31         mov byte ptr ss:[eax+1],31
004CFEC7    36:C640 02 36         mov byte ptr ss:[eax+2],36
004CFECC    36:C640 03 34         mov byte ptr ss:[eax+3],34
004CFED1    36:C640 04 37         mov byte ptr ss:[eax+4],37
004CFED6    36:C640 05 39         mov byte ptr ss:[eax+5],39
004CFEDB    36:C640 06 32         mov byte ptr ss:[eax+6],32
004CFEE0    36:C640 07 39         mov byte ptr ss:[eax+7],39
004CFEE5    36:C640 08 35         mov byte ptr ss:[eax+8],35
004CFEEA    36:C640 09 37         mov byte ptr ss:[eax+9],37
004CFEEF    90                    nop
004CFEF0  - E9 CB21F3FF           jmp 去除自校.004020C0
004CFEF5    90                    nop


为了节约时间,不必一一填写,我们把以上代码对应的二进制语句进行二进制粘贴:
36 C6 00 35 36 C6 40 01 31 36 C6 40 02 36 36 C6 40 03 34 36 C6 40 04 37 36 C6 40 05 39 36 C6 40
06 32 36 C6 40 07 39 36 C6 40 08 35 36 C6 40 09 37 90 E9 CB 21 F3 FF 90
保存所有修改,文件另存!


粘贴时注意:
尽可能的多选(宁可多不可以少,先估计下二进制语句占用的字节数)
保存所有修改,文件另存!
-----------------------------------------------------------------------------------------------------




补充说明:
    网安,黑鹰,黑防,黑吧等目前采用的加密方式为第二代加密系统,而我们现在采用的加密系统是第三代,增加了对硬盘机器码的绑定,
机器码有40位,前20位是硬盘序列号和CPU硬件信息组合,第21-28位是网卡的序列号,第29-34是CPU信息。产生注册码只利用了前20位,即只利用了硬盘序列号和CPU信息,
如果硬盘和CPU没有变化,其它的硬件设备(包括网卡、主版等)改变,原来的注册码仍然可以使用。
    如果CPU变了,那么机器码的第29-34位会发生变化,机器码的第11-14位也会发生变化。如果硬盘没有变化,只有CPU变化时,机器码的1-10位和11-20位不会变化。
    如果硬盘变化,那么机器码前21位会变化,这时可以根据第29-34位的CPU信息和21-28位的网卡信息判断是只是换了硬盘还是换了电脑。一般情况下都可以得到硬盘的硬件码,
此码在没有换硬盘的情况下是不会改变的,格式化硬盘和重新安装操作系统都不会变。特殊情况下,有的硬盘没有硬件码(大概有1%的可能性),重新安装系统后,硬盘机器码可
能会改变,这时机器码的第17 18 19都是'9',这种特殊情况下,用户重新安装操作系统可能需要给换注册码(可以根据CPU和网卡信息判断是否只是重新安装了操作系统)。另外还
有一种特殊情况,就是机器码第17 18 19 20位如果都是6或者都是7的话,在一些特殊的情况下(1%左右可能性)重新安装系统后机器码也会变,同样可以根据CPU和网卡信息判断
是否只是重新安装了操作系统。
    后21-28位网卡序列号是网卡的硬件号,一般不会改变,可以辅助区分机器码改变的情况下,判断是否是原来的电脑换了硬盘。如果网卡序列号都是'0'或'9'表示无法获得网卡
序列号,那就不能用来做判断。

有兴趣的朋友可以和我们一起讨论QQ:624399654