逆向写作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
[课程]FART 脱壳王!加量不加价!FART作者讲授!