| ²é¿´: 139 | »Ø¸´: 0 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
miRNAÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)
Ë®ÍõÖ®Íõ£¨ÓÞÓÞѧ԰¹ÜÀíÔ±£©
|
[½»Á÷]
VB¡°±ä̬¡±Ó÷¨Ö®¸ßЧ×Ö´®Ö¸ÕëÀà
|
||
|
ʹÓÃVBÀïµÄ×Ö´®ÀàÐÍStringÓÐÁ½´ó²»×㣺µÚÒ»¡¢ËüµÄ·ÖÅäÊÇÓÉVBÔËÐÐʱ¿ØÖÆ£¬ÎÒÃDz»Äܽ«Æä·ÖÅäÔÚÖ¸¶¨ÄÚ´æ´¦£»µÚ¶þ£¬ÈκÎÒ»´Î¶Ô×Ö´®µÄ¸³Öµ²Ù×÷¶¼Òª½øÐÐÄÚ´æÖØÐ·ÖÅ䡣ҪʵÏÖ¸ßЧ¡¢Áé»îµÄ×Ö´®´¦Àí£¬ÎÒÃDZØÐë¿Ë·þÕâÁ½´ó²»×ã¡£ ¡¡¡¡¶ÔÓÚµÚÒ»¸öÎÊÌ⣬ͨ¹ýÐÞ¸ÄString±äÁ¿Àï·Å×ŵÄBSTRÃèÊö·ûÖ¸Õë¿ÉÒÔʵÏÖ£»¶ÔÓÚµÚ¶þ¸öÎÊÌ⣬¿ÉÒÔÓÃMidÓï¾ä£¨×¢ÒâÊÇÓï¾ä¶ø²»ÊǺ¯Êý£©À´¸³Öµ¡£²»Ïêϸ½²ÁË£¬Ö±½Ó¿´ÏÂÃæµÄÕâ¸öÀࣺ ¡¡¡¡ ¡¡¡¡Option Explicit ¡¡¡¡'******************************************************** 'clsBSTR.cls ¡¡¡¡'×÷Õß: Ðܳ¬ ID: AdamBear 2 ¡¡¡¡'******************************************************** ¡¡¡¡ ¡¡¡¡Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) ¡¡¡¡ ¡¡¡¡'²»ÒªÖ±½Ó¶ÔsString¸³Öµ(¿ÉÒÔÓÃMIDÓï¾ä)£¬½«ÆäÉèΪ¹«ÓнöΪÌá¸ßЧÂÊ¡£ ¡¡¡¡Public sString As String 'BSTRÃèÊö·ûÖ¸Õë ¡¡¡¡ ¡¡¡¡Private pStr As Long 'BSTRµØÖ· ¡¡¡¡Private nMaxLen As Long 'BSTR×î´ó×Ö½ÚÊý ¡¡¡¡ ¡¡¡¡'Èñ¾×Ö´®Ö¸ÏòÌØ¶¨µØÖ· ¡¡¡¡Public Sub Attach(Addr As Long, Optional nLen As Long) ¡¡¡¡pStr = Addr ¡¡¡¡'ÐÞ¸ÄBSTRÃèÊö·ûÖ¸Õ룬ʹÆäÖ¸ÏòAddr ¡¡¡¡CopyMemory ByVal VarPtr(sString), Addr, 4 ¡¡¡¡ ¡¡¡¡If IsMissing(nLen) Then Exit Sub ¡¡¡¡'É趨×î´ó×Ö´®×Ö½ÚÊý ¡¡¡¡nMaxLen = nLen ¡¡¡¡ ¡¡¡¡End Sub ¡¡¡¡ ¡¡¡¡'»¹Ô±¾×Ö´®ÔBSTRÃèÊö·û ¡¡¡¡Public Sub Detach() ¡¡¡¡¡¡CopyMemory ByVal VarPtr(sString), 0&, 4 ¡¡¡¡End Sub ¡¡¡¡ ¡¡¡¡'Èñ¾×Ö´®Ö¸ÏòÔ´×Ö´® ¡¡¡¡Public Sub AttachStr(sStr As String) ¡¡¡¡¡¡Attach StrPtr(sStr), LenB(sStr) ¡¡¡¡End Sub ¡¡¡¡ ¡¡¡¡'dataΪȱʡÊôÐÔ ¡¡¡¡Public Property Let data(sVal As String) ¡¡¡¡¡¡Dim c As Long ¡¡¡¡¡¡c = LenB(sVal) ¡¡¡¡¡¡'³¬¹ý×î´ó×Ö´®Êý£¬Å׳ö´íÎó¡£ ¡¡¡¡¡¡If c > nMaxLen Then Err.Raise vbObjectError + 3000, "CString::Let Data", "Òç³ö" ¡¡¡¡¡¡'д×Ö´®³¤¶È ¡¡¡¡¡¡CopyMemory ByVal (pStr - 4), c, 4 ¡¡¡¡¡¡'д×Ö´® ¡¡¡¡¡¡Mid(sString, 1) = sVal ¡¡¡¡End Property ¡¡¡¡ ¡¡¡¡'¿ÉÒÔͨ¹ý¹«ÓбäÁ¿sStringÀ´¶Á×Ö´®£¬Ð§Âʸü¸ß ¡¡¡¡Public Property Get data() As String ¡¡¡¡¡¡data = sString ¡¡¡¡End Property ¡¡¡¡ ¡¡¡¡Private Sub Class_Terminate() ¡¡¡¡¡¡Call Detach ¡¡¡¡End Sub ¡¡¡¡¡¡¡¡Ó÷¨ÈçÏ£¬¼ÙÉèÎÒÃÇÒÑͨ¹ýVitualAlloc£¬HeapAlloc£¬MapViewOfFileÕâÑùµÄÄÚ´æ¹ÜÀíAPIµÃµ½ÁËÒ»¸ö4k¸ö×ֽڵĿɶÁдµÄÄÚ´æµØÖ·baseAddr£º ¡¡¡¡Dim sShare As New clsBSTR ¡¡¡¡'ÁôÏÂǰ4¸ö×Ö½ÚÓÃÓÚBSTR±£´æ×Ö´®×Ö½ÚÊý ¡¡¡¡sShare.Attach(baseAddr+4, 4096-4) ¡¡¡¡'ÏÂÃæµÄ×Ö´®"Test"»áÖ±½Óдµ½baseAddr+4×Ö½Ú´¦ ¡¡¡¡sShare = "Test" ¡¡¡¡Dim y As String ¡¡¡¡'¶Á×Ö´®Ê±¿ÉÒÔÓÃsStringÊôÐÔ»òȱʡÊôÐÔ ¡¡¡¡y = sShare.sString ¡¡¡¡'ÓÃAttachStr·½·¨Attachµ½Ò»¸ö×Ö´®¡£ ¡¡¡¡'±ØÐëÒªÏÈDetach ¡¡¡¡sShare.Detach ¡¡¡¡sShare.AttachStr(y) ¡¡¡¡sShare = "Hahaha" ¡¡¡¡Debug.Print y ¡¡¡¡'Ò»µ©AttachStrµ½×Ö´®yºó£¬¶ÔsShareµÄÐ޸ľÍÏ൱ÓÚ¶ÔyµÄÐ޸ġ£ ¡¡¡¡'²¢ÇÒÒÔºó¶ÔyµÄÐÞ¸ÄÒ²Ö»ÄÜÓÃMidÓï¾ä ¡¡¡¡Mid(y, 1) = "xxxxx" ¡¡¡¡'²»ÄÜÖ±½Ó¸³Öµ£¬ÕâÑùVB»á½«ÔÀ´yËùÖ¸£¨Ò²ÊÇsShareËùÖ¸£©ÄÚ´æÊÍ·Å£¬ ¡¡¡¡' ÖØÐ·ÖÅäy¡£ÕâÑùÔÚ·ÃÎÊsShareʱ»á³ö´í¡£ ¡¡¡¡'y = "Test" ¡¡¡¡Ê¹ÓÃÕâ¸öÀàÓм¸¸öÐèҪעÒâµÄµØ·½¡£ ¡¡¡¡1¡¢¶Á×Ö´®Ê±¿ÉÒÔÓÃsStringÊôÐÔÀ´¶Á£¬¸ü¿ì¡£ ¡¡¡¡¶ÁsShareÓÐÁ½ÖÖ·½·¨£¬Ò»ÖÖÊÇÓÃȱʡÊôÐÔDataÀ´¶Á£¬Ò»ÖÖÊÇÖ±½ÓÓÃsStringÊôÐÔÀ´¶Á¡£ÓÃsStringÊôÐÔ²»ÖØÐ·ÖÅäÄڴ棬Ҫ¿ìµÃ¶à¡£ ¡¡¡¡2¡¢²»ÒªÖ±½Ó¸øsString¸³Öµ£¬Ó¦Ê¹ÓÃȱʡµÄdataÊôÐÔÀ´¸³Öµ¡£ ¡¡¡¡Ö®ËùÒÔ°ÑsStringÊôÐÔ±©Â¶³öÀ´£¬ÊÇΪÁËЧÂʺͷ½±ã¡£ÎÒÃÇ¿ÉÒÔÓÃMidÓï¾ä¶ÔÆä½øÐÐÐ޸쬵«²»ÒªÖ±½ÓÓÃ"="À´¸³Öµ¡£ ¡¡¡¡3¡¢×¢ÒâAttachµÄµÚ¶þ¸ö²ÎÊý£¬±íʾ×Ö´®µÄ×î´ó×Ö½ÚÊý£¬²»ÒªÈÃËü³¬¹ýÒѾ·ÖÅäµÄÄÚ´æ¡£ ¡¡¡¡4¡¢ÓÃAttachStr½«±¾×Ö´®¶ÔÏóAttachµ½Ä³¸ö×Ö´®£¨±ÈÈçÉÏÃæµÄy£©ÉϺ󣬲»ÄÜÔÙ¶ÔÕâ¸ö×Ö´®yÖØÐ¸³Öµ£¬Ò²²»Äܽ«Æä´«µÝµ½»á¶ÔÆäÖØÐ¸³ÖµµÄ¹ý³Ì¡£ ¡¡¡¡Õâô¶àÐèҪעÒâµÄÎÊÌ⣬ÓÃÆðÀ´Æñ²»ÊǸü²»·½±ã¡£µÄÈ·£¬ÓÃËüµÄ֮ǰҪ¿¼ÂÇÊDz»ÊDZØÐëµÄ¡£ÒòΪ½¨Á¢Õâ¸öÀàÒ²Ò»ÑùÓпªÏú¡£ËùÒÔ»¹ÓÐÒ»¸öÐèҪעÒâµÄÎÊÌ⣺ ¡¡¡¡5¡¢ËüÖ÷ÒªµÄÓ¦Óû¹ÊÇÔÚÓÚ½«×Ö´®°²·ÅÔÚÖ¸¶¨ÄÚ´æ´¦¡£ËäÈ»ËüÒ²¿ÉÒÔÈÃͬһ¸ö½ø³ÌÄÚ¼¸¸öµÄ×Ö´®´ïµ½¹²ÏíµÄÄ¿µÄ£¬µ«ÊÇÈç¹ûÖ»ÊÇÁ½Èý¸öºÜСµÄ×Ö´®ÕâÑùʱ×ö·´¶øÂýÁË¡£ ¡¡¡¡ºó¼Æ£º ¡¡¡¡Êý×éÖ¸ÕëºÍ×Ö´®Ö¸ÕëÎÒÃÇÒѾ̸¹ýÁË£¬¶ÔÓÚÆÕͨµÄÊýÖµÀàÐͱäÁ¿µÄÖ¸ÕëûÓÐʲôHackµÄ±ØÒª£¬µ«ÊÇËü¹ØÏµµ½Ò»¸öÓÐÓõļ¼Êõ£¬ÏÂÆªÎÄÕÂÔÙ̸¡£ [ Last edited by »ÃÓ°ÎÞºÛ on 2006-10-3 at 14:06 ] |
» ²ÂÄãϲ»¶
¿ÒÇëÓÐѧУÊÕÁô
ÒѾÓÐ6È˻ظ´
Çóµ÷¼ÁÍÆ¼ö
ÒѾÓÐ8È˻ظ´
0854Çóµ÷¼Á
ÒѾÓÐ14È˻ظ´
300Çóµ÷¼Á
ÒѾÓÐ9È˻ظ´
291Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´
289 ·Ö105500ҩѧר˶Çóµ÷¼Á(ÕÒBÇøÑ§Ð£)
ÒѾÓÐ4È˻ظ´
³õÊÔ324 ÖÐҩѧ Ò»Ö¾Ô¸ÌìÖÐÒ½ Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´
ҩѧÇóµ÷¼Á
ÒѾÓÐ14È˻ظ´
327Çóµ÷¼Á
ÒѾÓÐ27È˻ظ´
¼±Ðèµ÷¼Á
ÒѾÓÐ5È˻ظ´














»Ø¸´´ËÂ¥
5