namespace raw.asm.opCode; var tab_1 = { 2048;2048;2048;2048;4096;4096;0;0;2048;2048;2048;2048;4096;4096;0;16384;2048;2048;2048;2048;4096;4096;0;0;2048;2048;2048;2048;4096; 4096;0;0;2048;2048;2048;2048;4096;4096;1;0;2048;2048;2048;2048;4096;4096;1;0;2048;2048;2048;2048;4096;4096;1;0;2048;2048;2048;2048;4096; 4096;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2048;2048;1;1;3;5;8;2056;16;2064;0;0;0;0;16;16;16;16;16;16;16; 16;16;16;16;16;16;16;16;16;2064;2056;2064;2064;2048;2048;2048;2048;2048;2048;2048;2048;2048;2048;2048;2048;0;0;0;0;0;0;0;0;0;0;520;0;0;0;0;0;128; 128;128;128;0;0;0;0;16;8;0;0;0;0;0;0;16;16;16;16;16;16;16;16;8;8;8;8;8;8;8;8;2064;2064;32;0;2048;2048;2056;2056;48;0;32;0;0;80;0;0;2048;2048;2048;2048; 0;0;0;0;2048;2048;2048;2048;2048;2048;2048;2048;16;16;16;16;16;16;16;16;8;8;520;16;0;0;0;0;1;0;1;1;0;0;8192;8192;0;0;0;0;0;0;2048;2048 } var tab_0F = { 2048;2048;2048;2048;-1;-1;0;-1;0;0;0;0;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1; -1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1; -1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8; 2048;2048;2048;2048;2048;2048;2048;2048;2048;2048;2048;2048;2048;2048;2048;2048;0;0;0;2048;2064;2048;-1;-1;0;0;0;2048;2064;2048;-1;2048;2048; 2048;2048;2048;2048;2048;2048;2048;-1;-1;2064;2048;2048;2048;2048;2048;2048;2048;-1;-1;-1;-1;-1;-1;0;0;0;0;0;0;0;0;-1;-1;-1;-1;-1;-1;-1;-1;-1; -1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1 } getHookSize = function(opCode,gt){ var nSize = 0; do{ var nDisassemblerLen = getSize(opCode,nSize+1); nSize = nDisassemblerLen + nSize; } while(nSize < gt ) return nSize,..string.left(opCode,nSize); } getSize = function( opCode ,idxBegin = 1 ) { var f = 0; var mod=0; var rm=0; var b; var idx = idxBegin; do{ b = opCode[idx];idx++; f |= tab_1[b+1]; if (f&0x2000) if (((opCode[idx])&0x38)==0) // ttt f=0x800+0x1000;// TEST else f=0x800;// NOT,NEG,MUL,IMUL,DIV,IDIV if (f&0x4000) { b = opCode[idx];idx++; f = tab_0F[b+1]; } if (f==0xFFFFFFFF/*C_ERROR*/) { return 0xFFFFFFFF/*C_ERROR*/; } if (f&1/*C_PREFIX*/) { f&=~1/*C_PREFIX*/; continue; } if (f&0x1000) if (b&0x1) f|=8; else f|=0x10; if (f&0x800) { b = opCode[idx];idx++; mod = b & 0xC0; rm = b & 0x7; if (mod!=0xC0) { if (f&4) { if ((mod==0)&&(rm==0x6)) f|=0x100; if (mod==0x40) f|=0x100; if (mod==0x80) f|=0x100; } else { if (mod==0x40) f|=0x100; if (mod==0x80) f|=0x400; if (rm==0x4) { rm = ( opCode[idx] ) & 0x7; idx++; } if ((rm==0x5)&&(mod==0)) f|=0x400; } } } if (f&0x80) if (f&4) f|=0x100; else f|=0x400; if (f&8) if (f&2) f|=0x20; else f|=0x40; if (f&0x100) idx++; if (f&0x100) idx+=2; if (f&0x400) idx+=4; if (f&0x10) idx++; if (f&0x20) idx+=2; if (f&0x40) idx+=4; return idx - idxBegin; } while(true) } /**intellisense(raw.asm.opCode) getSize(.(指令串) = 返回指令长度,截取指令串 end intellisense**/