Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

dz̸C/C++ÄÚ´æÐ¹Â©¼°Æä¼ì²â¹¤¾ß

BoundsChecker²ÉÓÃÒ»ÖÖ±»³ÆÎª Code InjectionµÄ¼¼Êõ£¬À´½Ø»ñ¶Ô·ÖÅäÄÚ´æºÍÊÍ·ÅÄÚ´æµÄº¯ÊýµÄµ÷Ó᣼òµ¥µØËµ£¬µ±ÄãµÄ³ÌÐò¿ªÊ¼ÔËÐÐʱ£¬BoundsCheckerµÄDLL±»×Ô¶¯ÔØÈë½ø³ÌµÄµØÖ·¿Õ¼ä£¨Õâ¿ÉÒÔͨ¹ýsystem-levelµÄHookʵÏÖ£©£¬È»ºóËü»áÐ޸Ľø³ÌÖжÔÄÚ´æ·ÖÅäºÍÊͷŵĺ¯Êýµ÷Óã¬ÈÃÕâЩµ÷ÓÃÊ×ÏÈתÈëËüµÄ´úÂ룬ȻºóÔÙÖ´ÐÐÔ­À´µÄ´úÂë¡£BoundsCheckerÔÚ×öÕâЩ¶¯×÷µÄʱ£¬ÎÞÐëÐ޸ı»µ÷ÊÔ³ÌÐòµÄÔ´´úÂë»ò¹¤³ÌÅäÖÃÎļþ£¬ÕâʹµÃʹÓÃËü·Ç³£µÄ¼ò±ã¡¢Ö±½Ó¡£
¡¡¡¡ÕâÀïÎÒÃÇÒÔmallocº¯ÊýΪÀý£¬½Ø»ñÆäËûµÄº¯Êý·½·¨Óë´ËÀàËÆ¡£
¡¡¡¡ÐèÒª±»½Ø»ñµÄº¯Êý¿ÉÄÜÔÚDLLÖУ¬Ò²¿ÉÄÜÔÚ³ÌÐòµÄ´úÂëÀï¡£±ÈÈ磬Èç¹û¾²Ì¬Á¬½áC-Runtime Library£¬ÄÇômallocº¯ÊýµÄ´úÂë»á±»Á¬½áµ½³ÌÐòÀΪÁ˽ػñס¶ÔÕâÀຯÊýµÄµ÷Óã¬BoundsChecker»á¶¯Ì¬ÐÞ¸ÄÕâЩº¯ÊýµÄÖ¸Áî¡£
¡¡¡¡ÒÔÏÂÁ½¶Î»ã±à´úÂ룬һ¶ÎûÓÐBoundsChecker½éÈ룬ÁíÒ»¶ÎÔòÓÐBoundsCheckerµÄ½éÈ룺
126: _CRTIMP void * __cdecl malloc (
127: size_t nSize
128: )
129: {
00403C10 push ebp
00403C11 mov ebp,esp
130: return _nh_malloc_dbg(nSize, _newmode, _NORMAL_BLOCK, NULL, 0);
00403C13 push 0
00403C15 push 0
00403C17 push 1
00403C19 mov eax,[__newmode (0042376c)]
00403C1E push eax
00403C1F mov ecx,dword ptr [nSize]
00403C22 push ecx
00403C23 call _nh_malloc_dbg (00403c80)
00403C28 add esp,14h
131: }
¡¡¡¡ÒÔÏÂÕâÒ»¶Î´úÂëÓÐBoundsChecker½éÈ룺
126: _CRTIMP void * __cdecl malloc (
127: size_t nSize
128: )
129: {
00403C10 jmp 01F41EC8
00403C15 push 0
00403C17 push 1
00403C19 mov eax,[__newmode (0042376c)]
00403C1E push eax
00403C1F mov ecx,dword ptr [nSize]
00403C22 push ecx
00403C23 call _nh_malloc_dbg (00403c80)
00403C28 add esp,14h
131: }
¡¡¡¡µ±BoundsChecker½éÈëºó£¬º¯ÊýmallocµÄǰÈýÌõ»ã±àÖ¸Áî±»Ìæ»»³ÉÒ»ÌõjmpÖ¸ÁԭÀ´µÄÈýÌõÖ¸Áî±»°áµ½µØÖ·01F41EC8´¦ÁË¡£µ±³ÌÐò½øÈëmallocºóÏÈjmpµ½01F41EC8£¬Ö´ÐÐÔ­À´µÄÈýÌõÖ¸ÁȻºó¾ÍÊÇBoundsCheckerµÄÌìÏÂÁË¡£´óÖÂÉÏËü»áÏȼǼº¯ÊýµÄ·µ»ØµØÖ·£¨º¯ÊýµÄ·µ»ØµØÖ·ÔÚstackÉÏ£¬ËùÒÔºÜÈÝÒ×Ð޸ģ©£¬È»ºó°Ñ·µ»ØµØÖ·Ö¸ÏòÊôÓÚBoundsCheckerµÄ´úÂ룬½Ó×ÅÌøµ½mallocº¯ÊýÔ­À´µÄÖ¸ÁҲ¾ÍÊÇÔÚ00403c15µÄµØ·½¡£µ±mallocº¯Êý½áÊøµÄʱºò£¬ÓÉÓÚ·µ»ØµØÖ·±»Ð޸ģ¬Ëü»á·µ»Øµ½BoundsCheckerµÄ´úÂëÖУ¬´ËʱBoundsChecker»á¼Ç¼ÓÉmalloc


Ïà¹ØÎĵµ£º

¡¶the c programming language¡·»Ø¹ËÖ®Ò»

1,³ÌÐò¿ØÖÆÖеĿØÖÆÁ÷Óï¾äÓÃÓÚ¿ØÖƸ÷¼ÆËã»ú²Ù×÷Ö´ÐеĴÎÐò¡£
 Ê²Ã´ÊÇ¿ØÖÆÁ÷Óï¾äÏëÁ˰ëÌ죬ԭÀ´²»¹ýÊÇÕâЩ£¬if-elseÓï¾ä£¬else-ifÓï¾ä£¬switchÓï¾ä£¬whileÑ­»·£¬forÑ­»·£¬do-whileÑ­»·µÈ¡£
2,»¨À¨ºÅ{}£¬ÆäÖеÄÓÒ»¨À¨ºÅÓÃÓÚ½áÊø³ÌÐò¿é£¬Æäºó²»ÐèÒª·ÖºÅ¡£
  µ±³õÒ»¿´µ½“Æäºó²»ÐèÒª·ÖºÅµÄ”ʱºòÏëÁ˰ëÌ ......

Window+GCC+CDTÓÃEclipse¿ª·¢C¡¢C++

Eclipse³ýÁË¿ÉÒÔ開發JavaÖ®Í⣬還Ö§Ô®ÁË許¶à語ÑÔ£¬現ÔÚÏȽé紹
C¡¢C++µÄ開發環¾³設¶¨£¬ÒÔááÓÐ機會ÔÙ½é紹ÆäËüµÄ¡£Enjoy it£¡
OS£ºWindows XP Professional SP1
ʹÓð汾£ºEclipse 2.1.2
Ò».Ê×ÏÈÒªÏÂ載CDT£¬Eclipse 2.1.2 ......

c/c++ ÄÚ´æ¶ÔÆë sizeof

   һƪ½²¶ÔÆë±È½ÏºÃµÄÎÄÕ£¬×ªÌùÈçÏÂ:
´óÖ±ê×¢Ò»¶þ:
1.ÄÚ´æ¶ÔÆë:¼ÆËã»úϵͳ¶Ô»ù±¾ÀàÐÍÊý¾ÝÔÚÄÚ´æÖдæ·ÅµÄλÖÃÓÐÏÞÖÆ£¬ËüÃÇ»áÒªÇóÕâЩÊý¾ÝµÄÊ×µØÖ·µÄÖµÊÇij¸öÊýk(ͨ³£ËüΪ4»ò8)µÄ±¶ÊýkÔò±»³ÆÎª¸ÃÊý¾ÝÀàÐÍµÄ¶ÔÆëÄ£Êý(alignment modulus)
2.²»Í¬±àÒëÆ÷ĬÈϵÄ×î´ó¶ÔÆë×Ö½ÚÊýÊDz»Ò»ÑùµÄ,±ÈÈçvc==8,gcc==4,¿ÉÒÔͨ¹ ......

c/C++±àÒëµÄ³ÌÐòÕ¼ÓõÄÄÚ´æÇé¿ö ÎÄ×Ö³£Á¿Çø

Ê×ÏÈ¿´ÏÂÏÂÃæÕâ¶Î£º
int main()
{
char *name = "fengkewei";
char name1[] = "fengkewei";
char *name2 = "fengkewei";
char *name3 = "woaifengkewei";
int i = 10;
int j = 10;
int k = 11;
return 0;
}
ÈôÄú¾õµÃËüÃÇÓ¦¸Ã¶¼±£´æÔÚÄÚ´æÖеÄÒ»¿éµØ·½£¬ÄÇÇëÍùÏ¿´¡£¡£¡£¡£
ÏÂÃæÊDZàÒëÆ÷Ϊ¸÷¸ö±äÁ¿·ÖÅäµÄÄÚ´æµØ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ