亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? disassembler.c

?? 一個類似與Windows環境下的softice的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    for( arg=p->args; arg!=0; arg--, pArg++, arg? nPos += PICE_sprintf( pDis->szDisasm+nPos,", ") : 0 )    {        switch( *pArg )        {             case _Eb :                                         // modR/M used - bW = 0                bW = 0;                goto _E;             case _Ev :                                         // modR/M used - bW = 1                bW = 1;                goto _E;             case _Ew :                                         // always USHORT size                pDis->dwFlags &= ~DIS_DATA32;                bW = 1;                goto _E;             case _Ms :                                         // fword ptr (sgdt,sidt,lgdt,lidt)                sPtr = sFwordPtr;                goto _E1;             case _Mq :                                         // qword ptr (cmpxchg8b)                sPtr = sQwordPtr;                goto _E1;             case _Mp :                                         // 32 or 48 bit pointer (les,lds,lfs,lss,lgs)             case _Ep :                                         // Always a memory pointer (call, jmp)                if( pDis->dwFlags & DIS_DATA32 )                    sPtr = sFwordPtr;                else                    sPtr = sDwordPtr;                goto _E1;             _E:                 // Do registers first so that the rest may be done together                 if( bMod == 3 )                 {                      // Registers depending on the w field and data size                      nPos+=PICE_sprintf(pDis->szDisasm+nPos, "%s", sRegs1[DIS_GETDATASIZE(pDis->dwFlags)][bW][bRm] );                      break;                 }                 if( bW==0 )                     sPtr = sBytePtr;                 else                     if( pDis->dwFlags & DIS_DATA32 )                         sPtr = sDwordPtr;                     else                         sPtr = sWordPtr;             case _M  :                                         // Pure memory pointer (lea,invlpg,floats)                if( bMod == 3 ) goto IllegalOpcode;             _E1:                 if( sPtr )                     nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", sPtr );             case _Ma :                                         // Used by bound instruction, skip the pointer info                 // Print the segment if it is overriden                 //                 nPos += PICE_sprintf( pDis->szDisasm+nPos,"%s", sSegOverride[ bSegOverride ] );                 //                 // Special case when sib UCHAR is present in 32 address encoding                 //                 if( (bRm==4) && (pDis->dwFlags & DIS_ADDRESS32) )                 {                      //                      // Get the s-i-b UCHAR and parse it                      //                      bSib = NEXTUCHAR;                      bSs = bSib >> 6;                      bIndex = (bSib >> 3) & 7;                      bBase = bSib & 7;                      // Special case for base=5 && mod==0 -> fetch 32 bit offset                      if( (bBase==5) && (bMod==0) )                      {                          dwULONG = NEXTULONG;#ifdef ACTIVATE_SYMBOL_LOOKUP                          if(FindSymbolByAddress(&pSymbolName,dwULONG))                          {                              nPos += PICE_sprintf( pDis->szDisasm+nPos,"[%s", pSymbolName );                          }                          else#endif // ACTIVATE_SYMBOL_LOOKUP                              nPos += PICE_sprintf( pDis->szDisasm+nPos,"[%08X", (unsigned int) dwULONG );                      }                      else                          nPos += PICE_sprintf( pDis->szDisasm+nPos,"[%s", sGenReg16_32[ 1 ][ bBase ] );                      // Scaled index, no index if bIndex is 4                      if( bIndex != 4 )                          nPos += PICE_sprintf( pDis->szDisasm+nPos,"+%s%s", sScale[ bSs ], sGenReg16_32[ 1 ][ bIndex ] );                      else                          if(bSs != 0)                              nPos += PICE_sprintf( pDis->szDisasm+nPos,"<INVALID MODE>" );                      // Offset 8 bit or 32 bit                      if( bMod == 1 )                      {                          bUCHAR = NEXTUCHAR;                          if( (signed char)bUCHAR < 0 )                                 nPos += PICE_sprintf( pDis->szDisasm+nPos,"-%02X", 0-(signed char)bUCHAR );                          else                                 nPos += PICE_sprintf( pDis->szDisasm+nPos,"+%02X", bUCHAR );                      }                      if( bMod == 2 )                      {                          dwULONG = NEXTULONG;                          nPos += PICE_sprintf( pDis->szDisasm+nPos,"+%08X", (unsigned int) dwULONG );                      }                      // Wrap up the instruction                      nPos += PICE_sprintf( pDis->szDisasm+nPos,"]" );                      break;                 }                 //                 // 16 or 32 address bit cases with mod zero, one or two                 //                 // Special cases when r/m is 5 and mod is 0, immediate d16 or d32                 if( bMod==0 && ((bRm==6 && !(pDis->dwFlags & DIS_ADDRESS32)) || (bRm==5 && (pDis->dwFlags & DIS_ADDRESS32))) )                 {                      if( pDis->dwFlags & DIS_ADDRESS32 )                      {                          dwULONG = NEXTULONG;#ifdef ACTIVATE_SYMBOL_LOOKUP                          if(FindSymbolByAddress(&pSymbolName,dwULONG))                              nPos += PICE_sprintf( pDis->szDisasm+nPos,"[%s]", pSymbolName );                          else#endif // ACTIVATE_SYMBOL_LOOKUP                              nPos += PICE_sprintf( pDis->szDisasm+nPos,"[%08X]", (unsigned int) dwULONG );                      }                      else                      {                          wUSHORT = NEXTUSHORT;                          nPos += PICE_sprintf( pDis->szDisasm+nPos,"[%04X]", wUSHORT );                      }                      break;                 }                 // Print the start of the line                 nPos += PICE_sprintf( pDis->szDisasm+nPos,"[%s", sAdr1[DIS_GETADDRSIZE(pDis->dwFlags)][ bRm ] );                 // Offset (8 or 16) or (8 or 32) bit - 16, 32 bits are unsigned                 if( bMod==1 )                 {                      bUCHAR = NEXTUCHAR;                      if( (signed char)bUCHAR < 0 )                             nPos += PICE_sprintf( pDis->szDisasm+nPos,"-%02X", 0-(signed char)bUCHAR );                      else                             nPos += PICE_sprintf( pDis->szDisasm+nPos,"+%02X", bUCHAR );                 }                 if( bMod==2 )                 {                      if( pDis->dwFlags & DIS_ADDRESS32 )                      {                          dwULONG = NEXTULONG;                          nPos += PICE_sprintf( pDis->szDisasm+nPos,"+%08X", (unsigned int) dwULONG );                      }                      else                      {                          wUSHORT = NEXTUSHORT;                          nPos += PICE_sprintf( pDis->szDisasm+nPos,"+%04X", wUSHORT );                      }                 }                 // Wrap up the instruction                 nPos += PICE_sprintf( pDis->szDisasm+nPos,"]" );             break;             case _Gb :                                         // general, UCHAR register                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", sRegs1[0][0][ bReg ] );             break;             case _Gv :                                         // general, (d)USHORT register                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", sGenReg16_32[DIS_GETDATASIZE(pDis->dwFlags)][ bReg ] );             break;             case _Yb :                                         // ES:(E)DI pointer             case _Yv :                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s%s", sSegOverrideDefaultES[ bSegOverride ], sYptr[DIS_GETADDRSIZE(pDis->dwFlags)] );             break;             case _Xb :                                         // DS:(E)SI pointer             case _Xv :                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s%s", sSegOverrideDefaultDS[ bSegOverride ], sXptr[DIS_GETADDRSIZE(pDis->dwFlags)] );             break;             case _Rd :                                         // general register double USHORT                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", sGenReg16_32[ 1 ][ bRm ] );             break;             case _Rw :                                         // register USHORT                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", sGenReg16_32[ 0 ][ bMod ] );             break;             case _Sw :                                         // segment register                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", sSeg[ bReg ] );             break;             case _Cd :                                         // control register                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", sControl[ bReg ] );             break;             case _Dd :                                         // debug register                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", sDebug[ bReg ] );             break;             case _Td :                                         // test register                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", sTest[ bReg ] );             break;             case _Jb :                                         // immediate UCHAR, relative offset                 bUCHAR = NEXTUCHAR;                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "SHORT %08X", (unsigned int)(pDis->bpTarget + (signed char)bUCHAR + bInstrLen) );             break;             case _Jv :                                         // immediate USHORT or ULONG, relative offset                 if( pDis->dwFlags & DIS_DATA32 )                 {                      dwULONG = NEXTULONG;#ifdef ACTIVATE_SYMBOL_LOOKUP                      if(FindSymbolByAddress(&pSymbolName,(unsigned int)(pDis->bpTarget + (signed long)dwULONG + bInstrLen)))                        nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", pSymbolName );                      else#endif // ACTIVATE_SYMBOL_LOOKUP                        nPos += PICE_sprintf( pDis->szDisasm+nPos, "%08X", (unsigned int)(pDis->bpTarget + (signed long)dwULONG + bInstrLen) );                 }                 else                 {                     wUSHORT = NEXTUSHORT;#ifdef ACTIVATE_SYMBOL_LOOKUP                     if(FindSymbolByAddress(&pSymbolName,(unsigned int)(pDis->bpTarget + (signed short)wUSHORT + bInstrLen)))                        nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", pSymbolName );                     else#endif // ACTIVATE_SYMBOL_LOOKUP                        nPos += PICE_sprintf( pDis->szDisasm+nPos, "%08X", (unsigned int)(pDis->bpTarget + (signed short)wUSHORT + bInstrLen) );                 }             break;             case _O  :                                         // Simple USHORT or ULONG offset                  if( pDis->dwFlags & DIS_ADDRESS32 )           // depending on the address size                  {                      dwULONG = NEXTULONG;                      nPos += PICE_sprintf( pDis->szDisasm+nPos,"%s[%08X]", sSegOverride[ bSegOverride ], (unsigned int) dwULONG );                  }                  else                  {                      wUSHORT = NEXTUSHORT;                      nPos += PICE_sprintf( pDis->szDisasm+nPos,"%s[%04X]", sSegOverride[ bSegOverride ], wUSHORT );                  }             break;             case _Ib :                                         // immediate UCHAR                 bUCHAR = NEXTUCHAR;                 nPos += PICE_sprintf( pDis->szDisasm+nPos,"%02X", bUCHAR );             break;             case _Iv :                                         // immediate USHORT or ULONG                 if( pDis->dwFlags & DIS_DATA32 )                 {                      dwULONG = NEXTULONG;                      nPos += PICE_sprintf( pDis->szDisasm+nPos, "%08X", (unsigned int) dwULONG );                 }                 else                 {                     wUSHORT = NEXTUSHORT;                     nPos += PICE_sprintf( pDis->szDisasm+nPos, "%04X", wUSHORT );                 }             break;             case _Iw :                                         // Immediate USHORT                 wUSHORT = NEXTUSHORT;                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%04X", wUSHORT );             break;             case _Ap :                                         // 32 bit or 48 bit pointer (call far, jump far)                 if( pDis->dwFlags & DIS_DATA32 )                 {                      dwULONG = NEXTULONG;                      wUSHORT = NEXTUSHORT;                      nPos += PICE_sprintf( pDis->szDisasm+nPos, "%04X:%08X", wUSHORT, (unsigned int) dwULONG );                 }                 else                 {                     dwULONG = NEXTULONG;                     nPos += PICE_sprintf( pDis->szDisasm+nPos, "%08X", (unsigned int) dwULONG );                 }             break;             case _1 :                                          // numerical 1                 nPos += PICE_sprintf( pDis->szDisasm+nPos,"1" );             break;             case _3 :                                          // numerical 3                 nPos += PICE_sprintf( pDis->szDisasm+nPos,"3" );             break;                                                                // Hard coded registers             case _DX: case _AL: case _AH: case _BL: case _BH: case _CL: case _CH:             case _DL: case _DH: case _CS: case _DS: case _ES: case _SS: case _FS:             case _GS:                 nPos += PICE_sprintf( pDis->szDisasm+nPos,"%s", sRegs2[ *pArg - _DX ] );             break;             case _eAX: case _eBX: case _eCX: case _eDX:             case _eSP: case _eBP: case _eSI: case _eDI:                 nPos += PICE_sprintf( pDis->szDisasm+nPos, "%s", sGenReg16_32[DIS_GETDATASIZE(pDis->dwFlags)][ *pArg - _eAX ]);             break;             case _ST:                                          // Coprocessor ST                nPos += PICE_sprintf( pDis->szDisasm+nPos,"%s", sST[9] );             break;            case _ST0:                                         // Coprocessor ST(0) - ST(7)            case _ST1:            case _ST2:            case _ST3:            case _ST4:            case _ST5:            case _ST6:            case _ST7:               nPos += PICE_sprintf( pDis->szDisasm+nPos,"%s", sST[ *pArg - _ST0 ] );            break;            case _AX:                                           // Coprocessor AX                nPos += PICE_sprintf( pDis->szDisasm+nPos,"%s", sGenReg16_32[0][0] );            break;        }    }DisEnd:    // Set the returning values and return with the bInstrLen field    pDis->bAsciiLen = (UCHAR) nPos;    pDis->bInstrLen = bInstrLen;    return bInstrLen;}/*******************************************************************************                                                                             **   BOOLEAN Disasm(PULONG pOffset,PUCHAR pchDst)                              **                                                                             **   entry point for disassembly from other modules                            *******************************************************************************/BOOLEAN Disasm(PULONG pOffset,PUCHAR pchDst){#ifdef ACTIVATE_DISASSEMBLER    TDisassembler dis;     dis.dwFlags     = DIS_DATA32 | DIS_ADDRESS32;    dis.bpTarget    = (UCHAR*)*pOffset;    dis.szDisasm    = pchDst;    dis.wSel        = 0xFF; // will only use this in the future    *pOffset += (ULONG)Disassembler( &dis);#else	*pOffset += 1;	pchDst[0] = 'X';	pchDst[1] = 0;#endif    return TRUE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
黄一区二区三区| 久久免费精品国产久精品久久久久 | 99视频超级精品| 国产精品久久久久婷婷| 99久久伊人网影院| 一区二区激情视频| 日韩午夜激情av| 国产成人一级电影| 亚洲视频免费看| 欧美男男青年gay1069videost| 日韩高清不卡一区二区三区| 精品免费视频一区二区| 成人激情午夜影院| 亚洲一区二区三区中文字幕| 在线播放欧美女士性生活| 久久91精品久久久久久秒播| 欧美国产视频在线| 欧美色爱综合网| 国产精品一二三四| 亚洲欧美日韩综合aⅴ视频| 欧美日韩在线免费视频| 国产麻豆视频一区二区| 最新日韩av在线| 欧美一区二区在线免费观看| 国产精品一区二区久激情瑜伽| 最好看的中文字幕久久| 欧美精品一二三| 成人福利视频网站| 男人的天堂久久精品| 国产精品视频线看| 欧美一区二区三区的| av一区二区久久| 美女国产一区二区三区| 香蕉久久一区二区不卡无毒影院| 日韩精品一区国产麻豆| av网站免费线看精品| 免费不卡在线视频| 亚洲黄色在线视频| 国产午夜精品一区二区| 91精品国产91久久久久久最新毛片| 高清在线观看日韩| 奇米影视在线99精品| 亚洲欧美日韩中文字幕一区二区三区 | 国产中文字幕一区| 一区二区三区在线视频播放| 久久蜜桃av一区二区天堂| 欧美日韩一二区| 99久久婷婷国产综合精品电影| 免费在线观看一区| 亚洲综合偷拍欧美一区色| 久久精品视频在线免费观看| 欧美精品色综合| 99vv1com这只有精品| 精品一区二区精品| 麻豆一区二区99久久久久| 亚洲综合男人的天堂| 中文字幕在线观看不卡视频| 精品国产露脸精彩对白| 欧美一区二区福利在线| 欧美福利视频一区| 在线一区二区三区做爰视频网站| 国产黄人亚洲片| 蜜臀a∨国产成人精品| 日本不卡视频一二三区| 亚洲成人自拍一区| 亚洲成在人线在线播放| 亚洲综合激情另类小说区| 自拍偷拍欧美精品| 91久久精品一区二区三区| 国产蜜臀97一区二区三区| 在线成人av影院| 亚洲在线观看免费| 成人av在线播放网址| 中文字幕制服丝袜一区二区三区| 狠狠色狠狠色综合日日91app| 日韩免费看的电影| 日韩精品亚洲一区二区三区免费| 欧美一级理论性理论a| 成年人网站91| 成人黄色小视频在线观看| 国产日产亚洲精品系列| 亚洲精品国产一区二区精华液 | 欧美高清精品3d| 国产成人亚洲精品青草天美 | 国产偷国产偷精品高清尤物 | 国产中文字幕一区| 2023国产精品| 91免费看视频| 国产成人精品亚洲日本在线桃色| 亚洲裸体xxx| 欧美电影精品一区二区| 在线观看网站黄不卡| hitomi一区二区三区精品| 国产成人aaaa| 国产乱子轮精品视频| 国产一区二区网址| 韩国欧美国产1区| 国产精品一区免费视频| 国产精品综合网| www.性欧美| 欧美性一级生活| 精品美女在线观看| 国产精品天美传媒| 亚洲综合激情网| 久久99深爱久久99精品| 国产999精品久久久久久| 在线亚洲高清视频| 日韩午夜在线观看视频| 国产日韩欧美精品在线| 亚洲蜜桃精久久久久久久| 日本伊人午夜精品| 成人爽a毛片一区二区免费| 在线观看视频91| 欧美精品一区二区三区很污很色的 | 久久嫩草精品久久久久| 国产精品国产三级国产专播品爱网 | 欧美日韩综合不卡| 在线成人高清不卡| 国产精品第一页第二页第三页| 天天综合色天天| 不卡av免费在线观看| 777a∨成人精品桃花网| 国产精品网友自拍| 免费亚洲电影在线| 一本色道久久综合亚洲精品按摩| 日韩精品一区二区三区四区视频| 亚洲欧美影音先锋| 精品一区二区三区影院在线午夜 | 国产乱国产乱300精品| 91欧美一区二区| 精品对白一区国产伦| 亚洲激情在线播放| 国产不卡免费视频| 欧美大片在线观看一区二区| 国产精品国产精品国产专区不片 | 亚洲第一久久影院| 成人动漫在线一区| 欧美v日韩v国产v| 亚洲大片免费看| 色哦色哦哦色天天综合| 国产亚洲一区字幕| 免费人成网站在线观看欧美高清| 日本乱码高清不卡字幕| 国产精品毛片久久久久久久| 精品夜夜嗨av一区二区三区| 欧美老肥妇做.爰bbww| 亚洲三级久久久| 成人少妇影院yyyy| 久久久精品tv| 国产精品资源网站| 日韩女同互慰一区二区| 日韩不卡一二三区| 欧美日韩国产精选| 亚洲一级二级三级在线免费观看| 成人av先锋影音| 国产精品人成在线观看免费 | 99久久精品情趣| 国产精品热久久久久夜色精品三区 | 91精品国产高清一区二区三区| 亚洲一区中文日韩| 日本黄色一区二区| 亚洲天堂精品视频| 99久久99久久精品免费看蜜桃| 日本一区二区不卡视频| 国产不卡视频在线播放| 亚洲国产精品精华液ab| 成人性生交大合| 国产精品国产三级国产专播品爱网| 成人免费的视频| 中文字幕一区视频| 色婷婷综合久久久久中文一区二区 | 中文字幕永久在线不卡| 成人性生交大片免费看视频在线| 欧美激情在线一区二区三区| 成人免费视频国产在线观看| 国产亚洲婷婷免费| 成人av电影在线观看| 国产精品二三区| 91久久国产综合久久| 亚洲国产精品一区二区久久| 欧美高清激情brazzers| 久久精品国产免费看久久精品| 精品久久久久久久久久久院品网| 国产精品一区二区免费不卡| 中文字幕第一区二区| 色综合激情久久| 成人国产精品免费观看| 中文字幕国产精品一区二区| 91热门视频在线观看| 亚洲aaa精品| 欧美mv和日韩mv的网站| 岛国精品在线播放| 亚洲一区免费观看| 日韩一级完整毛片| 成人激情午夜影院| 亚洲国产精品一区二区久久恐怖片| 日韩精品中文字幕一区| 成人激情免费电影网址| 亚洲一区二区三区在线看| 精品国产免费一区二区三区香蕉|