首页
社区
课程
招聘
[原创]逆向写作FreeActiveX
发表于: 2007-8-2 09:33 6769

[原创]逆向写作FreeActiveX

David 活跃值
20
2007-8-2 09:33
6769
逆向写作FreeActiveX

老久就下载了FreeActiveX

    姓名:党涛?
    年龄:23岁
    爱好:计算机编程、软件破解和围棋
    特长:精通Visual Basic,熟悉Visual C++和Delphi
    作品:ActiveX部件:
            1. BIG5<=>GB
               第一个版本: BIG2GB.OCX (Viusal Basic 5.0 开发)
               第二个版本: BIG2GB.DLL (Visual C++ 6.0 ATL 开发)
            2. AniGif ActiveX For Visual Basic (Visual Basic 5.0 开发)   
               优点: 编译成EXE文件后无需GIF文件支持

            3. 围棋棋盘控件 For Visual Basic (Visual Basic 5.0 开发)
               自动计算气数及自动提子
            4. Resize Control ActiveX For Visual Basic
          共享软件:
            1. Password Tools For Access95/97 (Visual Basic 5.0 开发)
               显示或修改Access数据库文件(*.MDB 和 *.MDE)的口令
            2. FreeActiveX
               清除某些共享ActiveX部件的注册对话框
          其它:
            1. 将InstallShield系列的安装程序解密
            2. 破译InstallShield PackForTheWeb最新版(2.04)的加密算法

            3. 破解一些共享软件的注册码

作者真是偶像级人物,使用这个程序有深刻对象,它用的什么工作原理清除了NAG呢。

自己用OD破解,发现只要NOP了启动调用的DialogBoxParamA就OK了。
那么工具呢,专杀工具!Uedit对比分析作者处理的文件发现

这种Nag只要在Nag资源的字符范围内写一个空字节产生异常,利用C++的DialogBoxParamA

异常处理机制替你解决了Nag,也就是不载入Nag窗口了。要搞成工具还很麻烦啊。

经过PctGL (大哥) 写了核心查找代码,这个工具是搞定了,我只有Anigif做了测试。

'frmCode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
Option Explicit
 
'Button数组枚举
Enum ButtonName
    iHelp = 1
    iCancel = 2
    iBack = 3
    iNext = 4
    iFinish = 5
    iOpen = 6
End Enum
 
Enum FrameName
    WelCome = 0
    SelectActiveX = 1
End Enum
 
Enum TextName
    About = 0
    ActiveXName = 1
    ClearText = 2
End Enum
 
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
 
Private Sub Form_Load()
 
    Call InitCommonControls
    Call ReadOnlyText(txt(About))            '只读文本框
 
    fra(SelectActiveX).Left = fra(WelCome).Left
    fra(SelectActiveX).Top = fra(WelCome).Top
 
End Sub
 
Private Sub cmd_Click(Index As Integer)
 
    Select Case Index
 
        Case iHelp
 
        dlgOpenFile.HelpFile = App.Path & "\FREEACTIVEX.HLP"
        dlgOpenFile.HelpCommand = cdlHelpContents
        dlgOpenFile.ShowHelp                     '调用帮助文件,Action = 6
 
        Case iNext
 
        cmd(iBack).Enabled = True
        cmd(iFinish).Enabled = True
        cmd(iNext).Enabled = False
 
        fra(WelCome).Visible = False
        fra(SelectActiveX).Visible = True
 
        Case iBack
 
        cmd(iBack).Enabled = False
        cmd(iNext).Enabled = True
        cmd(iFinish).Enabled = False
 
        fra(SelectActiveX).Visible = False
        fra(WelCome).Visible = True
 
        Case iOpen
 
        With dlgOpenFile
 
            .FileName = ""                                                             '清除上一次打开的文件
            .DialogTitle = "想打开哪一个文件呢?"                                      '设置对话框标题上显示的字
            .Filter = "All File|*.*|全部支持的类型|*.ocx;*.dll"                        '给用户提供可以选择的文件类型,分号就是两种类型的文件的分隔符
            .FilterIndex = 2                                                           '指定缺省的过滤器 即*.exe
            .ShowOpen                                                                  '打开对话框,Action = 1
 
        End With
 
        txt(ActiveXName).Text = dlgOpenFile.FileName
 
        Case iFinish
 
        If Len(txt(ActiveXName).Text) = 0 Then
 
            MsgBox "你还未选择ActiveOcx控件!", vbCritical, "错误"
 
        ElseIf Len(txt(ClearText).Text) = 0 Then
 
            MsgBox "你还未输入要清除的标题!", vbCritical, "错误"
 
        Else
 
            Call FindTitle
 
        End If
 
        Case iCancel
 
        Unload Me
 
    End Select
 
End Sub
 
Public Sub FindTitle()
 
    Dim i As Long, j As Long
    Dim abytFile() As Byte
    Dim abytTitle() As Byte
    Dim BakFileName As String
 
    lblExplain(7).Caption = "正在检索...."
 
    Open txt(ActiveXName) For Binary As #1
    ReDim abytFile(FileLen(txt(ActiveXName)))
    Get #1, , abytFile
    Close #1
 
    abytTitle = txt(ClearText)
 
    Do
 
        If abytFile(i) = abytTitle(0) Then
 
            For j = 1 To UBound(abytTitle)
 
                If abytFile(i + j) <> abytTitle(j) Then Exit For
 
                If j = UBound(abytTitle) Then Exit Do
 
            Next
 
        End If
 
        i = i + 1
 
        If i > UBound(abytFile) Then
 
            MsgBox "未搜索到对话框的标题,请重新选择ActiveX部件!", vbInformation, "失败"
            lblExplain(7).Caption = ""
            Exit Sub
 
        End If
 
    Loop
 
    BakFileName = Left$(txt(ActiveXName), Len(txt(ActiveXName)) - 4) & ".bak"
    FileCopy txt(ActiveXName), BakFileName
 
    Open txt(ActiveXName) For Binary As #1
    Put #1, i, 0       '对发现的标题处理首字节,随便你怎么写,目的是破坏资源对话框结构
    Close #1
 
    lblExplain(7).Caption = "正在清除...."
    MsgBox "清除ActiveX部件对话框成功!", vbInformation, "成功"
    lblExplain(7).Caption = ""
 
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
 
    Set frmMain = Nothing
 
End Sub

[注意]APP应用上架合规检测服务,协助应用顺利上架!

收藏
免费
支持
分享
最新回复 (5)
雪    币: 411
活跃值: (1160)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
2
原文

http://www.vbgood.com/viewthread.php?tid=55952&extra=page%3D1

btw

DIY的像吗?

2007-8-2 09:35
0
雪    币: 89
活跃值: (186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
DFCG的二哥,,,想念呀,江湖再现,功力深厚
2007-8-2 10:53
0
雪    币: 10771
活跃值: (2479)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
2哥 建设好 dfcg
2007-8-2 11:07
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
5
。。。。VB6。。。。
2007-8-2 12:00
0
雪    币: 166
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
,功力深厚,
2007-8-4 10:21
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册
// // 统计代码