VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 5644|回复: 10

[原创] 禁止IE运行

[复制链接]
 楼主| 发表于 2008-11-1 10:58:40 | 显示全部楼层 |阅读模式
  1. 此程序可以禁止打开任何网页,并隐藏运行,在任务管理器中找不到任何痕迹,调用时用ctrl+shift+U调出应用程序
  2. '**************************************************************************
  3. '**模 块 名:禁止IE运行 - Form1
  4. '**说    明:郭卫制作
  5. '**创 建 人:icecept(魔灵)
  6. '**日    期:2006-10-30 00:52:46
  7. '**修 改 人:icecept(魔灵)
  8. '**日    期:
  9. '**描    述:http://hi.baidu.com/icecept
  10. '**版    本:V1.0.0    http://icecept.blog.sohu.com
  11. '*************************************************************************
  12. Option Explicit
  13. Private Sub Command1_Click()
  14.     Timer1.Enabled = True
  15.     Me.WindowState = vbMinimized
  16.     Me.Hide
  17. End Sub
  18. Private Sub Command2_Click()
  19.     Timer1.Enabled = False
  20.     Me.WindowState = vbMinimized
  21.     Me.Hide
  22. End Sub
  23. Private Sub Form_Load()
  24.     On Error Resume Next
  25.       
  26.     Dim HKey As Long, Message As Msg, Ret As Long
  27.     Dim name1 As String  '文件名所在的位置
  28.     Form1.Hide
  29.     '判断注册表项是否存在
  30.     name1 = GetSetting(App.Title, "Settings", "Pass")
  31.     If name1 = "" Then
  32.         '打开注册表项,设置自启动项目
  33.         Ret = RegSetValueEx(HKey, "禁止IE运行", 0, REG_SZ, ByVal CheckFilePath(App.Path) & "禁止IE运行.exe", LenB(CheckFilePath(App.Path) & "禁止IE运行.exe") + 1)
  34.         '关闭注册表项
  35.         RegCloseKey HKey
  36.         name1 = "Pass"
  37.         SaveSetting App.Title, "Settings", "Pass", name1
  38.     End If
  39.     If App.PrevInstance = True Then End
  40.     App.TaskVisible = False   '隐藏程序
  41.     HideCurrentProcess        '隐藏进程
  42.     '注册 Ctrl+Shift+U 为热键
  43.     RegisterHotKey Me.hWnd, &HBFFF&, MOD_CONTROL + MOD_SHIFT, vbKeyU
  44.     '等待处理消息
  45.     HotKey_Flg = False
  46.     Do While Not HotKey_Flg
  47.         '等待消息
  48.         WaitMessage
  49.         '检查是否热键被按下
  50.         If PeekMessage(Message, Me.hWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
  51.             '打开本程序
  52.             Me.Show
  53.             Me.WindowState = vbNormal
  54.         End If
  55.         '转让控制权,允许操作系统处理其他事件
  56.         DoEvents
  57.     Loop
  58. End Sub
  59. Private Sub Timer1_Timer()
  60.     On Error Resume Next
  61.     Dim winhwnd As Long
  62.     '查找ie的句柄
  63.     winhwnd = FindWindow("IEFrame", vbNullString)
  64.     PostMessage winhwnd, WM_CLOSE, 0&, 0&
  65. End Sub
  66. Private Sub Form_Unload(Cancel As Integer)
  67.     On Error Resume Next
  68.     HotKey_Flg = True
  69.     '撤销热键的注册
  70.     Call UnregisterHotKey(Me.hWnd, &HBFFF&)
  71. End Sub

  72. Private Function CheckFilePath(Path As String) As String
  73.     '检查档位文件是否在根目录下
  74.     If Right(Path, 1) <> "" Then
  75.         CheckFilePath = Path & ""
  76.     Else
  77.         CheckFilePath = Path
  78.     End If
  79. End Function
  80. 在标准模块中的代码===========================================================
  81. Option Explicit
  82. ' FindWindow函数声明
  83. Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  84.                         (ByVal lpClassName As String, _
  85.                         ByVal lpWindowName As String _
  86.                         ) As Long
  87. ' PostMessage函数声明
  88. Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
  89.                         (ByVal hWnd As Long, _
  90.                         ByVal wMsg As Long, _
  91.                         ByVal wParam As Long, _
  92.                         lParam As Any _
  93.                         ) As Long
  94. '关闭程序需要的常量
  95. Public Const WM_CLOSE = &H10
  96. '操作注册表用到的api
  97. Public Declare Function RegCloseKey Lib "advapi32" (ByVal HKey As Long) As Long
  98. Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal HKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  99. Public Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal HKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
  100. Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal HKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
  101. Public Const HKEY_LOCAL_MACHINE = &H80000002
  102. Public Const REG_SZ = 1
  103. '以下是设置热键所用到的函数
  104. '  声明API函数
  105. Public Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
  106. Public Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long) As Long
  107. Public Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
  108. Public Declare Function WaitMessage Lib "user32" () As Long
  109. '  声明结构
  110. Public Type POINTAPI
  111.     x As Long
  112.     y As Long
  113. End Type
  114. Public Type Msg
  115.     hWnd As Long
  116.     Message As Long
  117.     wParam As Long
  118.     lParam As Long
  119.     time As Long
  120.     pt As POINTAPI
  121. End Type
  122. '  声明常数
  123. Public Const MOD_ALT = &H1
  124. Public Const MOD_CONTROL = &H2
  125. Public Const MOD_SHIFT = &H4
  126. Public Const PM_REMOVE = &H1
  127. Public Const WM_HOTKEY = &H312
  128. Public HotKey_Flg As Boolean, Message As Msg
  129. '----------------------------------------------------------------------------------------------
  130. Private Const STATUS_INFO_LENGTH_MISMATCH = &HC0000004
  131. Private Const STATUS_ACCESS_DENIED = &HC0000022
  132. Private Const STATUS_INVALID_HANDLE = &HC0000008
  133. Private Const ERROR_SUCCESS = 0&
  134. Private Const SECTION_MAP_WRITE = &H2
  135. Private Const SECTION_MAP_READ = &H4
  136. Private Const READ_CONTROL = &H20000
  137. Private Const WRITE_DAC = &H40000
  138. Private Const NO_INHERITANCE = 0
  139. Private Const DACL_SECURITY_INFORMATION = &H4
  140. Private Type IO_STATUS_BLOCK
  141.     Status As Long
  142.     Information As Long
  143. End Type
  144. Private Type UNICODE_STRING
  145.     Length As Integer
  146.     MaximumLength As Integer
  147.     Buffer As Long
  148. End Type
  149. Private Const OBJ_INHERIT = &H2
  150. Private Const OBJ_PERMANENT = &H10
  151. Private Const OBJ_EXCLUSIVE = &H20
  152. Private Const OBJ_CASE_INSENSITIVE = &H40
  153. Private Const OBJ_OPENIF = &H80
  154. Private Const OBJ_OPENLINK = &H100
  155. Private Const OBJ_KERNEL_HANDLE = &H200
  156. Private Const OBJ_VALID_ATTRIBUTES = &H3F2
  157. Private Type OBJECT_ATTRIBUTES
  158.     Length As Long
  159.     RootDirectory As Long
  160.     ObjectName As Long
  161.     Attributes As Long
  162.     SecurityDeor As Long
  163.     SecurityQualityOfService As Long
  164. End Type
  165. Private Type ACL
  166.     AclRevision As Byte
  167.     Sbz1 As Byte
  168.     AclSize As Integer
  169.     AceCount As Integer
  170.     Sbz2 As Integer
  171. End Type
  172. Private Enum ACCESS_MODE
  173.     NOT_USED_ACCESS
  174.     GRANT_ACCESS
  175.     SET_ACCESS
  176.     DENY_ACCESS
  177.     REVOKE_ACCESS
  178.     SET_AUDIT_SUCCESS
  179.     SET_AUDIT_FAILURE
  180. End Enum
  181. Private Enum MULTIPLE_TRUSTEE_OPERATION
  182.     NO_MULTIPLE_TRUSTEE
  183.     TRUSTEE_IS_IMPERSONATE
  184. End Enum
  185. Private Enum TRUSTEE_FORM
  186.     TRUSTEE_IS_SID
  187.     TRUSTEE_IS_NAME
  188. End Enum
  189. Private Enum TRUSTEE_TYPE
  190.     TRUSTEE_IS_UNKNOWN
  191.     TRUSTEE_IS_USER
  192.     TRUSTEE_IS_GROUP
  193. End Enum
  194. Private Type TRUSTEE
  195.     pMultipleTrustee            As Long
  196.     MultipleTrusteeOperation    As MULTIPLE_TRUSTEE_OPERATION
  197.     TrusteeForm                 As TRUSTEE_FORM
  198.     TrusteeType                 As TRUSTEE_TYPE
  199.     ptstrName                   As String
  200. End Type
  201. Private Type EXPLICIT_ACCESS
  202.     grfAccessPermissions        As Long
  203.     grfAccessMode               As ACCESS_MODE
  204.     grfInheritance              As Long
  205.     TRUSTEE                     As TRUSTEE
  206. End Type
  207. Private Type AceArray
  208.     List() As EXPLICIT_ACCESS
  209. End Type
  210. Private Enum SE_OBJECT_TYPE
  211.     SE_UNKNOWN_OBJECT_TYPE = 0
  212.     SE_FILE_OBJECT
  213.     SE_SERVICE
  214.     SE_PRINTER
  215.     SE_REGISTRY_KEY
  216.     SE_LMSHARE
  217.     SE_KERNEL_OBJECT
  218.     SE_WINDOW_OBJECT
  219.     SE_DS_OBJECT
  220.     SE_DS_OBJECT_ALL
  221.     SE_PROVIDER_DEFINED_OBJECT
  222.     SE_WMIGUID_OBJECT
  223. End Enum
  224. Private Declare Function SetSecurityInfo Lib "advapi32.dll" (ByVal Handle As Long, ByVal ObjectType As SE_OBJECT_TYPE, ByVal SecurityInfo As Long, ppsidOwner As Long, ppsidGroup As Long, ppDacl As Any, ppSacl As Any) As Long
  225. Private Declare Function GetSecurityInfo Lib "advapi32.dll" (ByVal Handle As Long, ByVal ObjectType As SE_OBJECT_TYPE, ByVal SecurityInfo As Long, ppsidOwner As Long, ppsidGroup As Long, ppDacl As Any, ppSacl As Any, ppSecurityDeor As Long) As Long
  226. Private Declare Function SetEntriesInAcl Lib "advapi32.dll" Alias "SetEntriesInAclA" (ByVal cCountOfExplicitEntries As Long, pListOfExplicitEntries As EXPLICIT_ACCESS, ByVal OldAcl As Long, NewAcl As Long) As Long
  227. Private Declare Sub BuildExplicitAccessWithName Lib "advapi32.dll" Alias "BuildExplicitAccessWithNameA" (pExplicitAccess As EXPLICIT_ACCESS, ByVal pTrusteeName As String, ByVal AccessPermissions As Long, ByVal AccessMode As ACCESS_MODE, ByVal Inheritance As Long)
  228. Private Declare Sub RtlInitUnicodeString Lib "NTDLL.DLL" (DestinationString As UNICODE_STRING, ByVal SourceString As Long)
  229. Private Declare Function ZwOpenSection Lib "NTDLL.DLL" (SectionHandle As Long, ByVal DesiredAccess As Long, ObjectAttributes As Any) As Long
  230. Private Declare Function LocalFree Lib "kernel32" (ByVal hMem As Any) As Long
  231. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  232. Private Declare Function MapViewOfFile Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) As Long
  233. Private Declare Function UnmapViewOfFile Lib "kernel32" (lpBaseAddress As Any) As Long
  234. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  235. Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
  236. Private Type OSVERSIONINFO
  237.     dwOSVersionInfoSize As Long
  238.     dwMajorVersion As Long
  239.     dwMinorVersion As Long
  240.     dwBuildNumber As Long
  241.     dwPlatformId As Long
  242.     szCSDVersion As String * 128
  243. End Type
  244. Private verinfo As OSVERSIONINFO
  245. Private g_hNtDLL As Long
  246. Private g_pMapPhysicalMemory As Long
  247. Private g_hMPM As Long
  248. Private aByte(3) As Byte
  249. Public Sub HideCurrentProcess()
  250.     '在进程列表中隐藏当前应用程序进程
  251.     Dim thread As Long, process As Long, fw As Long, bw As Long
  252.     Dim lOffsetFlink As Long, lOffsetBlink As Long, lOffsetPID As Long
  253.     verinfo.dwOSVersionInfoSize = Len(verinfo)
  254.     If (GetVersionEx(verinfo)) <> 0 Then
  255.         If verinfo.dwPlatformId = 2 Then
  256.             If verinfo.dwMajorVersion = 5 Then
  257.                 Select Case verinfo.dwMinorVersion
  258.                     Case 0
  259.                     lOffsetFlink = &HA0
  260.                     lOffsetBlink = &HA4
  261.                     lOffsetPID = &H9C
  262.                     Case 1
  263.                     lOffsetFlink = &H88
  264.                     lOffsetBlink = &H8C
  265.                     lOffsetPID = &H84
  266.                 End Select
  267.             End If
  268.         End If
  269.     End If
  270.     If OpenPhysicalMemory <> 0 Then
  271.         thread = GetData(&HFFDFF124)
  272.         process = GetData(thread + &H44)
  273.         fw = GetData(process + lOffsetFlink)
  274.         bw = GetData(process + lOffsetBlink)
  275.         SetData fw + 4, bw
  276.         SetData bw, fw
  277.         CloseHandle g_hMPM
  278.     End If
  279. End Sub
  280. Private Sub SetPhyscialMemorySectionCanBeWrited(ByVal hSection As Long)
  281.     Dim pDacl As Long
  282.     Dim pNewDacl As Long
  283.     Dim pSD As Long
  284.     Dim dwRes As Long
  285.     Dim ea As EXPLICIT_ACCESS
  286.     GetSecurityInfo hSection, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, 0, 0, pDacl, 0, pSD
  287.     ea.grfAccessPermissions = SECTION_MAP_WRITE
  288.     ea.grfAccessMode = GRANT_ACCESS
  289.     ea.grfInheritance = NO_INHERITANCE
  290.     ea.TRUSTEE.TrusteeForm = TRUSTEE_IS_NAME
  291.     ea.TRUSTEE.TrusteeType = TRUSTEE_IS_USER
  292.     ea.TRUSTEE.ptstrName = "CURRENT_USER" & vbNullChar
  293.     SetEntriesInAcl 1, ea, pDacl, pNewDacl
  294.     SetSecurityInfo hSection, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, 0, 0, ByVal pNewDacl, 0
  295. CleanUp:
  296.     LocalFree pSD
  297.     LocalFree pNewDacl
  298. End Sub
  299. Private Function OpenPhysicalMemory() As Long
  300.     Dim Status As Long
  301.     Dim PhysmemString As UNICODE_STRING
  302.     Dim Attributes As OBJECT_ATTRIBUTES
  303.     RtlInitUnicodeString PhysmemString, StrPtr("\Device\PhysicalMemory")
  304.     Attributes.Length = Len(Attributes)
  305.     Attributes.RootDirectory = 0
  306.     Attributes.ObjectName = VarPtr(PhysmemString)
  307.     Attributes.Attributes = 0
  308.     Attributes.SecurityDeor = 0
  309.     Attributes.SecurityQualityOfService = 0
  310.     Status = ZwOpenSection(g_hMPM, SECTION_MAP_READ Or SECTION_MAP_WRITE, Attributes)
  311.     If Status = STATUS_ACCESS_DENIED Then
  312.         Status = ZwOpenSection(g_hMPM, READ_CONTROL Or WRITE_DAC, Attributes)
  313.         SetPhyscialMemorySectionCanBeWrited g_hMPM
  314.         CloseHandle g_hMPM
  315.         Status = ZwOpenSection(g_hMPM, SECTION_MAP_READ Or SECTION_MAP_WRITE, Attributes)
  316.     End If
  317.     Dim lDirectoty As Long
  318.     verinfo.dwOSVersionInfoSize = Len(verinfo)
  319.     If (GetVersionEx(verinfo)) <> 0 Then
  320.         If verinfo.dwPlatformId = 2 Then
  321.             If verinfo.dwMajorVersion = 5 Then
  322.                 Select Case verinfo.dwMinorVersion
  323.                     Case 0
  324.                     lDirectoty = &H30000
  325.                     Case 1
  326.                     lDirectoty = &H39000
  327.                 End Select
  328.             End If
  329.         End If
  330.     End If
  331.     If Status = 0 Then
  332.         g_pMapPhysicalMemory = MapViewOfFile(g_hMPM, 4, 0, lDirectoty, &H1000)
  333.         If g_pMapPhysicalMemory <> 0 Then OpenPhysicalMemory = g_hMPM
  334.     End If
  335. End Function
  336. Private Function LinearToPhys(BaseAddress As Long, addr As Long) As Long
  337.     Dim VAddr As Long, PGDE As Long, PTE As Long, PAddr As Long
  338.     Dim lTemp As Long
  339.     VAddr = addr
  340.     CopyMemory aByte(0), VAddr, 4
  341.     lTemp = Fix(ByteArrToLong(aByte) / (2 ^ 22))
  342.     PGDE = BaseAddress + lTemp * 4
  343.     CopyMemory PGDE, ByVal PGDE, 4
  344.     If (PGDE And 1) <> 0 Then
  345.         lTemp = PGDE And &H80
  346.         If lTemp <> 0 Then
  347.             PAddr = (PGDE And &HFFC00000) + (VAddr And &H3FFFFF)
  348.         Else
  349.             PGDE = MapViewOfFile(g_hMPM, 4, 0, PGDE And &HFFFFF000, &H1000)
  350.             lTemp = (VAddr And &H3FF000) / (2 ^ 12)
  351.             PTE = PGDE + lTemp * 4
  352.             CopyMemory PTE, ByVal PTE, 4
  353.             If (PTE And 1) <> 0 Then
  354.                 PAddr = (PTE And &HFFFFF000) + (VAddr And &HFFF)
  355.                 UnmapViewOfFile PGDE
  356.             End If
  357.         End If
  358.     End If
  359.     LinearToPhys = PAddr
  360. End Function
  361. Private Function GetData(addr As Long) As Long
  362.     Dim phys As Long, tmp As Long, Ret As Long
  363.     phys = LinearToPhys(g_pMapPhysicalMemory, addr)
  364.     tmp = MapViewOfFile(g_hMPM, 4, 0, phys And &HFFFFF000, &H1000)
  365.     If tmp <> 0 Then
  366.         Ret = tmp + ((phys And &HFFF) / (2 ^ 2)) * 4
  367.         CopyMemory Ret, ByVal Ret, 4
  368.         UnmapViewOfFile tmp
  369.         GetData = Ret
  370.     End If
  371. End Function
  372. Private Function SetData(ByVal addr As Long, ByVal data As Long) As Boolean
  373.     Dim phys As Long, tmp As Long, x As Long
  374.     phys = LinearToPhys(g_pMapPhysicalMemory, addr)
  375.     tmp = MapViewOfFile(g_hMPM, SECTION_MAP_WRITE, 0, phys And &HFFFFF000, &H1000)
  376.     If tmp <> 0 Then
  377.         x = tmp + ((phys And &HFFF) / (2 ^ 2)) * 4
  378.         CopyMemory ByVal x, data, 4
  379.         UnmapViewOfFile tmp
  380.         SetData = True
  381.     End If
  382. End Function
  383. Private Function ByteArrToLong(inByte() As Byte) As Double
  384.     Dim i As Integer
  385.     For i = 0 To 3
  386.         ByteArrToLong = ByteArrToLong + inByte(i) * (&H100 ^ i)
  387.     Next i
  388.     '------------------------------------------------
  389.     Exit Function
  390.     '----------------
  391. ToExit:
  392.     Resume Next
  393. End Function
复制代码

[ 本帖最后由 icecept 于 2009-2-19 01:22 编辑 ]
发表于 2008-11-1 17:51:12 | 显示全部楼层
进程隐藏好像无效啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-3 12:35:58 | 显示全部楼层
在我这里看不到进程啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-3 12:41:31 | 显示全部楼层

在任务管理器中看不到应用程序和进程

1.jpg
2.jpg
回复 支持 反对

使用道具 举报

发表于 2008-12-28 11:08:17 | 显示全部楼层
Microsoft Visual Basic 6.0 中文版调试: Message As Msg用户类型未定义;REG_SZ变量未定义;RegSetValueEx子程序或函数未定义。。。,楼主用的是哪个版本的VB?
回复 支持 反对

使用道具 举报

发表于 2008-12-28 11:10:13 | 显示全部楼层
更离奇的是附件:

Kaspersky Lab
拒绝访问
无法返回请求的网页

试图访问的网页:

http://www.vbgood.com/attachment.php?aid=
21442

发生下列错误:

请求的对象被感染,发现下列病毒 HEUR:Trojan.Win32.Generic


如有疑问,请联系您的技术支持
创建日期:
Sun Dec 28 11:13:51 2008
Kaspersky Lab
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-28 13:31:28 | 显示全部楼层

回复 #6 guanzlk 的帖子

怎么回事啊?

[ 本帖最后由 icecept 于 2008-12-28 16:58 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2008-12-28 21:03:33 | 显示全部楼层
将代码拷进VB后编译运行,在任务管理器看见进程,
用ctrl+shift+U调出应用程序,按下Command1,IE打不开。
我一般不用IE,这代码用来屏蔽IE倒是可以考虑,可惜不能在任务管理器隐藏。
找过很多在XP里隐藏进程的VB代码,别人都说好,不知怎地在我的电脑上就是很难隐藏进程。曾经找到一个能隐藏进程的,可后来重新安装系统后就不能隐藏进程了。

[ 本帖最后由 kx25 于 2008-12-28 21:21 编辑 ]
截图1.png
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2010-8-13 22:00:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2010-8-13 22:00:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2019-10-14 11:25

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表