金盾视频播放器2017S破解.doc_第1页
金盾视频播放器2017S破解.doc_第2页
金盾视频播放器2017S破解.doc_第3页
金盾视频播放器2017S破解.doc_第4页
金盾视频播放器2017S破解.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

金盾视频播放器2017S(Version 17.4)破解CodeLive 2014-06-051. 如何获取机器码?机器码分为4部分:1) 第1部分:4fd09读取注册表:HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystem项名: SystemBiosVersion比如我的机器:把0x0000换成分号”;”,比如为 : LENOVO 1370; 然后再转换为ASCII码,然后进行MD5,最后取前5个字符做为第1部分代码位置:2) 第2部分:f14c1读磁盘序列号:通过API CreateFileW打开.PhysicalDrive0设备,然后调用DeviceIoControl, IoControlCode = SMART_RCV_DRIVE_DATA来获取磁盘数据信息,获取和数据长度是0x210,然后取出110000000xxxx01序列号:和第1步同样先转换到ASCII码,然后计算MD5,再取前5个字符.代码位置:3) 第3部分:896e4读取注册表:HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystem项名: VideoBiosVersion 和 VideoBIOSDate然后把两部分加起来,用”;”分隔,同样是转换到ASCII码,然后计算MD5,再取前5个字符.代码位置:4) 第4部分:00000这部分是固定的为 00000最后把4部分用 ”-“拼接就组成了机器码.2. 破解方案?因为播放器播放视频是一机一码,因为已知一组机器码和对应的播放密码,那么我们就使用模拟机器码的方案进行破解,主要分2部分破解工作.1) 拦截注册表API:让每台机器获取的注册表和磁盘信息都一样,也就是返回固定的内容,也就是让3部分内容都返回我们给定的固定的内容.拦截的API是RegQueryValueExW,至于磁盘信息,则可以通过把DeviceIoControl的返回值判断部分爆破解决的,也就是jne改为je/jmp,让其判断结果出错,这样程序就会用空指针数据进行MD5计算.项名: SystemBiosVersion,值为:SystemBiosVersion (可以任意给定)项名: VideoBiosVersion,值为:VideoBiosVersion(可以任意给定)项名: VideoBIOSDate,值为:VideoBIOSDate(可以任意给定)把值设定为和项名一样的内容,这样便于我们跟踪调试,也可以给其他的值,只要是固定的就可以。2) 拦截MD5计算函数:这部分是对于我们设定的3部分内容在计算MD5值的时候,把它变为要模拟机器码的MD5数值.如果程序要计算 “SystemBiosVersion;”的MD5,那么我们就知道这是要计算第1部分机器码的MD5,此时只要我们返回模拟机器码的第1部分即可,其他部分也是同样的,如果不是我们的内容则要计算出正确的MD5.3. 代码分析已经确定了破解方案,就要仔细的进行代码跟踪分析,找到要爆破的位置.1) API RegQueryValueExW这个容易找到,前面也已经分析过,3个地址:0088FC79 . E8 1E49B8FF call 专用播放.0041459C ; RegQueryValueExW00890041 . E8 5645B8FF call 专用播放.0041459C ; RegQueryValueExW008900A0 . E8 F744B8FF call 专用播放.0041459C ; RegQueryValueExW2) MD5函数位置,这个可以有几种办法a) 通过设定内存访问断点的方法,一步一步确定MD5的计算函数b) 直接根据MD5算法的特征来查找代码:根据以上两个关键特征就可以很容易找到代码的位置,经过分析调用MD5计算的位置是:0076B9DA |. 8D55 EC lea edx,local.5 / edx存放输出MD5值的地址(16字节)0076B9DD |. 8B45 FC mov eax,local.1 / eax存储要计算MD5字符串的地址0076B9E0 |. E8 A7FEFFFF call 专用播放.0076B88C / 这个是计算MD5的函数4. DLL补丁程序编写建立一个DLL工程,我使用的是VC,任何版本都可以,写两个函数,1) 我们自己的RegQueryValueExW,代码如下:在这个我们自己的函数里,判断机器码3个项名,然后返回固定的内容,否则调用系统的函数处理2) 我们自己的MD5函数,代码如下:这部分就是模拟机器码的部分,判断要计算MD5的字符串内容,然后返回对应的机器码,因为只取前5个字符,所以我们只需要返回前3个字节即可,如果不是我们的内容则使用标准的MD5计算函数。3) 导致一个API,为了可以让程序加载,后面会用到:5. DLL程序加载补丁DLL程序写好了,如何加载到程序,这就要使用一个工具CFF Explorer让程序导入我们的api函数,然后“Rebuild Import Table”和保存即可,这样程序就在运行的时候加载我们的DLL补丁程序。6. 函数替换和代码补丁一般函数拦截或者替换可以通过API HOOK的办法,但这个金盾程序有反HOOK处理,所以不太好直接用,所以我们就使用对原程序打补丁的办法,直接改变call函数。1) 对3个call RegQueryValueExW的地方都修改为call我们的my_RegQueryValueExW0088FC79 . E8 5226770F call apijindu.100022D000890041 . E8 8A22770F call apijindu.100022D0008900A0 . E8 2B22770F call apijindu.100022D0这是其中一个代码的示例:2) 对DeviceIoControl调用函数返回值判断的修改,就是改75为74,也就是jne=je3) MD5函数的替换:这个要复杂很多,因为原md5计算是内部的函数,也没有参数,输入和输出分别是eax和edx,所以我们没办法直接改变原来的call到我们自己的my_MD5函数所以只能采取jmp跳转的办法,首先得找到一大片可以插入代码的内存地址,遗憾的是,没找到合适的位置,没办法,只能采取更暴力的办法,改写不会调用的代码内存,最后确

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论