1.å©ç¨ODå¯ä»¥ç ´è§£åªäºç±»åç软件ï¼
2.od是源p源什么
3.releaseådebugçåºå«
å©ç¨ODå¯ä»¥ç ´è§£åªäºç±»åç软件ï¼
éè¦ä¸ä¸ªODåä¸ä¸ªPEID
PEIDç¨æ¥æ¥å£³ï¼çç人家å çæ¯ä»ä¹å£³ï¼å£³çç±»åï¼
å·¥å ·è¿æä¸ä¸ªï¼è±å£³ODå°±å¯ä»¥æå®
ç¶åç¨ODè·³è¿è½¯ä»¶çéªè¯ï¼å°±é£å¡«æ³¨åç çå°æ¹ï¼æä»è·³è¿å»ï¼
ç¶åå°±å®æäºã
å¦å¤ï¼æä¸ç§æ件ä¸æ¯å 壳æ¥å å¯çï¼
é£ç§ç¨èææºå å¯ç
æ¯ç ´è§£ä¸äºçãï¼ä¸è¿å¤§å¤æ°æ件ä¸ä¼éåè¿ç§å å¯æ³ï¼
è³äºä½ è°çåç¼è¯= =
å§ï¼ä½ æ计ç®æºåï¼è¦åç¼è¯å¹²ä»ä¹ï¼
åç¼è¯æ¯è¦æ¿ç¨åºçæºç çï¼ä½ æä¸ªç ´è§£è¿è¦å¥åºä¸ªæºç ï¼ï¼
æåï¼è¡¥å ã
è®°å¾ä»¥åå¦ä¹ è¿æ¹é¢çç¥è¯çæ¶åï¼è¶³è¶³çäºä¸¤æ¬ååå ¸é£ä¹åç书ã
å¦è¿ä¸ªå«æ³ä¸å¹´å载就精éããã
åå¤å¥½é¿æå¥æå§
ï¼æ¥¼ä¸çæ¯ç´äººè¯´æ¢¦ï¼å¨ç½ä¸çæç¨æ¯å¦ä¸ä¼çï¼æ²¡æå°å¤§å¦æ·±é æ¯å¦ä¸ä¼çï¼
od是什么
OD,软件名称,码防码反汇编工具OD=OllyDebug,源p源一个新的码防码彩虹易支付源码下载动态追踪工具,把IDA与SoftICE结合起来,源p源Ring3级的码防码商城社交软件源码调试器,已代替SoftICE成为当今最为流行的源p源调试解密工具了。
同时还支持插件扩展功能,码防码是源p源最强大的调试工具。基本上,码防码调试自己的源p源程序因为有源码,一般用vc,码防码破解别人的源p源app源码包下载程序用OllyDebug。技能在《第三次生日》中,码防码OD(OverDive)是源p源阿雅获得的新能力。可以使用OD潜入战场上的打赏2019源码士兵的潜意识,以及用来对付敌人(当敌人身上出现**三角符号时,即可使用△键发动OD对其实施致命一击,威力相当强命令od 命令用途:以指定格式显示文件。成语中状元源码语法使用字符串类型显示文件,来格式化输出。od [ -v ] [ -A Addressbase ] [ -N Count ] [ -j Skip ] [ -t TypeString ... ] [ File ... ]使用标志显示文件,来格式化输出。od [ -a ] [ -b ] [ -c ] [ -C ] [ -d ] [ -D ] [ -e ] [ -f ] [ -F ] [ -h ] [ -H ] [ -i ] [ -I ] [ -l ] [ -L ] [ -o ] [ -O ] [ -p ] [ -P ] [ -s ] [ -v ] [ -x ] [ -X ] [ [ -S [ N ] ] [ -w [ N ] ] [ File ] [ [ + ] Offset [ . | b | B ] [ + ] Label [ . | b | B ] ]描述od 命令用指定格式显示由 File 参数指定的文件。
releaseådebugçåºå«
ä¸ãDebug å Release ç¼è¯æ¹å¼çæ¬è´¨åºå«
Debug é常称为è°è¯çæ¬ï¼å®å å«è°è¯ä¿¡æ¯ï¼å¹¶ä¸ä¸ä½ä»»ä½ä¼åï¼ä¾¿äºç¨åºåè°è¯ç¨
åºãRelease 称为åå¸çæ¬ï¼å®å¾å¾æ¯è¿è¡äºåç§ä¼åï¼ä½¿å¾ç¨åºå¨ä»£ç 大å°åè¿è¡é度
ä¸é½æ¯æä¼çï¼ä»¥ä¾¿ç¨æ·å¾å¥½å°ä½¿ç¨ã
Debug å Release ççæ£ç§å¯ï¼å¨äºä¸ç»ç¼è¯é项ãä¸é¢ååºäºåå«é对äºè çé项
ï¼å½ç¶é¤æ¤ä¹å¤è¿æå ¶ä»ä¸äºï¼å¦/Fd /Foï¼ä½åºå«å¹¶ä¸éè¦ï¼é常ä»ä»¬ä¹ä¸ä¼å¼èµ· Rele
ase çé误ï¼å¨æ¤ä¸è®¨è®ºï¼
Debug çæ¬ï¼
/MDd /MLd æ /MTd ä½¿ç¨ Debug runtime library(è°è¯çæ¬çè¿è¡æ¶å»å½æ°åº)
/Od å ³éä¼åå¼å ³
/D "_DEBUG" ç¸å½äº #define _DEBUG,æå¼ç¼è¯è°è¯ä»£ç å¼å ³(主è¦é对
assertå½æ°)
/ZI å建 Edit and continue(ç¼è¾ç»§ç»)æ°æ®åºï¼è¿æ ·å¨è°è¯è¿
ç¨ä¸å¦æä¿®æ¹äºæºä»£ç ä¸ééæ°ç¼è¯
/GZ å¯ä»¥å¸®å©æè·å åé误
/Gm æå¼æå°åéé¾æ¥å¼å ³ï¼åå°é¾æ¥æ¶é´
Release çæ¬ï¼
/MD /ML æ /MT 使ç¨åå¸çæ¬çè¿è¡æ¶å»å½æ°åº
/O1 æ /O2 ä¼åå¼å ³ï¼ä½¿ç¨åºæå°ææå¿«
/D "NDEBUG" å ³éæ¡ä»¶ç¼è¯è°è¯ä»£ç å¼å ³(å³ä¸ç¼è¯assertå½æ°)
/GF å并éå¤çå符串ï¼å¹¶å°å符串常éæ¾å°åªè¯»å åï¼é²æ¢
被修æ¹
å®é ä¸ï¼Debug å Release 并没ææ¬è´¨ççéï¼ä»ä»¬åªæ¯ä¸ç»ç¼è¯é项çéåï¼ç¼è¯
å¨åªæ¯æç §é¢å®çé项è¡å¨ãäºå®ä¸ï¼æ们çè³å¯ä»¥ä¿®æ¹è¿äºé项ï¼ä»èå¾å°ä¼åè¿çè°
è¯çæ¬ææ¯å¸¦è·è¸ªè¯å¥çåå¸çæ¬ã
äºãåªäºæ åµä¸ Release çä¼åºé
æäºä¸é¢çä»ç»ï¼æ们åæ¥éä¸ªå¯¹ç §è¿äºé项çç Release çé误æ¯ææ ·äº§çç
1. Runtime Libraryï¼
2. ä¼åï¼è¿ç±»é误主è¦æ以ä¸å ç§ï¼
(1) 帧æé(Frame Pointer)çç¥ï¼ç®ç§° FPO ï¼ï¼å¨å½æ°è°ç¨è¿ç¨ä¸ï¼ææè°ç¨ä¿¡æ¯
ï¼è¿åå°åãåæ°ï¼ä»¥åèªå¨åéé½æ¯æ¾å¨æ ä¸çãè¥å½æ°ç声æä¸å®ç°ä¸åï¼åæ°ãè¿
åå¼ãè°ç¨æ¹å¼ï¼ï¼å°±ä¼äº§çé误ââââä½ Debug æ¹å¼ä¸ï¼æ ç访é®éè¿ EBP å¯åå¨
ä¿åçå°åå®ç°ï¼å¦æ没æåçæ°ç»è¶çä¹ç±»çé误ï¼ææ¯è¶çâä¸å¤âï¼ï¼å½æ°é常è½
æ£å¸¸æ§è¡ï¼Release æ¹å¼ä¸ï¼ä¼åä¼çç¥ EBP æ åºåæéï¼è¿æ ·éè¿ä¸ä¸ªå ¨å±æé访é®æ
å°±ä¼é æè¿åå°åé误æ¯ç¨åºå´©æºãC++ ç强类åç¹æ§è½æ£æ¥åºå¤§å¤æ°è¿æ ·çé误ï¼ä½å¦
æç¨äºå¼ºå¶ç±»å转æ¢ï¼å°±ä¸è¡äºãä½ å¯ä»¥å¨ Release çæ¬ä¸å¼ºå¶å å ¥ /Oy- ç¼è¯é项æ¥å ³
æ帧æéçç¥ï¼ä»¥ç¡®å®æ¯å¦æ¤ç±»é误ã
(2) volatile ååéï¼volatile åè¯ç¼è¯å¨è¯¥åéå¯è½è¢«ç¨åºä¹å¤çæªç¥æ¹å¼ä¿®æ¹
ï¼å¦ç³»ç»ãå ¶ä»è¿ç¨å线ç¨ï¼ã
(3) åéä¼åï¼ä¼åç¨åºä¼æ ¹æ®åéç使ç¨æ åµä¼ååéãä¾å¦ï¼å½æ°ä¸æä¸ä¸ªæªè¢«
使ç¨çåéï¼å¨ Debug çä¸å®æå¯è½æ©çä¸ä¸ªæ°ç»è¶çï¼èå¨ Release çä¸ï¼è¿ä¸ªåé
å¾å¯è½è¢«ä¼åè°ï¼æ¤æ¶æ°ç»è¶çä¼ç ´åæ ä¸æç¨çæ°æ®ãå½ç¶ï¼å®é çæ åµä¼æ¯è¿å¤æå¾
å¤ãä¸æ¤æå ³çé误æï¼
3. _DEBUG ä¸ NDEBUG ï¼å½å®ä¹äº _DEBUG æ¶ï¼assert() å½æ°ä¼è¢«ç¼è¯ï¼è NDEBUG æ¶ä¸
被ç¼è¯ãé¤æ¤ä¹å¤ï¼VC++ä¸è¿æä¸ç³»åæè¨å®ãè¿å æ¬ï¼
ANSI C æè¨ void assert(int expression );
C Runtime Lib æè¨ _ASSERT( booleanExpression );
_ASSERTE( booleanExpression );
MFC æè¨ ASSERT( booleanExpression );
VERIFY( booleanExpression );
ASSERT_VALID( pObject );
ASSERT_KINDOF( classname, pobject );
ATL æè¨ ATLASSERT( booleanExpression );
æ¤å¤ï¼TRACE() å®çç¼è¯ä¹å _DEBUG æ§å¶ã
4. /GZ é项ï¼è¿ä¸ªé项ä¼å以ä¸è¿äºäº
(1) åå§åå åååéã
(2) éè¿å½æ°æéè°ç¨å½æ°æ¶ï¼ä¼éè¿æ£æ¥æ æééªè¯å½æ°è°ç¨çå¹é æ§ãï¼é²æ¢å
å½¢ä¸å¹é ï¼
(3) å½æ°è¿ååæ£æ¥æ æéï¼ç¡®è®¤æªè¢«ä¿®æ¹.
ä¸ãææ ·âè°è¯â Release ççç¨åº
1. åé¢å·²ç»æè¿ï¼Debug å Release åªæ¯ä¸ç»ç¼è¯é项çå·®å«ï¼å®é ä¸å¹¶æ²¡æä»ä¹
å®ä¹è½åºåäºè ãæ们å¯ä»¥ä¿®æ¹ Release ççç¼è¯é项æ¥ç¼©å°é误èå´ãå¦ä¸æè¿°ï¼å¯ä»¥
æ Release çé项é个æ¹ä¸ºä¸ä¹ç¸å¯¹ç Debug é项ï¼å¦ /MD æ¹ä¸º /MDdã/O1 æ¹ä¸º /Od
ï¼æè¿è¡æ¶é´ä¼åæ¹ä¸ºç¨åºå¤§å°ä¼åã注æï¼ä¸æ¬¡åªæ¹ä¸ä¸ªé项ï¼çæ¹åªä¸ªé项æ¶é误æ¶
失ï¼å对åºè¯¥é项ç¸å ³çé误ï¼é对æ§å°æ¥æ¾ãè¿äºéé¡¹å¨ Project\Settings... ä¸é½å¯
以ç´æ¥éè¿å表éåï¼é常ä¸è¦æå¨ä¿®æ¹ãç±äºä»¥ä¸çåæå·²ç¸å½å ¨é¢ï¼è¿ä¸ªæ¹æ³æ¯ææ
æçã
2.ä½ ä¹å¯ä»¥å Debug ä¸æ ·è°è¯ä½ ç Release çï¼åªè¦å å ¥è°è¯ç¬¦å·ãå¨ Project/S
ettings... ä¸ï¼éä¸ Settings for "Win Release"ï¼éä¸ C/C++ æ ç¾ï¼Category é
Generalï¼Debug Info é Program Databaseãåå¨ Link æ ç¾ Project options æå
å ä¸ "/OPT:REF" (å¼å·ä¸è¦è¾)ã