Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > กระทู้สำหรับภาษาต่าง ๆ > VB6 แบบง่ายๆ จิ๊บๆ ขอความช่วยเหลือ จากพี่ๆเก่งๆหน่อยครับ



VB6 แบบง่ายๆ จิ๊บๆ ขอความช่วยเหลือ จากพี่ๆเก่งๆหน่อยครับ

 
Topic : 078397



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์



ก่อนอื่น ขอ อธิบายนิดนึงครับ คือผมอยากขอความช่วยเหลือจากพี่ๆ ที่เก่ง Vb6 สักนิดครับ
นี่เป็นโค้ทของโปรแกรม Process Protect หรือ โค้ทที่ ทำให้โปรแกรม นั้นๆ ปิดไม่ได้ ถ้ากดปิดหรือ kill process จะทำให้เกิดจอฟ้า
ถามว่า เอาไปทำ ไวรัส หรือ สปายแวร์ แก้งคนหรือป่าว ตอบคือเปล่าเลยครับ พอดีว่า ผมทำระบบป้องกัน Hack อยู่ ในตัวระบบ ของผมจะคอยตรวจสอบ โปรแกรมที่ ห้ามใช้งาน เท่านั้นเอง แล้ว บังเอิญว่า มีบางคนรู้ทัน มักจะมา ปิด Process นี้ทิ้งไป ผมก็เลยคิดหาวิธีเอา โค้ทตัวนี้ มาป้องกันไม่ให้ ปิด Process ได้ครับ โค้ทด้านล่างทำงานได้ดี ป้องกันได้ดีมากเวลา จะkill process นี้ เครื่องจะ ขึ้นจอฟ้าทันที ปิดไม่ได้ แต่ปัญหามีอยู่ว่า พอผู้ใช้จะเลิกใช้งาน และปิดโปรแกรมไป มันจะขึ้นจอฟ้า ทุกครั้ง หลังจากปิดโปรแกรม อย่างถูกต้อง
ดังนั้นคำถามคือ


คำถามคือ " จะทำอย่างไร จะยกเลิกการ ป้องกัน เพื่อไม่ให้เกิด critical Process หรือจอฟ้า หลังจากปิดโปรแกรม "
โดยปรกติ จะ เรียกใช้แบบนี้


อันนี้คือ เรียกให้ทำงานตอน เปิดโปรแกรมมาทันที (Event Form_load)

Code
Sub Form_Load()
On Error Resume Next
ObtenerPrivilegios SE_DEBUG_NAME
Call RtlSetProcessIsCritical(0, 0, 1)
End Sub



พอผมทดลอง ใส่ปุ่มกดยกเลิกเข้าไปใน Form เพื่อสั่งยกเลิกการป้องกันแบบด้านล่าง ( Command1_click )
Code
Sub Command1_click()
On Error Resume Next
ObtenerPrivilegios SE_DEBUG_NAME
Call RtlSetProcessIsCritical(0, 0, 0)
End Sub


ก็ยั้งไม่ได้ผล
คือมันทำงาน การป้องกัน ได้ปรกติดีเยี่ยมครับ
แต่เวลาจะยกเลิกการทำงานนี้จะยกเลิกยังไง เท่านั้นเอง
ขอความช่วยเหลือด้วยครับ พอดีต้องการใช้งานด่วน
(หาตามเว็บนอกหมดแล้ว มีแต่ ภาษา C ซึ่งผมไม่ถนัด อีกอย่าง งานส่วนอื่น ทำจาก Vb6 หมดแล้ว)
จากโค้ทด้านล่างเป็นในส่วนของ Modul ครับ:

Code
Option Explicit
 
Private Const ANYSIZE_ARRAY = 1
Private Const TOKEN_ADJUST_PRIVILEGES = &H20
Private Const TOKEN_QUERY = &H8
Private Const SE_PRIVILEGE_ENABLED = &H2
 
Private Type LUID
	LowPart As Long
	HighPart As Long
End Type
Private Type LUID_AND_ATTRIBUTES
		pLuid As LUID
		Attributes As Long
End Type
Private Type TOKEN_PRIVILEGES
	PrivilegeCount As Long
	Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type
 
Public Declare Function RtlSetProcessIsCritical Lib "ntdll.dll" (ByVal NewValue As Boolean, ByVal OldValue As Boolean, ByVal WinLogon As Boolean)


Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLUID As LUID) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
 

Public Const SE_CREATE_TOKEN_NAME As String = "SeCreateTokenPrivilege"
Public Const SE_ASSIGNPRIMARYTOKEN_NAME As String = "SeAssignPrimaryTokenPrivilege"
Public Const SE_LOCK_MEMORY_NAME As String = "SeLockMemoryPrivilege"
Public Const SE_INCREASE_QUOTA_NAME As String = "SeIncreaseQuotaPrivilege"
Public Const SE_UNSOLICITED_INPUT_NAME As String = "SeUnsolicitedInputPrivilege"
Public Const SE_MACHINE_ACCOUNT_NAME As String = "SeMachineAccountPrivilege"
Public Const SE_TCB_NAME As String = "SeTcbPrivilege"
Public Const SE_SECURITY_NAME As String = "SeSecurityPrivilege"
Public Const SE_TAKE_OWNERSHIP_NAME As String = "SeTakeOwnershipPrivilege"
Public Const SE_LOAD_DRIVER_NAME As String = "SeLoadDriverPrivilege"
Public Const SE_SYSTEM_PROFILE_NAME As String = "SeSystemProfilePrivilege"
Public Const SE_SYSTEMTIME_NAME As String = "SeSystemtimePrivilege"
Public Const SE_PROF_SINGLE_PROCESS_NAME As String = "SeProfileSingleProcessPrivilege"
Public Const SE_INC_BASE_PRIORITY_NAME As String = "SeIncreaseBasePriorityPrivilege"
Public Const SE_CREATE_PAGEFILE_NAME As String = "SeCreatePagefilePrivilege"
Public Const SE_CREATE_PERMANENT_NAME As String = "SeCreatePermanentPrivilege"
Public Const SE_BACKUP_NAME As String = "SeBackupPrivilege"
Public Const SE_RESTORE_NAME As String = "SeRestorePrivilege"
Public Const SE_SHUTDOWN_NAME As String = "SeShutdownPrivilege"
Public Const SE_DEBUG_NAME As String = "SeDebugPrivilege"
Public Const SE_AUDIT_NAME As String = "SeAuditPrivilege"
Public Const SE_SYSTEM_ENVIRONMENT_NAME As String = "SeSystemEnvironmentPrivilege"
Public Const SE_CHANGE_NOTIFY_NAME As String = "SeChangeNotifyPrivilege"
Public Const SE_REMOTE_SHUTDOWN_NAME As String = "SeRemoteShutdownPrivilege"
 
Public Function ObtenerPrivilegios(ByVal privilegio As String) As Long

Dim lpLUID As LUID
Dim lpToken As TOKEN_PRIVILEGES
Dim lpAntToken As TOKEN_PRIVILEGES
Dim hToken As Long
Dim hProcess As Long
Dim res As Long
 
hProcess = GetCurrentProcess()
res = OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hToken)
If res = 0 Then
	Exit Function
End If
res = LookupPrivilegeValue(vbNullString, privilegio, lpLUID)
If res = 0 Then
	Exit Function
End If
With lpToken
	.PrivilegeCount = 1
	.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
	.Privileges(0).pLuid = lpLUID
End With
 
res = AdjustTokenPrivileges(hToken, False, lpToken, Len(lpToken), lpAntToken, Len(lpAntToken))
If res = 0 Then
	Exit Function
End If
ObtenerPrivilegios = res
End Function





Tag : VB.NET




ประวัติการแก้ไข
2012-05-14 21:40:36
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-05-14 21:34:06 By : scriptgod View : 1458 Reply : 3
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ยากหน่อยน่ะครับ อันที่จริงคุณเขียนเองก็เกือบได้แล้วน่ะครับ ปัญหาอยู่ที่ว่าคนที่มาดูมันรันหรือดีบักดูไม่ได้ซิครับ ช่วยยากหน่อย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-15 11:23:26 By : mr.win
 


 

No. 2



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.win เมื่อวันที่ 2012-05-15 11:23:26
รายละเอียดของการตอบ ::

ใช้ Vb6 ธรรมดา หรือ จะเป็นแบน Portable ก็ได้ครับ แล้วก็ ก๊อปโค้ท ด้านบนไปลองเล่นดูก็ เทสได้แล้วนิครับ
เพิ่ม โมดูล แล้วก็ ในส่วนของ form ก็ใส่โค้ท

Code (VB)
Sub Form_Load()
On Error Resume Next
ObtenerPrivilegios SE_DEBUG_NAME
Call RtlSetProcessIsCritical(0, 0, 1)
End Sub




แค่นี้ก็ลองดูได้แล้วครับ แต่ปัญหาคือ จะปิดมันยังไง แค่นั้นเอง เพื่อให้ เข้าสู่ normal mode - -'' มึนจริงๆ



ประวัติการแก้ไข
2012-05-15 22:04:13
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-15 22:03:11 By : scriptgod
 


 

No. 3

Guest


I've to guide for you via email horsemaster79 hotmail dot com
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-09-21 09:15:36 By : anaconda
 


   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : VB6 แบบง่ายๆ จิ๊บๆ ขอความช่วยเหลือ จากพี่ๆเก่งๆหน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่