首页
社区
课程
招聘
彩虹狗GS-MH破解-浅谈狗的破解方法
发表于: 2005-1-12 16:52 15789

彩虹狗GS-MH破解-浅谈狗的破解方法

2005-1-12 16:52
15789

看过网上多篇关于软件狗破解的文章,虽不乏精品,但大多是属于找到出错对话框,想办法跳过之类文章,实在缺乏技术含量,且有误人之嫌。软件狗不是这样解的!这样的破解首先有两大问题,第一:软件是否在按有狗流程运行?第二:软件狗数据丢失。

    我们先看看彩虹GS-MH狗,这个狗的API定义如下:

所有数据都定义在MH_DLL_PARA中
typedef struct _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       设置新密码

破解关键是200字节数据和狗变换,也就是2号功能和4号功能。和以前讨论过的R4狗一样,这个狗的API也是多功能函数,根据参数完成不同功能。此文重在讨论破解方法而不是具体怎么破解,所以不给出怎么找到狗操作的CALL地址以及相应数据地址方法。

找到任何一个读狗的CALL,将DogAddr改为0,DogBytes改为200,读完狗在DogDat就可以得到200字的狗内数据,破解时将读狗操作转为查这个数据表就可以了。

关于4号功能,如果频繁使用,那一定加密程序中会有一个码表,如果使用不多,可以直接记录变换前后数据形成自己的码表。

关于写狗等操作的处理相对简单,不再赘述。

当完成上述工作后,我们的破解程序一定是按照有狗时的流程在运行,而不会是被强行修改执行。

简单举个例子,比如我的加密程序要用到一个公式:y=k*x+1,而加密者将常量K放到了狗中,调用公式前读狗,成功返回数据及一个标志,前文提到的爆破方法修改程序流程,必然导致得到错误的y值!

    所以对软件狗的破解,了解其API是绝对第一重要的,在API中能看到程序与狗的数据交换。(除外S4,R5这些将程序放到狗中执行的新一代加密狗),追踪到狗操作的API,整理出(或者无狗时猜测出)重要的数据,完全仿真API操作,这才是我认为软件狗的破解方法。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 9
支持
分享
最新回复 (26)
雪    币: 225
活跃值: (146)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
第一个顶......使劲学......谢过了.......
2005-1-12 17:09
0
雪    币: 84
活跃值: (710)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
彩虹狗是比较令人头痛的(拿最新的3.4版来说)
1、狗外壳保护做得很好,无狗很难脱壳,有狗脱壳虽然不难,但是iat很难修复,无法跨平台甚至是跨机器使用。
2、大量的花指令比较烦人。
3、虽然有api,但是读狗子程序还是不容易找到
4、读狗的参数(即楼主说的 MH_DLL_PARA)在程序中存放的位置很难找,请楼主介绍一下经验。谢谢!
  我虽然解过4套彩虹狗软件,但都是带狗破解。有一个还修复不了iat。碰到过两套无法解的,有一套是外壳(多重壳,最里面一层是狗外壳)脱掉后无法修复运行(郁闷!);还有一套是找不到读狗函数。
请楼主多多指教!
:) :)
2005-1-12 17:10
0
雪    币: 1141
活跃值: (880)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
1、狗外壳:确实狗外壳做得比较好,IAT也很难修复,我自己也有一个不能修复的:),不过nig现在已经有很好的办法处理,现在还不便公开。
2、一切花指令都是纸老虎!
3、当你来到花指令时,读狗子程序就在你面前了
4、MH_DLL_PARA在有些时候会定义成全局变量,这时就麻烦一点。不过在驱动中还是以这个数据结构的形式存在的。
2005-1-12 17:28
0
雪    币: 463
活跃值: (116)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
狗壳不是很早就已经搞定了呀,很早就没有讨论了,问题是返回密码的地方,不过NIG兄早就已经搞定了。
2005-1-12 17:36
0
雪    币: 97697
活跃值: (200824)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习!!!
2005-1-12 18:03
0
雪    币: 133
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
强。。。。。。。。。。
2005-1-12 18:05
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
8
完全仿真API操作,这才是我认为软件狗的破解方法。

====
只有这一句我觉的是正道,其他的原谅我-----都没有什么价值.
2005-1-12 18:35
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
9
每种狗的接口API不是固定的,而这些接口的原型是需要我们去摸索的,(假如你已经熟悉了各种狗的开发SDK那是另当别论).

我们的目的就是"欺骗"----没错,就是欺骗调用者,偷梁换柱,瞒天过海.
2005-1-12 18:38
0
雪    币: 1141
活跃值: (880)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
10
“完全仿真API操作,这才是我认为软件狗的破解方法。”

这也是我唯一想说明的东西,其它不过是例证而已,本来就没多大价值。真正有价值的是你通过学习别人的方法,积累经验,开发出自己的产品。
2005-1-12 18:53
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
11
真正有价值的是你通过学习别人的方法,积累经验,开发出自己的产品

===========
赞同,其实都是一个道理.轮回的更新来不断的发展.
2005-1-12 19:00
0
雪    币: 159
活跃值: (89)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
看到那么多的大侠拿出看家本事,真是高兴,支持大侠多发表点作品,哈哈
2005-1-12 22:31
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
彩虹3.4狗壳可以无狗脱掉的。1推算出密钥这个留个还是nig的活2完整的脱掉狗壳修复iat和其它暗桩也是可以的,还有壳的代码注入,认真研究也行的。
修改接口和驱动也是不错的方法比较治本,仿真了。
彩虹3.4硬复制也可以。
2005-1-13 08:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ZQH
14
学习.学习
2005-1-13 15:08
0
雪    币: 1141
活跃值: (880)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
15
彩虹狗确实在硬件设计和软件设计上漏洞百出,它的狗也是国内最容易硬复制的。固件加密及通讯部分太简单。
2005-1-14 00:01
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
一个用FoxPro编写的软件破解问题
一个用FoxPro编写的软件破解问题

按大侠们的方法,脱壳反编译后,得主文件,打开如下:
with _screen
   .caption = "XX软件,完美服务"
   .backcolor = RGB(255,255,255)
   .icon = "ty.ico"
   .closable = .f.
   windowstate = 2
endwith
set talk off
close all
set escape off
set optimize on
set safety off
set sysmenu off
set display to cga
set cursor off
set exact on
set help on
set default to \XTY04YB
do huifu
aa_1 = "0"
use begin
goto 1
if BEGIN = "0"
   @ 10,5 say "                本程序已经运行,或上一次运行时中间不正常退出,"  font "宋体",10
   @ 11,5 say "            如果已经运行请按'0'退出本次运行 否则按'1'继续运行"  font "宋体",10 color  rgb(255,0,0,),,,  get aa_1
   @ 12,5 say "       这个情况大部分是由于程序已经运行,您如果没法判断可以先退出试试"  font "宋体",10
   @ 14,5 say "***一般多次运行是由于操作过急,多次点图标,所以操作时双击图标后稍等一下***"  font "宋体",10
   read
   if AA_1 = "0"
      quit
   endif
endif
goto 1
replace begin with "0"
if  not FILE("CP.DBF")
   use \XTY04YB\BACKFILE\CP.DBF
   copy to \XTY04YB\CP.DBF
endif
if  not FILE("MIMA.DBF")
   use \XTY04YB\BACKFILE\MIMA.DBF
   copy to \XTY04YB\MIMA.DBF
endif
if  not FILE("PRINT.DBF")
   use \XTY04YB\BACKFILE\PRINT.DBF
   copy to \XTY04YB\PRINT.DBF
endif
if  not FILE("MING2.DBF")
   use \XTY04YB\BACKFILE\MING2.DBF
   copy to \XTY04YB\MING2.DBF
endif
if  not FILE("MING.DBF")
   use \XTY04YB\BACKFILE\MING.DBF
   copy to \XTY04YB\MING.DBF
endif
if  not FILE("TITLE1.DBF")
   use \XTY04YB\BACKFILE\TITLE1.DBF
   copy to \XTY04YB\TITLE1.DBF
endif
select 1
use MIMA
goto 1
if MIMA = SPACE(8)
   do form ZHU
endif
if MIMA <> SPACE(8)
   set cursor on
   do form JIN
endif
read events
set sysmenu to default
clear all
close all
close databases
use \XTY04YB\BAS1\CLD
recall all
use \XTY04YB\BAS2\CLD
recall all
close databases
_screen.closable = .t.

请问大侠:如何去掉找狗信息?
多谢了!
2005-1-15 06:40
0
雪    币: 208
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
17
“完全仿真API操作,这才是我认为软件狗的破解方法。”

正因为如此,才会出现s3 s4 r5加密锁.对于定制的GS-MH加密锁,也是很难猜出变换算法的,4号功能用这种方法不能穷尽。
2005-1-17 08:54
0
雪    币: 1866
活跃值: (95)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
最初由 yaoyuan[CCG] 发布
1、狗外壳:确实狗外壳做得比较好,IAT也很难修复,我自己也有一个不能修复的:),不过nig现在已经有很好的办法处理,现在还不便公开。
2、一切花指令都是纸老虎!
3、当你来到花指令时,读狗子程序就在你面前了
4、MH_DLL_PARA在有些时候会定义成全局变量,这时就麻烦一点。不过在驱动中还是以这个数据结构的形式存在的。

yaoyuan[CCG] 的解狗方法是正确的这样解出来的程序!出错的几率最小也最稳定!微狗这种狗现在来讲!只要有狗没有解不了的!能硬复制也是这种狗的一大缺点!
2005-1-17 14:20
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
我已经发现网络验证如果做的好,可以达到相当的深厚无法破解的程度,比目前的狗要好多了。呵呵,期待狗硬件能够提升。:D
2005-1-17 14:35
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
最初由 dalao 发布

yaoyuan[CCG] 的解狗方法是正确的这样解出来的程序!出错的几率最小也最稳定!微狗这种狗现在来讲!只要有狗没有解不了的!能硬复制也是这种狗的一大缺点!


我关注过你的论坛,事实上呢,你破解的东西,我怎么觉得你并没有按你所说的那样做,也就是讲,你公开的教学,都是小儿科级别的。:D 不知道这是故意的还是要隐藏实力。
2005-1-17 14:42
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
21
最初由 鸡蛋壳 发布


我关注过你的论坛,事实上呢,你破解的东西,我怎么觉得你并没有按你所说的那样做,也就是讲,你公开的教学,都是小儿科级别的。:D 不知道这是故意的还是要隐藏实力。


晕,当然是隐藏实力了,呵呵,那只不过是一个招牌而已,不信你问问大老...

看看大老好不好把给客户破解的狗的情况给你说一遍?:D :D
2005-1-17 17:40
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
22
微狗这种狗现在来讲!只要有狗没有解不了的!

===========
大老的这句话我比较赞同,只要有狗,都是纸老虎.
2005-1-17 17:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
这是使用彩虹公司提供的动态库进行加密的吧,这种库如果没有加壳保护,确实强度很低。
2005-1-21 17:46
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
~
2005-1-21 20:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
我有一个专用软件,usb狗,原狗坏了,软件不能用了,无狗不能运行,借了一个狗启动程序后,如果拔走狗就不能保存文件,本想用不关机的方法..:( 。
满世界找人解决,看这里高手如云,有没有能帮忙的?
请和我联系,th_arts@yahoo.com.cn
2005-1-21 20:46
0
游客
登录 | 注册 方可回帖
返回
//