混淆VBA Excel - Break Line,Var Names

时间:2015-01-06 20:53:00

标签: regex excel vba excel-vba

我正在尝试为我的VBA项目构建自己的Obfuscation加载项。

我从更简单的任务开始:

  • 删除空行
  • 删除缩进
  • 删除评论

我可以弄清楚如何做这些事情,也许不是最好的方式,但我坚持:

  • 插入随机中断行(“_”)

我想让它适用于不同类型的分隔符,现在我只使用“=”信号。顺便说一句,当我在行中有多个分隔符时我遇到了问题(例如:如果bla =“abc”或ble =“acd”)。该代码导致我的行中的incorrects拆分。

Sub VBE_Break_The_Lines()
Dim VBC As VBComponent
Dim a, i, j, lCount As Long
Dim str As String
Dim temp As Variant
lCount = 0
i = 1
Dim blnStringMode, blnLineContinue As Boolean
    For Each VBC In VBProjToClean.VBComponents
        blnStringMode = False
        i = 1
        With VBC.CodeModule
            Do Until i > .CountOfLines
                If Not .ProcOfLine(i, vbext_pk_Proc) = "VBE_Remove_Comments" Then
                    str = .Lines(i, 1)
                End If

                If InStr(1, str, " = ", vbTextCompare) > 0 Then
                    temp = Split(str, " = ")
                    .InsertLines i, ""
                    .ReplaceLine i, temp(0) & " _"
                    .InsertLines i + 1, "= " & temp(1)
                    .DeleteLines i + 2
                    lCount = lCount + 1
                    'a = InStr(1, str, "=", vbTextCompare)
                    i = i + 1
                End If
            i = i + 1
            Loop
        End With
    Next
MsgBox lCount & "  LINES BREAKED ( = )", , strFileToClean

End Sub

我的下一步将是更改程序/变量名称,但不确定REGEX是否应该是最佳方式,我只是阅读了很多,但还不确定。

希望你们能给我一个关注的方法

2 个答案:

答案 0 :(得分:0)

为什么不从this开源代码开始并从中创建一个新版本而不是重新发明轮子?

您需要将代码中的所有文件扩展名从.xls更改为.xlsm,将IB_test.xls工作簿保存为启用宏的工作簿,并将插件另存为.xlam,没有.xla使这项工作,但即使代码是9年,它仍然可以在Excel 2013中使用。

答案 1 :(得分:0)

如果您对VBA感到困惑,则可以尝试使用VBASH(www.ayedeal.com/vbash)。这是非常简单和强大的。