首页
社区
课程
招聘
[讨论]关于一个以CAD为平台的软件破解
发表于: 2005-8-9 13:07 10477

[讨论]关于一个以CAD为平台的软件破解

2005-8-9 13:07
10477
一个以CAD为平台的软件,狗加密,已经破了大部分,可是有个关键的地方没有搞定,就是程序启动时,加载菜单不成功,启动后使用一些基本命令(建轴网等)出现错误,调用不到命令,显示错误,系统中没有参数设置,
请教大侠关于CAD菜单加载的问题,CAD是如何加载菜单的
通过哪些命令加载菜单

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
哦不好意思,发错地方了,请版主移到软件调试论坛
2005-8-9 13:08
0
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
不知道是哪个菜单,是屏幕菜单吗?再加载这些arx试一试看看,有没有不能加载的。如果是置顶菜单的话,自己加载菜单,命令:menuload,出来后,找到自己的菜单,然后加载,然后把加载的菜单插入到原菜单里面。
有些命令不能用,估计你没有搞对头。
2005-8-9 14:44
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
4
以CAD为平台的软件的狗加密,是最易攻破的,不要一个一个的改跳转,只要几个关键地方,读狗或数据
2005-8-9 15:40
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
已经破的差不多了,就是菜单用不起来,
一点CAD下方的命令窗口就提示如下:
命令: FZHLX ; 错误: *error* 函数中出错无函数定义: &FLD
不知是何故呀
2005-8-9 16:14
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
他加载菜单时一定是检测狗,但没有任何提示,且读狗不与其它读狗的在一处,难找呀
用这个断点bp DeviceIoControl也拦不到,
2005-8-9 16:16
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
都搞了一个月了,一点进展都没有
2005-8-9 16:24
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
8
加载菜单是cad开始运行时的最初几件必干的事,那么你可以用od单步跟踪看一下!这是最苯的办法了。不过应该可以发现提示的,因为它要先读狗,然后再一般设一个有狗无狗的标志来确定是否加载菜单!

还有一种可能就是,他加载其他arx!而那里面还有检查狗的东西,要一个个去掉,我见过不少这样的,不过这只是机械劳动罢了――去掉每个加载arx检查狗的东西!
2005-8-9 17:07
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
哦,多谢大侠批点,他加载菜单一般用什么命令或函数呢
2005-8-9 17:42
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
奇怪的是我用bp DeviceIoControl竟然没有拦住,看了一下API函数和
regopenkeyexa,我就下了bpx regopenkeyexa断,不知对不对,
2005-8-9 17:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
最初由 njzzzzzz 发布
已经破的差不多了,就是菜单用不起来,
一点CAD下方的命令窗口就提示如下:
命令: FZHLX ; 错误: *error* 函数中出错无函数定义: &FLD
不知是何故呀

你搞这个软件呀,要狗中数据的呀,有狗轻松搞定!
2005-8-9 18:22
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
有可能呀,深思4的狗,可能把一小部分代码写到狗里了
他要是真这样的话,就没戏了
2005-8-9 18:29
0
雪    币: 255
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
TSSD系列。原来版本就几个字节,新版本要补代码。有人搞定了。
2005-8-9 18:55
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
楼上好像也研究过这个软件呀,补代码是不是要从狗中读出数据或
怎么补代码,给点提示
2005-8-10 09:53
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
补代码就是比较新版本和旧版本,将旧版本中出现的一些代码补到新版本未出现的地方,PKPM也曾经这样搞过
2005-8-10 12:58
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
天啊,那要花多长时间或
2005-8-10 13:09
0
雪    币: 124
活跃值: (107)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
最初由 njzzzzzz 发布
都搞了一个月了,一点进展都没有


认真看一下,换个思路试一下或许就有收获。
一个月不算什么,我搞一个软件搞了大半年才搞定
2005-8-10 14:31
0
雪    币: 255
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
Tiger上面有破解的,只不过用EPEV23.12加了壳。有水平脱了就可以看到发生了什么。
2005-8-10 15:30
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
呵呵,搞那种壳,还不如直接破这个软件
2005-8-12 11:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
最初由 狗剩 发布


认真看一下,换个思路试一下或许就有收获。
一个月不算什么,我搞一个软件搞了大半年才搞定


赞同!我个人认为加载菜单是通过VBA来实现的,而菜单的内容XXX.mnu文件中,判断是否加载菜单和程序可执行体在.arx、.lsp或.dll文件中。以下代码是用AutoCAD自带的VB编辑器查看的.dvb文件(项目文件,一般都加密码,可用VBA的解码器获取密码如passware的officekey)

Attribute VB_Name = "INST"
Option Explicit
Dim rrxw As New Start2004
Dim sYsd As String
Public Function showtot()
ThisDrawing.Application.MenuGroups.Item(0).Toolbars.Item("PID绘图(弹出按钮)").Visible = True
End Function
Public Function showpip()
ThisDrawing.Application.MenuGroups.Item(0).Toolbars.Item("PID绘图(管线)").Visible = True
End Function
Public Function showequ()
ThisDrawing.Application.MenuGroups.Item(0).Toolbars.Item("PID绘图(设备)").Visible = True
End Function
Public Function showval()
ThisDrawing.Application.MenuGroups.Item(0).Toolbars.Item("PID绘图(阀门)").Visible = True
End Function
Public Function showfit()
ThisDrawing.Application.MenuGroups.Item(0).Toolbars.Item("PID绘图(管件)").Visible = True
End Function
Public Function showins()
ThisDrawing.Application.MenuGroups.Item(0).Toolbars.Item("PID绘图(仪表)").Visible = True
End Function
Public Function showzoo()
ThisDrawing.Application.MenuGroups.Item(0).Toolbars.Item("窗口缩移").Visible = True
End Function
Public Function showEQI()
ThisDrawing.Application.MenuGroups.Item(0).Toolbars.Item("PID绘图(设备内件)").Visible = True
End Function
Public Function showPFD()
ThisDrawing.Application.MenuGroups.Item(0).Toolbars.Item("PFD绘图(PFD)").Visible = True
End Function
Public Function START()
Dim Atlb As AcadToolbars
sYsd = ThisDrawing.Application.Path
With ThisDrawing.Application
//加载菜单的位置
.Preferences.Files.MenuFile = sYsd & "\SUPPORT\cadpid.mnu"
.MenuGroups.Item(0).Toolbars.Item("标准").Visible = True
.MenuGroups.Item(0).Toolbars.Item("绘图").Visible = True
.MenuGroups.Item(0).Toolbars.Item("修改").Visible = True
.MenuGroups.Item(0).Toolbars.Item("标注").Visible = True
End With
Set Atlb = ThisDrawing.Application.MenuGroups.Item(0).Toolbars
If Atlb.Item("PID绘图(弹出按钮)").DockStatus <> acToolbarDockLeft Then
Atlb.Item("PID绘图(弹出按钮)").Dock (acToolbarDockLeft)
End If
If Atlb.Item("PID绘图(管线)").DockStatus <> acToolbarFloating Or (Atlb.Item("PID绘图(管线)").Left > 600) Or (Atlb.Item("PID绘图(管线)").top > 500) Then
Atlb.Item("PID绘图(管线)").Float 250, 300, 5
End If
Atlb.Item("PID绘图(管线)").Visible = False
If Atlb.Item("PID绘图(阀门)").DockStatus <> acToolbarFloating Or (Atlb.Item("PID绘图(阀门)").Left > 600) Or (Atlb.Item("PID绘图(阀门)").top > 500) Then
Atlb.Item("PID绘图(阀门)").Float 250, 300, 7
End If
Atlb.Item("PID绘图(阀门)").Visible = False
If Atlb.Item("PID绘图(设备)").DockStatus <> acToolbarFloating Or (Atlb.Item("PID绘图(设备)").Left > 600) Or (Atlb.Item("PID绘图(设备)").top > 500) Then
Atlb.Item("PID绘图(设备)").Float 250, 300, 4
End If
Atlb.Item("PID绘图(设备)").Visible = False
If Atlb.Item("PID绘图(仪表)").DockStatus <> acToolbarFloating Or (Atlb.Item("PID绘图(仪表)").Left > 600) Or (Atlb.Item("PID绘图(仪表)").top > 500) Then
Atlb.Item("PID绘图(仪表)").Float 250, 300, 4
End If
Atlb.Item("PID绘图(仪表)").Visible = False
If (Atlb.Item("PID绘图(管件)").DockStatus <> acToolbarFloating) Or (Atlb.Item("PID绘图(管件)").Left > 600) Or (Atlb.Item("PID绘图(管件)").top > 500) Then
Atlb.Item("PID绘图(管件)").Float 250, 300, 4
End If
Atlb.Item("PID绘图(管件)").Visible = False
If (Atlb.Item("窗口缩移").DockStatus <> acToolbarFloating) Or (Atlb.Item("窗口缩移").Left > 600) Or (Atlb.Item("窗口缩移").top > 500) Then
Atlb.Item("窗口缩移").Float 100, 300, 1
End If
Atlb.Item("窗口缩移").Visible = False
If (Atlb.Item("PID绘图(设备内件)").DockStatus <> acToolbarFloating) Or (Atlb.Item("PID绘图(设备内件)").Left > 600) Or (Atlb.Item("PID绘图(设备内件)").top > 500) Then
Atlb.Item("PID绘图(设备内件)").Float 250, 300, 2
End If
Atlb.Item("PID绘图(设备内件)").Visible = False
If (Atlb.Item("PFD绘图(PFD)").DockStatus <> acToolbarFloating) Or (Atlb.Item("PFD绘图(PFD)").Left > 600) Or (Atlb.Item("PFD绘图(PFD)").top > 500) Then
Atlb.Item("PFD绘图(PFD)").Float 250, 300, 2
End If
Atlb.Item("PFD绘图(PFD)").Visible = False
With ThisDrawing.Application.Preferences
.System.EnableStartupDialog = False
.System.SingleDocumentMode = False
.Drafting.AutoSnapMarker = True
.Drafting.AutoSnapTooltip = True
.Drafting.AutoTrackTooltip = True
.System.LoadAcadLspInAllDocuments = True
.Display.CursorSize = 100
  .User.SCMEditMode = acEdRepeatLastCommand
.User.SCMCommandMode = acEnter
.User.SCMDefaultMode = acRepeatLastCommand
End With
rrxw.START
End Function
2005-10-18 17:16
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
看来我来得太晚了,
CAD程序使用arx,每个arx都有一个
acrxEntryPoint函数来初始化arx,
acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
        switch (msg) {
        case AcRx::kInitAppMsg:
                // Comment out the following line if your
                // application should be locked into memory
                acrxDynamicLinker->unlockApplication(pkt);
                acrxDynamicLinker->registerAppMDIAware(pkt);
                InitApplication();
                break;
        case AcRx::kUnloadAppMsg:
                UnloadApplication();
                break;
        }
        return AcRx::kRetOK;
}
cad的命令一般在case AcRx::kInitAppMsg:中进行cad命令注册,

一般使用函数 AddCommand或defFunc添加新的命令,如判断软件狗失败则不进行命令注册或进行空注册,所以你就输入命令失败
2006-1-19 19:00
0
游客
登录 | 注册 方可回帖
返回
//