VB的SizeOfCode 有一点点的Bug
发布时间:2020-12-16 22:27:29 所属栏目:大数据 来源:网络整理
导读:Option ExplicitDim initFlag As LongPublic opflag(0 To 255) As Byte,opexflag(0 To 255) As BytePrivate Function flagInitialize() As Long opflag(0) = 1: opflag(1) = 1 opflag(2) = 1: opflag(3) = 1 opflag(4) = 2: opflag(5) = 16 opflag(6) = 0: o
Option Explicit Dim initFlag As Long Public opflag(0 To 255) As Byte,opexflag(0 To 255) As Byte Private Function flagInitialize() As Long opflag(0) = 1: opflag(1) = 1 opflag(2) = 1: opflag(3) = 1 opflag(4) = 2: opflag(5) = 16 opflag(6) = 0: opflag(7) = 0 opflag(8) = 1: opflag(9) = 1 opflag(10) = 1: opflag(11) = 1 opflag(12) = 2: opflag(13) = 16 opflag(14) = 0: opflag(15) = 0 opflag(16) = 1: opflag(17) = 1 opflag(18) = 1: opflag(19) = 1 opflag(20) = 2: opflag(21) = 16 opflag(22) = 0: opflag(23) = 0 opflag(24) = 1: opflag(25) = 1 opflag(26) = 1: opflag(27) = 1 opflag(28) = 2: opflag(29) = 16 opflag(30) = 0: opflag(31) = 0 opflag(32) = 1: opflag(33) = 1 opflag(34) = 1: opflag(35) = 1 opflag(36) = 2: opflag(37) = 16 opflag(38) = 0: opflag(39) = 0 opflag(40) = 1: opflag(41) = 1 opflag(42) = 1: opflag(43) = 1 opflag(44) = 2: opflag(45) = 16 opflag(46) = 0: opflag(47) = 0 opflag(48) = 1: opflag(49) = 1 opflag(50) = 1: opflag(51) = 1 opflag(52) = 2: opflag(53) = 16 opflag(54) = 0: opflag(55) = 0 opflag(56) = 1: opflag(57) = 1 opflag(58) = 1: opflag(59) = 1 opflag(60) = 2: opflag(61) = 16 opflag(62) = 0: opflag(63) = 0 opflag(64) = 0: opflag(65) = 0 opflag(66) = 0: opflag(67) = 0 opflag(68) = 0: opflag(69) = 0 opflag(70) = 0: opflag(71) = 0 opflag(72) = 0: opflag(73) = 0 opflag(74) = 0: opflag(75) = 0 opflag(76) = 0: opflag(77) = 0 opflag(78) = 0: opflag(79) = 0 opflag(80) = 0: opflag(81) = 0 opflag(82) = 0: opflag(83) = 0 opflag(84) = 0: opflag(85) = 0 opflag(86) = 0: opflag(87) = 0 opflag(88) = 0: opflag(89) = 0 opflag(90) = 0: opflag(91) = 0 opflag(92) = 0: opflag(93) = 0 opflag(94) = 0: opflag(95) = 0 opflag(96) = 0: opflag(97) = 0 opflag(98) = 1: opflag(99) = 1 opflag(100) = 0: opflag(101) = 0 opflag(102) = 0: opflag(103) = 0 opflag(104) = 16: opflag(105) = 17 opflag(106) = 2: opflag(107) = 3 opflag(108) = 0: opflag(109) = 0 opflag(110) = 0: opflag(111) = 0 opflag(112) = 2: opflag(113) = 2 opflag(114) = 2: opflag(115) = 2 opflag(116) = 2: opflag(117) = 2 opflag(118) = 2: opflag(119) = 2 opflag(120) = 2: opflag(121) = 2 opflag(122) = 2: opflag(123) = 2 opflag(124) = 2: opflag(125) = 2 opflag(126) = 2: opflag(127) = 2 opflag(128) = 3: opflag(129) = 17 opflag(130) = 3: opflag(131) = 3 opflag(132) = 1: opflag(133) = 1 opflag(134) = 1: opflag(135) = 1 opflag(136) = 1: opflag(137) = 1 opflag(138) = 1: opflag(139) = 1 opflag(140) = 1: opflag(141) = 1 opflag(142) = 1: opflag(143) = 1 opflag(144) = 0: opflag(145) = 0 opflag(146) = 0: opflag(147) = 0 opflag(148) = 0: opflag(149) = 0 opflag(150) = 0: opflag(151) = 0 opflag(152) = 0: opflag(153) = 0 opflag(154) = 12: opflag(155) = 0 opflag(156) = 0: opflag(157) = 0 opflag(158) = 0: opflag(159) = 0 opflag(160) = 16: opflag(161) = 16 opflag(162) = 16: opflag(163) = 16 opflag(164) = 0: opflag(165) = 0 opflag(166) = 0: opflag(167) = 0 opflag(168) = 2: opflag(169) = 16 opflag(170) = 0: opflag(171) = 0 opflag(172) = 0: opflag(173) = 0 opflag(174) = 0: opflag(175) = 0 opflag(176) = 2: opflag(177) = 2 opflag(178) = 2: opflag(179) = 2 opflag(180) = 2: opflag(181) = 2 opflag(182) = 2: opflag(183) = 2 opflag(184) = 16: opflag(185) = 16 opflag(186) = 16: opflag(187) = 16 opflag(188) = 16: opflag(189) = 16 opflag(190) = 16: opflag(191) = 16 opflag(192) = 3: opflag(193) = 3 opflag(194) = 4: opflag(195) = 0 opflag(196) = 1: opflag(197) = 1 opflag(198) = 3: opflag(199) = 17 opflag(200) = 6: opflag(201) = 0 opflag(202) = 4: opflag(203) = 0 opflag(204) = 0: opflag(205) = 2 opflag(206) = 0: opflag(207) = 0 opflag(208) = 1: opflag(209) = 1 opflag(210) = 1: opflag(211) = 1 opflag(212) = 2: opflag(213) = 2 opflag(214) = 0: opflag(215) = 0 opflag(216) = 32: opflag(217) = 32 opflag(218) = 32: opflag(219) = 32 opflag(220) = 32: opflag(221) = 32 opflag(222) = 32: opflag(223) = 32 opflag(224) = 2: opflag(225) = 2 opflag(226) = 2: opflag(227) = 2 opflag(228) = 2: opflag(229) = 2 opflag(230) = 2: opflag(231) = 2 opflag(232) = 80: opflag(233) = 80 opflag(234) = 12: opflag(235) = 2 opflag(236) = 0: opflag(237) = 0 opflag(238) = 0: opflag(239) = 0 opflag(240) = 0: opflag(241) = 0 opflag(242) = 0: opflag(243) = 0 opflag(244) = 0: opflag(245) = 0 opflag(246) = 1: opflag(247) = 1 opflag(248) = 0: opflag(249) = 0 opflag(250) = 0: opflag(251) = 0 opflag(252) = 0: opflag(253) = 0 opflag(254) = 1: opflag(255) = 65 opexflag(0) = 1: opexflag(1) = 1 opexflag(2) = 1: opexflag(3) = 1 opexflag(4) = 0: opexflag(5) = 0 opexflag(6) = 0: opexflag(7) = 0 opexflag(8) = 0: opexflag(9) = 0 opexflag(10) = 0: opexflag(11) = 0 opexflag(12) = 0: opexflag(13) = 0 opexflag(14) = 0: opexflag(15) = 0 opexflag(16) = 0: opexflag(17) = 0 opexflag(18) = 0: opexflag(19) = 0 opexflag(20) = 0: opexflag(21) = 0 opexflag(22) = 0: opexflag(23) = 0 opexflag(24) = 0: opexflag(25) = 0 opexflag(26) = 0: opexflag(27) = 0 opexflag(28) = 0: opexflag(29) = 0 opexflag(30) = 0: opexflag(31) = 0 opexflag(32) = 1: opexflag(33) = 1 opexflag(34) = 1: opexflag(35) = 1 opexflag(36) = 1: opexflag(37) = 0 opexflag(38) = 1: opexflag(39) = 0 opexflag(40) = 0: opexflag(41) = 0 opexflag(42) = 0: opexflag(43) = 0 opexflag(44) = 0: opexflag(45) = 0 opexflag(46) = 0: opexflag(47) = 0 opexflag(48) = 0: opexflag(49) = 0 opexflag(50) = 0: opexflag(51) = 0 opexflag(52) = 0: opexflag(53) = 0 opexflag(54) = 0: opexflag(55) = 0 opexflag(56) = 0: opexflag(57) = 0 opexflag(58) = 0: opexflag(59) = 0 opexflag(60) = 0: opexflag(61) = 0 opexflag(62) = 0: opexflag(63) = 0 opexflag(64) = 1: opexflag(65) = 1 opexflag(66) = 1: opexflag(67) = 1 opexflag(68) = 1: opexflag(69) = 1 opexflag(70) = 1: opexflag(71) = 1 opexflag(72) = 1: opexflag(73) = 1 opexflag(74) = 1: opexflag(75) = 1 opexflag(76) = 1: opexflag(77) = 1 opexflag(78) = 1: opexflag(79) = 1 opexflag(80) = 0: opexflag(81) = 0 opexflag(82) = 0: opexflag(83) = 0 opexflag(84) = 0: opexflag(85) = 0 opexflag(86) = 0: opexflag(87) = 0 opexflag(88) = 0: opexflag(89) = 0 opexflag(90) = 0: opexflag(91) = 0 opexflag(92) = 0: opexflag(93) = 0 opexflag(94) = 0: opexflag(95) = 0 opexflag(96) = 1: opexflag(97) = 1 opexflag(98) = 1: opexflag(99) = 1 opexflag(100) = 1: opexflag(101) = 1 opexflag(102) = 1: opexflag(103) = 1 opexflag(104) = 1: opexflag(105) = 1 opexflag(106) = 1: opexflag(107) = 1 opexflag(108) = 0: opexflag(109) = 0 opexflag(110) = 1: opexflag(111) = 1 opexflag(112) = 0: opexflag(113) = 3 opexflag(114) = 3: opexflag(115) = 3 opexflag(116) = 1: opexflag(117) = 1 opexflag(118) = 1: opexflag(119) = 0 opexflag(120) = 0: opexflag(121) = 0 opexflag(122) = 0: opexflag(123) = 0 opexflag(124) = 0: opexflag(125) = 0 opexflag(126) = 1: opexflag(127) = 1 opexflag(128) = 80: opexflag(129) = 80 opexflag(130) = 80: opexflag(131) = 80 opexflag(132) = 80: opexflag(133) = 80 opexflag(134) = 80: opexflag(135) = 80 opexflag(136) = 80: opexflag(137) = 80 opexflag(138) = 80: opexflag(139) = 80 opexflag(140) = 80: opexflag(141) = 80 opexflag(142) = 80: opexflag(143) = 80 opexflag(144) = 1: opexflag(145) = 1 opexflag(146) = 1: opexflag(147) = 1 opexflag(148) = 1: opexflag(149) = 1 opexflag(150) = 1: opexflag(151) = 1 opexflag(152) = 1: opexflag(153) = 1 opexflag(154) = 1: opexflag(155) = 1 opexflag(156) = 1: opexflag(157) = 1 opexflag(158) = 1: opexflag(159) = 1 opexflag(160) = 0: opexflag(161) = 0 opexflag(162) = 0: opexflag(163) = 1 opexflag(164) = 3: opexflag(165) = 1 opexflag(166) = 0: opexflag(167) = 0 opexflag(168) = 0: opexflag(169) = 0 opexflag(170) = 0: opexflag(171) = 1 opexflag(172) = 3: opexflag(173) = 1 opexflag(174) = 0: opexflag(175) = 1 opexflag(176) = 1: opexflag(177) = 1 opexflag(178) = 1: opexflag(179) = 1 opexflag(180) = 1: opexflag(181) = 1 opexflag(182) = 1: opexflag(183) = 1 opexflag(184) = 0: opexflag(185) = 0 opexflag(186) = 1: opexflag(187) = 1 opexflag(188) = 1: opexflag(189) = 1 opexflag(190) = 1: opexflag(191) = 1 opexflag(192) = 1: opexflag(193) = 1 opexflag(194) = 0: opexflag(195) = 0 opexflag(196) = 0: opexflag(197) = 0 opexflag(198) = 0: opexflag(199) = 1 opexflag(200) = 0: opexflag(201) = 0 opexflag(202) = 0: opexflag(203) = 0 opexflag(204) = 0: opexflag(205) = 0 opexflag(206) = 0: opexflag(207) = 0 opexflag(208) = 0: opexflag(209) = 1 opexflag(210) = 1: opexflag(211) = 1 opexflag(212) = 0: opexflag(213) = 1 opexflag(214) = 0: opexflag(215) = 0 opexflag(216) = 1: opexflag(217) = 1 opexflag(218) = 0: opexflag(219) = 1 opexflag(220) = 1: opexflag(221) = 1 opexflag(222) = 0: opexflag(223) = 1 opexflag(224) = 0: opexflag(225) = 1 opexflag(226) = 1: opexflag(227) = 0 opexflag(228) = 0: opexflag(229) = 1 opexflag(230) = 0: opexflag(231) = 0 opexflag(232) = 1: opexflag(233) = 1 opexflag(234) = 0: opexflag(235) = 1 opexflag(236) = 1: opexflag(237) = 1 opexflag(238) = 0: opexflag(239) = 1 opexflag(240) = 0: opexflag(241) = 1 opexflag(242) = 1: opexflag(243) = 1 opexflag(244) = 0: opexflag(245) = 1 opexflag(246) = 0: opexflag(247) = 0 opexflag(248) = 1: opexflag(249) = 1 opexflag(250) = 1: opexflag(251) = 0 opexflag(252) = 1: opexflag(253) = 1 opexflag(254) = 1: opexflag(255) = 0 flagInitialize = 1 End Function Public Function SizeOfCode(dat() As Byte,ByRef pOpcode As Integer) As Long Dim p66 As Long,p67 As Long Dim sib As Long,m As Long,rm As Long,dispLen As Long Dim i As Long,f As Long,r As Long If initFlag = 0 Then initFlag = flagInitialize() Do Select Case dat(i) Case &H26,&H2E,&H36,&H3E,&H64,&H65,&HF0,&HF2,&HF3 Case &H66 p66 = True Case &H67 p67 = True Case Else Exit Do End Select i = i + 1 If i > 16 Then Exit Function Loop pOpcode = dat(i) If dat(i) = &HF Then i = i + 1 pOpcode = &HF00 + dat(i) f = opexflag(dat(i)) Else f = opflag(dat(i)) End If i = i + 1 If f And &H20 Then i = i + 1 If f And 1 Then m = dat(i) And &HC0 rm = dat(i) And 7 i = i + 1 sib = ((Not p67) And rm = 4) Select Case m Case 0 If p67 And rm = 6 Then dispLen = 2 If (Not p67) And rm = 5 Then dispLen = 4 Case &H40 dispLen = 1 Case &H80 If p67 Then dispLen = 2 Else dispLen = 4 Case &HC0 sib = 0 End Select If sib Then If (dat(i) And 7 = 5) And (m = 0 Or m = 2) Then dispLen = 4 i = i + 1 End If i = i + dispLen End If If f And 2 Then i = i + 1 If f And 4 Then i = i + 2 If f And 8 Then i = i + 4 If f And &H10 Then If p66 Then i = i + 2 Else i = i + 4 SizeOfCode = i End Function Public Function SizeOfProc(dat() As Byte) As Long Dim l As Long,op As Integer,r As Long Dim b() As Byte,i As Long,n As Long b = dat Do l = SizeOfCode(b,op) r = r + l If l = 1 And op = &HC3 Then Exit Do If l = 3 And op = &HC2 Then Exit Do n = UBound(b) i = 0 b = MidB(b,l + 1) Loop Until l = 0 SizeOfProc = r End Function (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |