找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3190|回复: 1
收起左侧

加密狗破解技巧数据代码分析!

[复制链接]
ID:461206 发表于 2019-1-24 19:03 | 显示全部楼层 |阅读模式
加密狗破解关键是200字节数据和狗变换,也就是2号功能和4号功能。和以前讨论过的R4狗一样,这个狗的API也是多功能函数,根据参数完成不同功能。此文重在讨论破解方法而不是具体怎么破解,所以不给出怎么找到狗操作的CALL地址以及相应数据地址方法。

首先我们看看GS-MH狗,这个狗的API定义如下:
所有数据都定义在MH_DLL_PARA中
typedefstruct _MH_DLL_PARA
{
  WORD  Command;  //命令码
  WORD Cascade;  //级联顺序号
  WORD DogAddr;  //首地址
  WORD DogBytes;  //操作字节数
  DWORD DogPassword;  //读写密码
  DWORD  DogResult;  //变换结果
  DWORD  NewPassword     //新密码
        BYTE   DogData[200];  //输入输出数据
}MH_DLL_PARA;


结构成员Command是命令码,定义如下
DogCheck  1  查狗
ReadDog    2  读狗
WriteDog  3  写狗
DogConvert  4  变换
GetCurrentNo  5  取流水号
EnableShare  6  允许共享
DisableShare  7  停止共享
SetDogCascade   8      设置级联码      
SetNewPassword  9      设置新密码
找到任何一个读狗的CALL,将DogAddr改为0,DogBytes改为200,读完狗在DogDat就可以得到200字的狗内数据,破解时将读狗操作转为查这个数据表就可以了。
关于4号功能,如果频繁使用,那一定加密程序中会有一个码表,如果使用不多,可以直接记录变换前后数据形成自己的码表。关于写狗等操作的处理相对简单,不再赘述。
当完成上述工作后,我们的破解程序一定是按照有狗时的流程在运行,而不会是被强行修改执行。简单举个例子,比如我的加密程序要用到一个公式:y=k*x+1,而加密者将常量K放到了狗中,调用公式前读狗,成功返回数据及一个标志,前文提到的爆破方法修改程序流程,必然导致得到错误的y值!

回复

使用道具 举报

ID:514110 发表于 2019-4-24 21:15 来自手机 | 显示全部楼层
没看懂。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表