Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ʵ¼ùAPI¹³×ÓÀ¹½ØDLL¿âµ÷ÓÃ
 
×÷Õߣºpelock À´Ô´£º51CTO ·¢²¼ÓÚ£º2016-12-15
  3035  次浏览      27

ǰÑÔ

ÔÚÈÕ³£·ÖÎöʹÓÃij¸öÈí¼þµÄ¹ý³ÌÖУ¬Èç¹ûÎÒÃÇÏëҪȥÍÚ¾òÈí¼þµÄ©¶´¡¢»òÕßÊÇͨ¹ý´ò²¹¶¡µÄ·½Ê½¸øÈí¼þÔöÌíһЩÐµĹ¦ÄÜ£¬ÒÖ»òÊÇΪÁ˼ǼÏÂÈí¼þÔËÐйý³ÌÖб»µ÷Óõĺ¯Êý¼°Æä²ÎÊý£¬ÓÐʱºòÎÒÃÇÐèÒª½Ù³Ö¶ÔijЩDLL¿âµÄµ÷Óùý³Ì¡£ÔÚÒ»°ãÇé¿öÏ£¬Èç¹ûÎÒÃÇÊÇÈí¼þµÄ¿ª·¢Õß»òÕ߸ÃÈí¼þÌṩԴÂëÏÂÔØ£¬ÄÇô¸Õ²ÅÌáµ½µÄÎÊÌâÖ»Òª¶ÔÔ´Âë½øÐÐÒ»¶¨µÄÐ޸ľͿÉÒÔÁË£¬¼òÖ±ÊÇС²ËÒ»µú¡£µ«ÊÇÔÚ¸ü¶àÇé¿öÏ£¬ÎÒÃÇÎÞ´Ó»ñÈ¡Èí¼þ»òÊÇ¿âµÄÔ´Â룬ÒòΪËûÃǸù±¾Ã»ÓвÉÓÃÔ´Âë·¢Ðеķ½Ê½¡£ÄÇÕâÑùÎÒÃÇÊÇ·ñ¾ÍÒ»³ïĪչÁËÄØ?ͨ¹ýÔĶÁÕâÆªÎÄÕ£¬ÎÒ»á¸æËßÄã×îÁ÷Ðеġ°API¹³×Ó¡±·½·¨ÊÇʲô£¬²¢ÇÒ»áÒÔÂÔ΢²»Í¬µÄ·½Ê½Õ¹ÏÖ¸ø´ó¼Ò¡£

API¹³×Ó

ÕýÈçÉÏÎÄÎÒÃÇÒѾ­Ìáµ½µÄ£¬½Ù³ÖDLL×îÁ÷Ðеķ½·¨±»³Æ×÷¡°API¹³×Ó¡±¡ª¡ªÒ»ÖÖ½«¿âº¯Êýµ÷ÓÃÖØ¶¨Ïòµ½ÄãµÄ´úÂëµÄ¼¼Êõ¡£×îΪÁ÷ÐеÄAPI¹³×Ó¿â·Ç΢ÈíµÄ Microsoft Detours (³£ÓÃÓÚÓÎÏ·ÆÆ½â)ĪÊô£¬²¢ÇÒÕâ¸öÉÌÒµ¿â±»´òÉϵļÛÖµ±êÇ©ÒѾ­¸ß´ï9999.95ÃÀÔª(Ô¼68999ÔªÈËÃñ±Ò)¡£ÔÙ¾ÙÒ»¸öÀý×Ó£¬ÔÚDephiÓïÑÔÖÐÓÐÒ»¸ö¿â½Ð×ö madCodeHook£¬ËûµÄÉÌÒµ¼ÛֵԼΪ349Å·Ôª(Ô¼2564ÔªÈËÃñ±Ò)¡£

ÏÂÃæ¾ÍÈÃÎÒÃÇÀ´¿´Ò»¿´API¹³×ӵľßÌåʵÏÖÔ­Àí¡£

¶ÔÓÚÒѾ­¼ÓÔØµÄDLL¿â¼°¶ÔÓ¦º¯Êý£¬Í¨¹ýÔÚÏëÒª¹³È¡µÄº¯ÊýÍ·²¿Ê××Ö½Ú´òÉÏÒ»¸ö²¹¶¡(Ò²½ÐÖØÐ´£¬¸öÈËÈÏΪ½Ð¸²¸Ç×îΪÌùÇÐ)£¬²¹¶¡ÄÚÈÝΪһ¸öJMPÖ¸ÁÏñÊÇ JMP NEAR ÕâÑùµÄÐÎʽ£¬×ª»»³É16½øÖƾÍÊÇ E9 xx xx xx xx¡£ÈçÏÂͼËùʾ£º

ͼ1£º±»¹³È¡µÄº¯ÊýǰºóÄÚÈÝʾÒâ µ±¿ØÖÆÈ¨±»´«µÝµ½ÎÒÃǹ³È¡¹ýµÄº¯Êýºó£¬Í¨³£Õâʱ¾Í¿ÉÒÔÖ´ÐÐÎÒÃÇ×Ô¼ºÏëÒªÖ´ÐеĴúÂëÁË£¬Ö´ÐÐÍê±ÏºóÓÖ»á½Ó×ÅÔËÐÐÔ­º¯ÊýÈ»ºó·µ»Øµ½Ö®Ç°´ÓDLL¿âÖе÷Óøú¯ÊýµÄ´úÂëλÖá£

API¹³×ÓÆäʵ»áµ¼ÖÂһЩÎÊÌ⣬¶øÎÊÌâµÄÀ´Ô´¾ÍÔÚÓÚ±àÒë¹ýµÄÈí¼þ½á¹¹ºÍËü±¾ÉíµÄ´úÂë½á¹¹¡£µ±ÎÒÃÇÏëҪͨ¹ý¹³×Ó±¾ÉíÀ´µ÷ÓÃÔ­º¯ÊýµÄʱºò(ͨ³£²»¼Ó´¦ÀíÇé¿öÏ»ᵼÖÂÒ»¸öËÀÑ­»·)£¬ÎÒÃDZØÐëÒª´´½¨Ò»¸öÌØÊâµÄ´úÂëÇø¿éÀ´µ÷ÓÃÔ­º¯Êý´úÂ룬Õâ¸ö´úÂëÇø¿éÓиö±ð³Æ½Ð×ö¡°±Ä´²¡±(¸öÈ˾õµÃÔÚ¹úÄÚ¸ü³£±»³ÆÎªÌø°å)£¬ÕâÑùµÄ»°¾Í²»Óùܹ³×Ó±¾ÉíÊÇ·ñÔÚÒªµ÷Óõĺ¯ÊýÌåÄÚÁË

ÁíÍâÐèҪ˵Ã÷µÄÊÇ£¬API¹³×Ó¼¼Êõ²»ÊÇÍòÄܵģ¬ÔÚÊܱ£»¤µÄDLL¿âÖм¸ºõ²»¿ÉÄÜʵÏÖ¡£ËµµÃÏêϸһµã¾ÍÊÇ£¬±ÈÈç´æÔÚCRCУÑé±£»¤µÄʱºò£¬ÎÞÂÛÊÇ´ÓÓ²ÅÌÉÏ»¹ÊÇÄÚ´æÖжԿâDLL¿â´úÂëµÄÐ޸ͼÊDz»¿ÉÐеġ£

»¹ÓÐÒ»µã¾ÍÊÇ£¬¾­µäµÄAPI¹³×ÓÒ²²»ÊÊÓÃÓÚDLL¿âµ¼³öµÄ¡°Î±º¯Êý¡±£¬ÕâÀïµÄαº¯ÊýÊÇÖ¸µ¼³öµÄ±äÁ¿¡¢ÀàÖ¸ÕëµÈµÈ¡£ÒòΪÔÚÕâÖÖÀàÐ͵ġ°º¯Êý¡±Ìõ¼þÏÂÎÒÃǸù±¾²»¿ÉÄÜÔÚÔ­º¯ÊýºÍÎÒÃǵĴúÂëÖ®¼ä½¨Á¢Ò»¸ö¾­µäµÄ´úÂë¹³×Ó(ÊÂʵÉϸù±¾¾ÍûÓк¯Êý¿É¹³È¡)¡£ÄÇÊDz»ÊǾÍÎÞ¿ÉÄκÎÁËÄØ?ÉÏÃæÎÒÃÇÌáµ½µÄ·½·¨ÊǸÄдԭº¯Êý´úÂ룬¶øÏÂÃæÒª½éÉܵĵڶþÖÖ³£¼û·½·¨¾ÍÊÇÐÞ¸ÄPEµ¼³ö±í¡£Ö»²»¹ýÕâÖÖ·½·¨µÄ¾ÖÏÞÐԺܴó£¬Ô¶²»ÈçǰһÖÖÁ÷ÐУ¬¶øÇÒÖ»ÓкÜÉÙµÄÒ»²¿·Ö¹³×Ó¿âÖ§³ÖËü¡£

DLLת·¢

Ò»ÖÖ¸ü¼ÓÓд´Ò⵫ÊÇÒ²¸üΪÂé·³µÄAPI¹³È¡·½Ê½½Ð×ö¡°DLL¡±×ª·¢£¬Ëüͨ¹ýWindowsµÄÄÚ²¿»úÖÆÀ´ÊµÏÖ£¬»ù±¾Ô­Àí¾ÍÊÇת·¢DLLµ÷ÓÃÖÁÆäËûÄ£¿é¡£ DLLת·¢¼¼Êõ»ùÓÚ¡°Ìæ»»±í¡°À´ÊµÏÖ£¬ËùÒÔÒ²±»³ÆÎª¡°DLL´úÀí¡±£¬Ëü¿ÉÒÔµ¼³öËùÓеÄԭʼ¿âº¯Êý£¬Ò²¿ÉÒÔ´«µÝËùÓжԿ⺯ÊýµÄµ÷Ó᪡ª³ýÁËÎÒÃÇÏëÒª¹³È¡µÄÄDz¿·Öº¯Êý¡£¶øº¯Êýµ÷ÓÃÊDZ»Í¨¹ýһЩÏÊΪÈËÖªµÄWindows»úÖÆ´«µÝ¸øÔ­º¯Êý¿âµÄ£¬ÕâÑùÎÒÃǾͿÉÒÔ½è´ËÀ´µ÷ÓÃÆäËû¿âº¯Êý£¬×°×÷ËûÃDZ¾À´¾ÍÊÇ´æ´¢ÔÚÎÒÃÇʹÓõÄAPI¹³×Ó¿âÀïÒ»Ñù£¬µ«ÊÂʵÉÏÕâЩ´úÂë±»´æ´¢ÔÚÆäËûµÄ¿âÖС£ÅªÃ÷°×ÒÔÉÏÕâЩ¹ý³Ì£¬ÎÒÃÇÒ²¾Í²»ÄѵÃ֪ΪʲôҪ½Ð×ö¡°DLLת·¢¡±ÁË¡£ º¯Êýµ÷ÓùßÀý º¯Êýµ÷ÓùßÀýÊÇÒ»¸öµÍµÈ¼¶µÄÓÃÓÚ´«µÝº¯Êý²ÎÊýºÍ´¦Àíº¯Êýµ÷Ó÷µ»ØÇ°µÄ¶ÑÕ»µÄ·½Ê½¡£ºÜ´óÒ»²¿·ÖÇé¿öÏÂËüÈ¡¾öÓÚ±àÒëʱµÄÉèÖ㬲¢ÇÒÔÚ´ó¶àÊý¸ß¼¶±à³ÌÓïÑÔÖпÉÒÔÈÎÒâÑ¡Ôñº¯Êýµ÷Óõķ½Ê½£¬ËùÒÔÁ½ÕßÈÎÈ¡ÆäÒ»¾ù¿É¡£ÎªÁËÈÃÎÒÃǵÄAPI¹³×Ó¿âÕý³£ÔËÐУ¬ËüµÄ¹³È¡º¯ÊýÒ²±ØÐëʹÓúÍÒѾ­±»¹³È¡µÄº¯ÊýÏàͬµÄµ÷ÓùßÀý¡£ËûÃÇÖ»ÓÐÔÚ¶þ½øÖÆÇé¿öÏÂÏ໥¼æÈݲŲ»»áÒý·¢Ïñ¶ÑÕ»ÆÆ»µÖ®ÀàµÄÒì³£¡£

µ÷ÓùßÀý¸ß¶ÈÒÀÀµÓÚ±àÒëÆ÷µÄĬÈÏÉèÖ㬱ÈÈçDelphiĬÈϲÉÓÃregisterµ÷ÓùßÀý£¬CÓïÑÔĬÈϲÉÓÃcdeclµ÷ÓùßÀý¡£

WinAPIº¯Êý(Windowsϵͳº¯Êý)ĬÈÏʹÓÃstdcallµ÷ÓùßÀý£¬ËùÒÔÔÚµ÷ÓÃ֮ǰ£¬º¯ÊýµÄ²ÎÊý¶¼Ê¹ÓÃpushÖ¸Áî´æ´¢ÔÚÕ»ÖУ¬È»ºócallÖ¸Áî±»Ö´ÐУ¬Ö´ÐÐÍê±Ïºó²¢Ã»ÓбØÒªÈ¥ÐÞÕýÕ»Ö¸ÕëESP£¬ÒòΪÔÚstdcallµ÷ÓùßÀýÖУ¬Õ»ÔÚº¯Êý·µ»ØÇ°ÊÇ×Ô¶¯ÐÞÕýµÄ¡£ÕâÀïÖµµÃÒ»ÌáµÄÊÇ£¬Ò»¸öºÜÓÐȤµÄÏÖÏóÊÇWinAPIÖеÄÓÐЩº¯Êý²¢²»Ê¹ÓÃstdcall¶øÊÇCÓïÑÔµÄcdecl£¬cdecl²¢²»½«²ÎÊý´æ´¢ÓÚÕ»£¬µ«Õ»µÄÐÞÕý»áÔÚµ÷ÓÃÍê³Éºó¸ù¾Ýº¯Êý²ÎÊýµÄÊýÁ¿±»±àÒëÆ÷ÐÞÕý¡£¾ÙÒ»¸öÀý×Ó£¬user32.dllÖеÄÒ»¸öº¯ÊýwsprintfA()(ËüÔÚCº¯Êý¿âÖеĶÔÓ¦ÊÇsprintf())¾Í²ÉÓÃcdecl¹ßÀý£¬ÕâÖÖµ÷Ó÷½Ê½ÊDZ¸ÊÜÍÆ³çµÄ£¬ÒòΪÕâÑù³ýÁ˱àÒëÆ÷Ö®ÍâûÓÐÈËÖªµÀ¾¿¾¹´«µÝÁ˶àÉÙ¸ö²ÎÊý¡£

API¹³×ÓʵÀý

×÷Ϊһ¸öÀý×Ó£¬ÎÒÏëÈÃËü¾¡Á¿¼òµ¥Ò×¶®Ò»µã£¬Ö»»áÓõ½Ò»¸ö²âÊÔ¿âBlackBox.dll£¬ËüÖ»µ¼³öÁ½¸öº¯ÊýSum()ºÍDivide()£¬Ïë±ØÄãÒѾ­²Âµ½ÁË£¬µÚÒ»¸öº¯ÊýµÄ×÷ÓÃÊÇÁ½¸öÊýµÄÇóºÍ£¬µÚ¶þ¸öº¯ÊýÊÇÁ½¸öÊýµÄ³ý·¨¡£ÈÃÎÒÃǼÙÉèÎÒÃÇÓµÓÐÒ»¸öÍêÕûµÄ¿âÎĵµ£¬²¢ÇÒÇå³þµØÖªµÀÕâÁ½¸öº¯ÊýʹÓõĵ÷ÓùßÀý(¼ÙÉèÎÒÃÇÓÐÕâ¸ö¿âµÄÍ·Îļþ)£¬¶øÇÒÎÒÃÇ»¹ÖªµÀËüÃǸ÷×Ô¶¼Ê¹ÓÃÄÄЩ²ÎÊý¡£ÔÚÆäËûÇé¿öÏÂÎÒÃÇÐèҪʹÓÃÄæÏò¹¤³ÌÀ´»ñµÃÕâЩµ×²ãÐÅÏ¢

´úÂëÇåµ¥1£º

6// ¸Ãº¯Êý½«Á½¸öÊýÏà¼Ó²¢½«½á¹û´¢´æÓÚResult±äÁ¿ÖÐ 
// ³É¹¦·µ»ØTRUE£¬Ê§°Ü·µ»ØERROR
BOOL __stdcall Sum(int Number1, int Number2, int * Result);
// ¸Ãº¯Êý½«Á½¸öÊýÏà³ý²¢½«½á¹û´¢´æÓÚResult±äÁ¿ÖÐ
// ³É¹¦·µ»ØTRUE£¬Ê§°Ü·µ»ØERROR
BOOL __stdcall Divide(int Number1, int Number2, int * Result);

ÔÚÎÒÃǵÄÑùÀý¿âÖУ¬Divide()º¯ÊýÊÇÓÐbugµÄ£¬ÒòΪÈç¹û³ý0¾Í»áµ¼Ö³ÌÐò±ÀÀ£(¼ÙÉèÎÒÃǵijÌÐò²¢Ã»ÓÐ×öÒì³£´¦Àí)£¬ÏÖÔÚÎÒÃǵÄÄ¿±ê¾ÍÊÇÀ´ÐÞ²¹Õâ¸ö©¶´¡£

´úÀíDLL

ΪÁËÐÞ²¹BlackBox.dllÖеÄ©¶´£¬ÎÒÃǽÓÏÂÀ´ÐèÒª´´½¨Ò»¸öÖмä¿â£¬Äܹ»Ê¹Divide()º¯ÊýµÃÒÔÓÐЧӦÓöø²»³öÏÖ³ý0Òì³£¡£¸ÃÓ¦ÓòÉÓÃFASM±àÒëÆ÷(²¨À¼µÄmr Tomasza Grysztar ´´½¨)µÄ32λ»ã±àÆ÷¡£ÔÚÏÂÃæÄã»á¿´µ½´øÓо«È·×¢Ê͵ÄÑùÀý¿âÄ£°å¡£

´úÂëÇåµ¥2£ºÑùÀý¿âµÄ¿ªÍ· ;

-------------------------------------------------  
; DLL Êä³öÎļþ¸ñʽ
;-------------------------------------------------
format PE GUI 4.0 DLL
; DLL Èë¿Úµãº¯ÊýÃû
entry DllEntryPoint
; µ¼ÈëµÄWindowsº¯ÊýºÍ³£Êý
include '%fasm%\include\win32a.inc'

×¢ÒâÔ´´úÂëµÄ¿ªÍ·£¬Äã¿ÉÒÔÔÚÕÒµ½Êä³öÎļþµÄÀàÐÍÉùÃ÷£¬²¢ÇÒÔÚÍ·Îļþ¡¢DLL¿âµÄº¯ÊýÈë¿ÚµãÒ²¿ÉÒÔ·ÅÖÃÕâЩ´úÂë

´úÂëÇåµ¥3£ºÎ´³õʼ»¯µÄÊý¾Ý¶Î ;

------------------------------------------------- 
; δ³õʼ»¯µÄÊý¾Ý¶Î
;-------------------------------------------------
section '.bss' readable writeable
; uchwyt HMODULE oryginalnej biblioteki
hLibOrgdd ?

¿ÉÖ´ÐÐÎļþºÍDLL¿â±»·Ö¸îΪһ¸ö¸ö¶ÀÁ¢µÄ²¿·Ö£¬ËûÃÇÆäÖÐÖ®Ò»ÊÇδ³õʼ»¯µÄÊý¾Ý¶Î£¬Õⲿ·Ö²¢²»Õ¼ÓÃÓ²Å̵Ŀռ䣬½ö½öÓµ×÷ÓڼǼ³ÌÐòËùʹÓõÄδ³õʼ»¯±äÁ¿µÄÕûÌå´óСÐÅÏ¢¡£¿ÉÖ´ÐÐÎļþµÄ¶ÎÃû³Æ²¢²»ÖØÒª(Ëü±»ÏÞÖÆÎª×î¶àÖ»ÓÐ8¸ö×Ö·û)£¬Í¨³£Ëü»á±»¸³ÒÔ¹«Ë¾ºÏͬµÄÃû³Æ¡£ÔÚÕâ¸ö¶ÎµÄÉùÃ÷Öл¹»á¶¨Òå·ÃÎÊȨÏÞ(Èç¶Á¡¢Ð´¡¢Ö´ÐÐ)£¬µ«ÊÇÔÚFASM±àÒëÆ÷ÏÂ.bss¶ÎµÄÉùÃ÷»¹»áΪ±äÁ¿´´½¨Ò»¸öδ³õʼ»¯µÄ¶Î¡£

´úÂëÇåµ¥4£ºÊý¾Ý¶Î ;

------------------------------------------------- 
; ³õʼ»¯µÄÊý¾Ý¶Î
;-------------------------------------------------
section '.data' data readable writeable
; ԭʼ¿âµÄÃû³Æ
szDllOrgdb 'BlackBox_org.dll',0

ÒòΪԭʼ¿âÒѾ­ÓÐÁËÃû³ÆÁË£¬ËùÒÔÕâÀïÎÒÃÇÖØÃüÃûÒ»¸öBlackBox_org.dll(ËüÒÔASCIIÐÎʽ´æ´¢ÓÚÔ´´úÂëÖУ¬ÒÔnull½áÊø)£¬Õâ¸ö¿â»áÔÚºóÃæÓõ½¡£

´úÂëÇåµ¥5£º´øÓÐDLLÈë¿ÚµãµÄ´úÂë¶Î ;

;------------------------------------------------- 
; ¿âµÄ´úÂë¶Î
;-------------------------------------------------
section '.text' code readable executable
;-------------------------------------------------
; DLL¿âÈë¿Úµã (DllMain)
;-------------------------------------------------
proc DllEntryPoint hinstDLL, fdwReason, lpvReserved
moveax,[fdwReason]
; DLL library ¼ÓÔØÍê±ÏºóÁ¢¼´´«µÝʼþ
cmpeax,DLL_PROCESS_ATTACH
je_dll_attach
jmp_dll_exit
; ¿âÒѾ­¼ÓÔØ
_dll_attach:
; »ñµÃԭʼ DLL ¿âµÄ¾ä±ú
; Èç¹ûÏëÒªµ÷ÓÃԭʼº¯Êý¾Í»áʹÓÃ
pushszDllOrg
call[GetModuleHandleA]
mov[hLibOrg],eax
; ·µ»Ø 1 ˵Ã÷¿â³õʼ»¯³É¹¦
moveax,1
_dll_exit:
ret

´úÂë¶Î°üº¬ËùÓп⺯ÊýºÍDLLÈë¿Úµãº¯Êý¡£ÕâÊÇÒ»¸öÌØÊâµÄº¯Êý£¬ËüÔÚ¿â¼ÓÔØÒÔºó±»Windowsϵͳº¯Êýµ÷ÓᣴúÂë¶ÎÐèÒª±»±ê¼ÇÉÏ¿ÉÖ´Ðеıê¼Ç£¬ÒÔ´ËÀ´¸æËß²Ù×÷ϵͳÕâ¶ÎÄÚ´æÇøÓò°üº¬¿ÉÒÔÖ´ÐеĴúÂë¶Î¡£Èç¹ûûÓÐÕâÑù±ê¼Ç£¬ÄÇôÈκÎÏë´ÓÕâ¿éÄÚ´æÇøÓòÖ´ÐдúÂëµÄÐÐΪ¶¼»áÒÔ´¥·¢CPU´¦ÀíÆ÷µÄDEP(Data Execution Prevention)ÄÚ´æ±£»¤»úÖÆ¶ø¸æÖÕ¡£ÔÚ³õʼ»¯º¯ÊýÄÚ²¿(DllMain),½ÓÊÕµ½ DLL_PROCESS_ATTACH ʼþºóÎÒÃǽ«Ê¹ÓÃԭʼDLL¿âÃû³ÆÀ´»ñµÃËûµÄ¾ä±ú£¬Ò²¾ÍÊÇ HMODULE (ÕâÑùÖ®ºó¾Í¿ÉÒÔ±»µ÷ÓÃÁË)¡£

´úÂëÇåµ¥6£º¹ý¶ÈÓÅ»¯±£»¤ ;

 µ÷ÓÃÈκÎԭʼ¿â 
; BlackBox_org.dll Öеĺ¯Êý, ûÓÐËüFASM±àÒëÆ÷¾Í»á
; ÒÆ³ý¶Ô¿âµÄÒýÓò¢ÇÒ²»»á±»×Ô¶¯¼ÓÔØ
calldummy

ÎÒÃÇ×Ô¶¨ÒåµÄ¿â»áµ÷Óõ½Ô­Ê¼¿â£¬µ«ÊÇÈç¹ûÎÒÃÇÒ»µãÒýÓÃÒ²²»·ÅÔÚÔ´´úÂëÖУ¬FASM±àÒëÆ÷»áÒÆ³ýËùÓжÔËüµÄÒýÓÃ(ÓÅ»¯)¶øÇÒԭʼ¿â²¢²»»á±»×Ô¶¯¼ÓÔØ£¬Õâ¾ÍÊÇΪʲôÔÚretÖ¸ÁîºóÖ±½Ó·ÅÁËÒ»¸öαµ÷ÓõÄÔµ¹Ê(ÕâÑùÔÚÈκÎʱºò¶¼²»»áÖ´ÐÐ)

´úÂëÇåµ¥7£ºÓÐЧµÄDivide()º¯Êý´úÂë ;

------------------------------------------------ 
; ÎÒÃÇÐ޸ĺóÄܹ»´¦Àí³ý0´íÎóµÄDivide() º¯Êý
;-------------------------------------------------
proc Divide Number1, Number2, Result
; ¼ì²é³ýÊýÊÇ·ñΪ0
; Èç¹ûÊǵϰ·µ»ØERROR´úÂë
movecx,[Number2]
testecx,ecx
jeDivisionError
; ½«µÚÒ»¸öÊý×ÖÔØÈë EAX ´¦ÀíÆ÷
moveax,[Number1]
;À©Õ¹ EDX ¼Ä´æÆ÷À´´¦ÀíÓзûºÅÊý
cdq
; ÏÖÔÚ EDX:EAX ¼Ä´æÆ÷¶Ô¿ÉÒÔ´¦Àí64λÊý¾ÝÁË
; EDX:EAX / ECX ³ý·¨µÄʵÏÖ, ³ý·¨ÔÚEDX:EAX¼Ä´æÆ÷¶Ô
; ÉÏʵÏÖ£¬¾ÍÏñ¶Ô´ý64λÊý¾ÝÒ»Ñù, ³ý·¨µÄ½á¹û±£´æÔÚEAX
; ¼Ä´æÆ÷ÖÐ, ÓàÊý±£´æÔÚEDX ¼Ä´æÆ÷ÖÐ
idiv ecx
; ¼ì²éÓÐЧµÄÖ¸Ïò½á¹ûµÄÖ¸Õë
; Èç¹ûûÓмì²âµ½Ôò·µ»Øerror ´úÂë
movedx,[Result]
testedx,edx
jeDivisionError
; ÔÚÊܱ£»¤µÄµØÖ·´æ´¢³ý·¨µÄ½á¹û
mov[edx],eax
; ÒÔ exit code TRUE (1) ·µ»Ø
moveax,1
jmpDivisionExit
; ³ý·¨´íÎ󣬷µ»ØFALSE (0)
DivisionError:
sub eax,eax
DivisionExit:
; ´Ó³ý·¨º¯ÊýÖзµ»Ø
; ²¼¶ûÐ͵Äexit ´úÂë±»ÉèÖÃÔÚ EAX ¼Ä´æÆ÷ÖÐ
ret
endp

Ð޸ĺóµÄDivide()º¯ÊýµÄʵÏÖÔöÌíÁ˶Գý0´íÎóµÄУÑ飬º¯ÊýÓöµ½´íÎó»á·µ»Ø´íÎó´úÂëFALSE£¬ÁíÍ⻹¶îÍâ×öÁ˶ÔÖ¸Ïò½á¹û±äÁ¿resultµÄÖ¸Õë·Ç¿Õ¼ì²é£¬Èç¹ûÖ¸ÕëÖ¸ÏònullÒ²»á±¨´í¡£ÁíÍâÇë×¢Ò⣬Ð޸ĺóµÄº¯ÊýµÄµ÷ÓùßÀýÓëÔ­º¯ÊýÊÇÍêȫһֵ쬲¢ÇÒÔÚÎÒÃǵÄÕâ¸öÀý×ÓÖÐʹÓõÄÊÇstdcall¹ßÀý£¬ËùÒÔº¯Êý²ÎÊý±»´«µÝµ½Õ»ÖУ¬º¯Êý·µ»ØÖµ´¢´æÓÚEAX¼Ä´æÆ÷£¬Õ»Ö¸ÕëÒ²±»FASM±àÒëÆ÷×Ô¶¯ÐÞ¸´£¬·½·¨ÊǸù¾ÝÔ´´úÂëÖеÄretÉùÃ÷Éú³Éret (number_of_parameters * 4)Ö¸Áî

´úÂëÇåµ¥8£º¿âµÄµ¼Èë±í ;

------------------------------------------------ 
; ÎÒÃǵĿâʹÓõĺ¯Êý¶Î
;-------------------------------------------------
section '.idata' import data readable writeable
; ÔÚ´úÂëÖÐÓõ½µÄ¿âµÄÁбí
library kernel,'KERNEL32.DLL',\
blackbox, 'BlackBox_org.dll'
; KERNEL32.dll¿âµÄº¯ÊýÁбí
importkernel,\
GetModuleHandleA, 'GetModuleHandleA'
; ÉùÃ÷ÁËԭʼ¿âµÄÓÃ;
; DLL ¿â»á±»×Ô¶¯¼ÓÔØ
importblackbox,\
dummy, 'Divide'

FASM±àÒëÆ÷ÔÊÐíÎÒÃÇÊÖ¶¯µØ¶¨ÒåÎÒÃÇ×Ô¼ºµÄ¿âµ÷Óõ½µÄ¿âºÍº¯Êý£¬³ýÁ˱ê׼ϵͳ¿â£¬ÎÒÃÇÐèÒªÔÚÕâÀïÌí¼ÓÒ»¸ö¶Ô BlackBox.dll µÄÒýÓ᣶à¿÷ÓÚ´Ë£¬µ±Windows¼ÓÔØÎÒÃǵĹ³×Ó¿âµÄͬʱҲ»á¸ù¾ÝµØÖ·¿Õ¼ä¼ÓÔØÔ­Ê¼¿â£¬´Ó¶øÎÞÐèÔÙÊÖ¶¯µ÷Óà LoadLibraryA() º¯ÊýÀ´¼ÓÔØËü¡£ ÔÚijЩÇé¿öÏÂÏëҪʹÓõ¼Èë±íÀ´¼ÓÔØ¿âÉõÖÁÊÇÇ¿ÖÆÐÔÒªÇóʹÓà LoadLibraryA() µÄ£¬ËüÐèҪʹÓöàÏß³ÌÓ¦ÓóÌÐòÖÐTLS(Thread Local Storage)»úÖÆµÄ¶¯Ì¬Á´½Ó¿âÀ´Ö§³Ö¡£

´úÂëÇåµ¥9£ºº¯Êýµ¼³ö±í ;

------------------------------------------------ 
; µ¼³ö±í¶Î°üº¬ÎÒÃǵĿâÖе¼³öµÄº¯Êý
; ÕâÀïÎÒÃÇÒ²ÐíÒªÉùÃ÷ԭʼ¿âÖÐÉùÃ÷µÄº¯Êý
;-------------------------------------------------
section '.edata' export data readable
; µ¼³öº¯ÊýÁÐ±í¼°ÆäÖ¸Õë
export'BlackBox.dll',\
Sum, 'Sum',\
Divide, 'Divide'
; ת·¢±íÃû³Æ, Ê×ÏÈÄ¿µÄ¿â±»´æ´¢ (ÎÞÐè.DLLÀ©Õ¹)
; È»ºó×îÖյĺ¯ÊýÃû³Æ±»´æ´¢
Sum db 'BlackBox_org.Sum',0

ÔÚÕâ¸ö¶ÎÖÐÎÒÃDZØÐëÉùÃ÷ԭʼ¿âÖеÄËùÓк¯Êý£¬¶øÇÒÎÒÃÇÏëÒª¹³È¡µÄº¯Êý±ØÐëÔÚ´úÂëÖеÃÒÔÓ¦Óã¬ÏëÒª´«µÝ¸øÔ­Ê¼¿âµÄº¯Êý´æ´¢ÔÚÒ»¸öÌØÊâµÄÎı¾¸ñʽÖУº

DestinationDllLibrary.FunctionName

»ò

DestinationDllLibrar y.#1

ÒÔ´ËÀ´Ë³Ðòµ¼È뺯Êý¶ø·Ç°´ÕÕÃû³ÆµÄ˳Ðò¡£¸Ã»úÖÆµÄËùÓÐÄÚ²¿¹¤×÷¾ù½»ÓÉWindowsϵͳ×ÔÉí´¦Àí¡£

ÒÔÉÏΪDLLת·¢¡£

´úÂëÇåµ¥10£ºÖض¨Î»²¿·Ö ;

------------------------------------------------- 
; ÖØ¶¨Î»²¿·Ö
;-------------------------------------------------
section '.reloc' fixups data discardable

ÎÒÃǵĿâÖÐ×îºóÒ»¸ö¶ÎÊÇÖØ¶¨Î»¶Î£¬Ëü±£Ö¤ÁËÎÒÃǵĿâÄܹ»Õý³£ÔËÐС£ÕâÊÇÒòΪ¶¯Ì¬Á´½Ó¿â±»¼ÓÔØµÄ»ùµØÖ·ÊǷdz£¶à±äµÄ£¬¶øÒýÆðÕâ¸ö¶à±äÐÔµÄÔ­ÒòÔÚÓÚÖ¸ÕëʹÓõľø¶ÔµØÖ·ºÍ»ã±àÆ÷µÄÖ¸ÁîʹÓõľø¶ÔµØÖ·±ØÐë¸ù¾Ýµ±Ç°ÄÚ´æÖеĻùµØÖ·×ö³ö¸üУ¬¶øÕâ¸ö»ùµØÖ·µÄÐÅÏ¢ÕýÊÇÓɱàÒëÆ÷ÔÚÖØ¶¨Î»¶ÎÖÐÉú³ÉµÄ¡£

×ܽá

ÕâÆªAPI¹³×Ó½éÉܵķ½·¨¿ÉÒÔ±»³É¹¦Ó¦ÓÃÓÚ¸÷ÖÖʹÓö¯Ì¬Á´½Ó¿âµÄ³¡ºÏ£¬½Ï´«Í³µÄ¾­µäAPI¹³×Ó·½·¨¶øÑÔ¸÷ÓÐÀû±×£¬µ«ÊÇÔÚÎÒ¿´À´±¾Îĵķ½·¨ÎªÊµ¼ù´ò¿ªÁ˸ü´óµÄÍØÕ¹¿Õ¼ä£¬²¢ÌṩÁËÒ»ÖÖ¸ü¼Ó¼òµ¥µÄ¸Ä±äÈí¼þÍêÕû¹¦ÄÜÐԵķ½·¨¡£¸Ã·½·¨Í¬Ñù¿ÉÒÔÔڸ߼¶ÓïÑÔÖÐÒÔÊʵ±µÄµ¼³öº¯Êý¶¨ÒåÎļþ(DEF)µÄ·½Ê½ÊµÏÖ¡£

   
3035 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

iOSÓ¦Óð²È«¿ª·¢
Web°²È«Ö®SQL×¢Èë¹¥»÷
APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
³õ̽PHPµÄSQL×¢Èë¹¥»÷µÄ¼¼Êõ
´ÓGoogle±¸·Ý¿´¡°Êý¾Ý°²È«¡±

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
×¢²áÐÅÏ¢°²È«×¨ÒµÈËÔ±(CISP)
ÐÅÏ¢°²È«¹ÜÀí
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶

ÖйúÒøÐÐ ÐÅÏ¢°²È«¼¼Êõ¼°Éî¶È·ÀÓù
WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ij²ÆË°ÁìÓòÖªÃûIT·þÎñÉÌ Web°²È«²âÊÔ
ÆÕÈð¿Ë˹ web°²È«Éè¼Æ¡¢²âÊÔÓëÓÅ»¯
±±¾©ºÍÀûʱ ÐÔÄܺͰ²È«ÐÔ²âÊÔ
SUNÖйú¹¤³ÌÑо¿Ôº JSF¿ò¼Ü¡¢°²È«