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

[原创]逆向写作FreeActiveX

David 活跃值
20
2007-8-2 09:33
6732
逆向写作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

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

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (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
活跃值: (171)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
DFCG的二哥,,,想念呀,江湖再现,功力深厚
2007-8-2 10:53
0
雪    币: 10619
活跃值: (2314)
能力值: ( 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
游客
登录 | 注册 方可回帖
返回
//