¥»³¹±µµÛ²Ä¤@³¹¥¼§¹ªº³¡¤À¡A»¡©ú¡G①MOV »P ADD «ü¥O¡C②°ïÅ|»P PUSH¡BPOP «ü¥O¡C③¥Î x64dbg °£¿ù®Éªº°ò¥»¾Þ§@¡C
¶i¤J main °Æµ{¦¡¤§«áªº«e¨â¹D«ü¥O¬O¡G
mov rax,OneTwo+0b000000h
add rax,Number
¬Ý«ü¥O¦WºÙ¡AMOV »P ADD¡A¤j·§¤£Ãø²q¥X¨Ó¤À§O¬O move »P add ªº·N«ä¡A¥ç§Y²¾°Ê»P¬Û¥[ªº·N«ä¡C³o¨â¹D«ü¥O»P«e±ªº .DATA¡B.CODE¡BPROC ¤£¦P¡AMOV »P ADD ³£¬O x64 CPU °õ¦æªº«ü¥O¡AÄÝ©ó x64 «ü¥O¶°¤¤ªº¨ä¤¤¨â¹D«ü¥O¡C©³¤U¨Ó¬Ý¬Ý FIRST.ASM ¥Î¨ìªº¥|Ó«ü¥O¡C
MOV «ü¥Oªº»yªk¬O
MOV ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸
¨ä¥\¯à¬O§â¨Ó·½¹Bºâ¤¸¤ºªº¼ÆÈ¦s¤J¥Øªº¹Bºâ¤¸¸Ì¡]µù¤@¡^¡C¥Øªº¹Bºâ¤¸¥i¥H¬OÅܼƩάO¼È¦s¾¹¡A¨Ó·½¹Bºâ¤¸¥i¥H¬OÅܼơB¼È¦s¾¹©Î¥ß§YÈ¡]immediate value¡A¨ä·N¸q¬°ª½±µ¼g¦b«ü¥O¸Ì¡B·í§@¸ê®Æ¨Ï¥Îªº±`¼Æ¡^¡C
¦³Ãö MOV «ü¥Oªº¨Ï¥Î¡AÁÙnª`·Nªº¦³¨âÂI¡C²Ä¤@¬O¨Ó·½¹Bºâ¤¸©M¥Øªº¹Bºâ¤¸¤j¤p¥²¶·¬Û¦P¡A¨Ò¦p³£¬O 16 ¦ì¤¸ªº¼È¦s¾¹©Î³£¬O 32 ¦ì¤¸ªº¼È¦s¾¹¡A¤£¥i¤@Ó¬O 16 ¦ì¤¸¡A¥t¤@Ó¬O 32 ¦ì¤¸¡C²Ä¤G¬O¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¤£¯à¦P®É¬°ÅܼơC¨Ò¦p©³¤Uªº¨Ò¤l¡G
x dq ? ;©w¸q x ÅܼƬ°¥|¦r²Õ¾ã¼Æ ⁝ mov rcx,2 ;¨Ï RCX Åܬ° 2 mov x,rcx ;§â RCX ¤§È²¾¤JÅÜ¼Æ x ¸Ì¡A¬G«á¨Ó x¡×2¡ARCX ¤´¬O 2
¦b¶i¤J main °Æµ{¦¡¤§«áªº²Ä¤@¹D«ü¥O¬O¡umov rax,OneTwo+0b000000h¡v¡A¨ä¤¤ªº OneTwo ¤w¦b²Ä¤G¦æ¡uOneTwo EQU 12345h¡v«Å§i¬° 12345h¡C¡u+¡v³oÓ¹Bºâ¤l¬O¥Ñ²Õ;¹ ML64.EXE °õ¦æªº¡A·N«ä¬O·í ML64.EXE ¬Ý¨£³oÓ¹Bºâ¤l¡A·|¶i¦æ¥[ªk¹Bºâ¦Ópºâ¥Xµ²ªG¡AÂà´«¦¨¾÷±ñ½X¡C©Ò¥HÂX¤j¨Ó»¡¡A¡u+¡v¤]¬O°²«ü¥O¡C³Ì«á¡A³o¤@¦æ«ü¥Oªº·N«ä¬O¨Ï RAX ¤§ÈÅܬ° 0B012345h¡C
³o¸Ì¦³Ó²Ó¸`¡A¤Q¤»¶i¦ìªº¥ß§YȦpªG¥H^¤å¤l¥À¶}ÀY¡A¥²¶·¦b«e±¥[Ó¡u0¡v¡A§_«h²Õ;¹·|¥H¬°¥¦¬OÅܼƩβŸ¹¦WºÙ¡A©ó¬O´N·|¥X²{¿ù»~¡C
ADD «ü¥O¬O¥Î¨Ó¶i¦æ¥[ªk¹Bºâªº«ü¥O¡C»yªk¬O¡G
ADD ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸
ADD ·|§â¥Øªº¹Bºâ¤¸ùرªº¼ÆÈ¥[¤W¨Ó·½¹Bºâ¤¸ùرªº¼ÆÈ¥H«á¡A¦A§âµ²ªG¦s¤J¥Øªº¹Bºâ¤¸¡C¦]¦¹°õ¦æ§¹«á¡A¥Øªº¹Bºâ¤¸¤§È·|§ïÅÜ¡A¨Ó·½¹Bºâ¤¸¤§È¤£ÅÜ¡C¥Øªº¹Bºâ¤¸¥i¥H¬OÅܼƩμȦs¾¹¡A¨Ó·½¹Bºâ¤¸¥i¥H¬OÅܼơB¼È¦s¾¹©Î¥ß§YÈ¡A¦ý¬O¥Øªº¹Bºâ¤¸©M¨Ó·½¹Bºâ¤¸¤£¯à¦P®É¬°ÅܼơA¦Ó¥B¨âªÌªº¦ì¤¸¼Æ¥²¶·¬Û¦P¡C
©³¤U¥H 104¡Ï105 ¬°¨Ò¤l»¡©ú ADD ªº¹B§@¤è¦¡¡C¨£¤U±µ{¦¡¡G
mov al,104
add al,105
²Ä¤@¦æ¨Ï AL Åܬ° 104¡A²Ä¤G¦æ¨Ï AL ¥[¤W 105¡A¦¹³Bªº 104¡B105 ³£¬O¥ß§YÈ¡C³Ì«á¬Û¥[¡A±o©M¬° 209¡A¦s©ó AL ¼È¦s¾¹¤º¡C
»¡©ú ADD ¦p¦ó¹B§@«e¡A¥ý»¡©ú¤G¶i¦ì¤Î¤Q¶i¦ì¼ÆÈªºªí¥Üªk¡C¦b¤Q¶i¦ì¤¤¡A¨CÓªü©Ô§B¼Æ¦r¨Ã«D¥Nªí¨ä¤j¤p¡A¥²¶·¼¤W 10 ªº¾¦¸¤è¡A¨Ò¦p 251 ¤¤ªº 2 ¨ä¹ê¬O 200¡A5 ¨ä¹ê¬O 50¡A¤]¥i¥H¬Ý¦¨¬O 2¡Ñ102¡B5¡Ñ101¡C¦P²z¡A¤G¶i¦ì¤]¬O¦p¦¹¡A´N¬O 0 ©Î 1¡A¦A¼¥H¤Gªº¾¦¸¤è¡C¨Ò¦p¤G¶i¦ì¼Æ¡A0110 1000 ¨ä¹ê´N 1¡Ñ26¡Ï1¡Ñ25¡Ï1¡Ñ23¡A¥[°_¨Ó¬O 104¡A¤]´N¬O»¡ 0110 1000b¡×104¡C
¥k¹Ï¬O 104¡Ï105 ¥H¤G¶i¦ì¹Bºâ¹Lµ{¡C¨ä¹ê»P¤Q¶i¦ì¤è¦¡Ãþ¦ü¡A¥u¤£¹L¤Q¶i¦ì¬Û¥[®É¡A¶W¹L¤E·|µo¥Í¶i¦ì¡F¤G¶i¦ì«h¬O¶W¹L¤@´Nµo¥Í¶i¦ì¡C
¥k¹Ï¤¤¡A³Ì¤W¤èªº²HÂÅ¦â¼Æ¦r¬O²Ä´XӦ줸¡A¦P®É¤]¬O¤Wz©Ò»¡ªº¤Gªº¾¦¸¤è¡C²Ä¹s¡B¤@¡B¤G¦ì¤¸¡A¨C¦ì¼Æ¬Û¥[³£¤£¶W¹L¤@¡Aª½±µ¼g¦b³Ì¤U¤è§Y¥i¡C²Ä¤TӦ줸¬Û¥[µ¥©ó¤G¡A¶W¹L¤@¡A´Nµo¥Í¶i¦ì¡A©Ò¥H¦b©³¤U¼g¹s¶i¤@¡C²Ä¥|Ӧ줸¬Û¥[¥»¬O¹s¡A¦ý¬OÁÙn¦A¥[¤W²Ä¤T¦ì¤¸¶i¦ìªº¤@¡A©Ò¥H³Ì«á¬O¤@¡C²Ä¤Ó¦ì¤¸¬Û¥[¬O¤G¡Aµo¥Í¶i¦ì¡A¤@¼Ë¬O¼g¹s¶i¤@¡C²Ä¤»Ó¦ì¤¸¬Û¥[¡A±o¨ì¤G¦A¥[¤W²Ä¤Ó¦ì¤¸¶i¦ìªº¤@¡A±o¨ì¤T¡C¦¹¦¸ªº¶i¦ì»P¨ä¦¸¤£¦P¡A«e¦¸¬Û¥[¬°¤G¡A³o¦¸¬O¤T¡A©Ò¥H¥²¶·¼g¤@¶i¤@¡C²Ä¤CӦ줸¬Û¥[¬O¹s¡A¦A¥[¤W¶i¦ìªº¤@¡A©Ò¥H³Ì«á¬O¤@¡C
²{¦b«ä¦Ò¤@Ó°ÝÃD¡A¦pªGµ{¦¡§ï¦¨¡G
mov al,128
add al,129
µ²ªG¦p¦ó¡H§A¥i¯à·|¥H¬°³o¤£¬O«Ü²³æ¡A¤£´N¬O 257 ¶Ü¡H¦ý¬O¦¹¼Æ¥H¤G¶i¦ìªí¥Ü¬O 1 0000 0001¡]¬Û·í©ó 101h¡A¨£¥k¹Ï¡^¡A¥²¶·¦û¥Î¤EӦ줸¡A¦Ó AL ¬O¤K¦ì¤¸ªº¼È¦s¾¹¡A¤w¸g¶W¹L AL ©Ò¯à®e¯Çªº½d³ò¡A¸Ó¦p¦ó¸Ñ¨M©O¡H
¤èªk¦³¨âÓ¡G①§ï¥Î¸û¤jªº¼È¦s¾¹¡A¨Ò¦p¤Q¤»¦ì¤¸ªº AX¡A©Î«á¨Ó 32 ¦ì¤¸ªº EAX¡A¬Æ¦Ü¬O 64 ¦ì¤¸ªº RAX¡C¦ý¬O¡AÁ`·|ÁÙ¦³§ó¤jªº¼Æ·|¶W¹L 64 ¦ì¤¸©Ò¯àªí¥Üªº½d³ò¡A¦]¦¹¦³²Ä¤GÓ¤èªk¡C②³]¸mºX¼Ð¼È¦s¾¹¡A¨Ã©ó¸Ó¼È¦s¾¹³]¸m¶i¦ìºX¼Ð¡C
ºX¼Ð¼È¦s¾¹¬O¦ì©ó CPU ¤ºªº¤@Ó¯S®íªº¼È¦s¾¹¡A¬Y¨Ç«ü¥O°õ¦æ«á·|§ïÅܺX¼È¦s¾¹ªº¼ÆÈ¡A¹³ ADD¡F¦³¨Ç¤£·|¡A¹³ MOV¡CºX¼Ð¼È¦s¾¹¨CӦ줸¥Nªí¹Bºâ«áªºª¬ºA¡A©Î¬O°µ¬°¨ä¥L¥Î³~¡C
¦b x64 CPU ¤º¡AºX¼Ð¼È¦s¾¹¦WºÙ¬O RFLAGS¡A¨ä¤¤ªº²Ä 0¡ã15 ¦ì¤¸ºÙ¬° FLAGS¡A²Ä 0¡ã31 ¦ì¤¸ºÙ¬° EFLAGS¡]©µ¦ùºX¼Ð¼È¦s¾¹¡^¡A³o³£¬O¬°¤F¬Û®e 16 »P 32 ¦ì¤¸ªº CPU¡C¦ý¬O¦]¬° 32 ¦ì¤¸ªººX¼Ð¤w¸g¨¬°÷À³¥I©Ò¦³±¡ªp¡A¤£»Ýn¼W¥[¨ì 64 ¦ì¤¸¡A©Ò¥H 32¡ã63 ¦ì¤¸³£«O¯d¤£¨Ï¥Î¡C©³¤U¬O©µ¦ùºX¼Ð¼È¦s¾¹¥Ü·N¹Ï¡G
¥Ñ¤W¹Ï¥i¥H¬Ý¥X¨Ó¡AºX¼Ð¼È¦s¾¹¤¤¡A¦³³\¦h¦ì¤¸¬OªÅ¥Õ¨S¦³¦WºÙ¡A³o¨Ç³£¥¼¨Ï¥Î¡F¦Óµ{¦¡¥u¨Ï¥Î¼Ð¦³¥Õ¦â¦rªº¦ì¤¸¡A¨CӦ줸¥Nªí¤@ÓºX¼Ð¡A¦U¦Û¥Nªí¤£¦Pªº·N¸q¡C¦b³o¸Ì¶È¤¶²Ð¶i¦ìºX¼Ð©M¹sȺX¼Ð¡G
¤Uªí¬O¤Wz»¡©úªº¾ã²z¡G
| ºX¼Ð¦WºÙ | 0¡]²M°£¡^ | 1¡]³]©w¡^ |
| ¹sȺX¼Ð¡]ZF¡^ | ¹Bºâµ²ªG¤£¬°¹s NZ | ¹Bºâµ²ªG¬°¹s ZR |
| ¶i¦ìºX¼Ð¡]CF¡^ | ¹Bºâ®É³Ì°ª¦ì¤¸¤£¶i¦ì©Îɦì NC | ¹Bºâ®É³Ì°ª¦ì¤¸µo¥Í¶i¦ì©Îɦì CY |
³o¸Ì«Ü¯S§O¡A¥i¯à¦³¤H·|¥H¬°¤p¤ì°¸¼g¿ù¡AÀ³¸Ó¡uºâµ²ªG¬°¹s®É¡ACPU ·|§â¹sȺX¼Ð³]¬°¹s¡v¤~¹ï¡A¨ä¹ê¤£µM¡C¦b¹q¸£¤¤¡A¹Bºâµ²ªG¬°¯u¬O¤@¡A¬°°²¬O¹s¡C¹sȺX¼ÐÀËÅç¹Bºâµ²ªG¬O§_¬°¹s¡AY¬°¹s¡Aªí¥Ü¦¹¨Æ¥ó¬°¯u¦]¦¹¹sȺX¼Ð³]¬°¤@¡FY¤£¬°¹s¡Aªí¥Ü¦¹¨Æ¬°°²¦]¦¹¹sȺX¼Ð³]¬°¹s¡C ©³¤Uªº¨Ò¤l»¡©ú ZF »P CF ¦p¦ó¹B§@¡G
mov al,128
add al,129
³Ì°ª¦ì¤¸¡A¤]´N¬O²Ä¤CӦ줸¬Û¥[«á¡A·|µo¥Í¶i¦ì¡A©Ò¥H¶i¦ìºX¼Ð·|³]©w¬°¤@¡F¦ý AL ¤£¬O¹s¡A©Ò¥H¹sȺX¼Ð³Q²M°£¬°¹s¡C¦ý¦pªG¼g¦¨¤U±µ{¦¡¡G
mov ax,128
add ax,129
¨º»ò³Ì°ª¦ì¤¸¬O²Ä 15 ¦ì¤¸¡A©Ò¥H¶i¦ìºX¼Ð·|³Q²M°£¡F¦]¬°µ²ªG¤]¤£¬O¹s¡A©Ò¥H¹sȺX¼Ð¤]³Q²M°£¡C¦pªG¼g¦¨¡G
mov al,128
add al,128
¦]¬°µ²ªG¬O 100h¡A§Y 1 0000 0000b¡A©Ò¥H AL ¬°¹s¡A¹sȺX¼Ð·|³Q²M°£¡F¦P®É¦³µo¥Í¶i¦ì¡A©Ò¥H¶i¦ìºX¼Ð¤]³Q³]©w¡C
¦bÄ~Äò»¡©ú FIRST.ASM ±µ¤U¨Óªº¡upush rax¡v¡B¡upop Sum¡v¤§«e¡A±on¦³¤@¨Ç°O¾ÐÅé¤Î¨ä¦ì§}ªº°ò¦·§©À¡A¦]¦¹©³¤U¥ý¤¶²Ð¥¦Ì¡C
¦b¥Á°ê 114 ¦~®É¡]¦è¤¸ 2025 ¦~¡^¡AÓ¤H¹q¸£©Ò¦w¸Ëªº°O¾ÐÅé¡]°ÊºA°O¾ÐÅé¡^¤j¬ù 16¡ã32 GB¡AGB ¬O¤Q»õӦ줸²Õªº·N«ä¡A©Ò¥H¥i¥H»¡¬O¤@¦Ê¤»¤Q»õ¨ì¤T¦Ê¤G¤Q»õӦ줸²Õ¡C·í¹q¸£¶}¾÷®É¡A¤£ºÞ¬Oµ{¦¡½X©Î¸ê®Æ¡A³£¬OÀx¦s¦b°O¾ÐÅ餧¤¤¡C¦b³o»ò¦hªº°O¾ÐÅ餤¡An§ä¨ì¸ê®Æ¤@©wn¥Î¯S§Oªº¤èªk¡A§_«h´N¹³¤j®ü¼´°w¯ë§xÃø¡C
°O¾ÐÅé¥H¦ì¤¸²Õ¬°³æ¦ì¡A¥Ñ¹s¶}©l½s¸¹¡C²Ä¹sӦ줸²Õ½s¸¹¬O¹s¡B²Ä¤@Ӧ줸²Õ½s¸¹¬O¤@¡K¡K¡A¨Ì¦¹Ãþ±À¡A¤@ª½¨ì´X¤Q»õ©Î´X¦Ê»õ¬°¤î¡C³oùتº 0¡B1¡B2¡B3¡Kµ¥½s¸¹¡AºÙ¬°¦ì§}¡C·í¹q¸£n§â¸ê®Æ¦s¤J°O¾ÐÅé¡A©Î¥Ñ°O¾ÐÅéŪ¨ú¸ê®Æ®É¡A³£n«ü©w¨ìþ¤@Ó¦ì§}ªº°O¾ÐÅé¥h¦s¨ú¡C¤]´N¬O»¡¡A¦b³o¯EÃvªº°O¾ÐÅé¸Ì¡ACPU ¬O¾a¦ì§}¨Ó§â¸ê®Æ¦s¤J°O¾ÐÅ餤¡A¤]¬O¾a¦ì§}±q°O¾ÐÅ餤Ū¨ú¸ê®Æ¡C
³oºØ±¡§Î´N¦n¤ñ¤@´É«Ü¤jªº®ÈÀ]¡A¸Ì±¦³³\¦h©Ð¶¡¡A³o¨Ç©Ð¶¡³£¦³¦Û¤v¿W¤@µL¤Gªº©Ð¸¹¡C¾ã®y®ÈÀ]¦n¤ñ°O¾ÐÅé¡A¦U©Ð¶¡¦n¤ñ°O¾ÐÅ餤ªº¨CӦ줸²Õ¡A©Ð¸¹¦n¤ñ¬O¦ì§}¡A§ë±Jªº®È«È«h¬O°O¾ÐÅ餺ªº¸ê®Æ¡C·í®È«È§ë±J®É¡AªA°È¤Hû¤À°t®È«È¨ìþ¤@өж¡¥h¡A®È«È¨Ì¾Ú¸Ó©Ð¸¹¤J¦í¸Ó©Ð¶¡¡C
°²¦p¤w¦³¤F¦ì§}ªº·§©À¡A¨º»òÀ³¸Ó¬Ý¬Ý°O¾ÐÅ骺¦ì§}¡A¥H¤Î¨ä¤ºªº¸ê®Æ¨ì©³¬O«ç»òªºÃö«Y¡H¤U¹Ï¬O¥Î x64dbg ¸ü¤J FIRST.EXE ¤§«á©Ò§e²{ªºµøµ¡¡A¤p¤ì°¸©óµy«á®É¦A¥J²Ó»¡©ú¸ü¤J¹Lµ{¡A²¦³º¡A¦p¦ó¨Ï¥Î x64dbg ¬O°£¿ùªº¥²³Æ§Þ¡C¤£¹L¡A²{¦b¥u¶·ÁA¸Ñµ{¦¡½X¡B¸ê®Æ¦b°O¾ÐÅ餤ªº¼Ë¤l§Y¥i¡C
º¥ý¬Ý¥Hµµ¦â®Ø½u°é°_¨Óªº³¡¤À¡A³o¬O FIRST.EXE ªºµ{¦¡½X¡C³Ì¥ªÄ榳 EE1000¡BEE1007¡BEE100E¡K¡K¡]«e±ªº 0 ¬Ù²¤¡^¡A³o¨Ç³£¬O¤Q¤»¶i¦ì¼ÆÈ¡A¥Nªí¦ì§}¡]¦pªG§A¬Ý¨ìªº¬O¤£¦P¦ì§}¡A³o«Ü¥¿±`¡A¦]¬° Windows n§âµ{¦¡¸ü¤J¨ìþÓ¦ì§}¡A»P«Ü¦h¦]¯À¦³Ãö¡^¡C¦b²Õ¦X»y¨¥¤¤¡A¦ì§}±`±`¥Î¤Q¤»¶i¦ìªí¥Ü¡A¦pªG¤£¼ô±x³o®M¶i¦ì¤è¦¡¡A½Ð¾\Ū DOS ²Õ¦X»y¨¥ªþ¿ý¤G¡C
¦A¬Ý¥kÃä¤@Äæ¬O¡u48:C7C0 45¡K¡K¡v¡A³o¤]¬O¤Q¤»¶i¦ì¼Æ¡A¦ý¥²¶·¥H¦ì¤¸²Õ©î¶}¨Ó¬Ý¡]¹ï¤Q¤»¶i¦ì¦Ó¨¥¡A¤@Ӧ줸²Õ«ê¦n¬O¨â¦ì¼Æ¡^¡C³o¨âÄæªº·N«ä¬O¦b EE1000 ¦ì§}¤Wªº¸ê®Æ¬O 48¡A¦b EE1001 ¦ì§}¤Wªº¸ê®Æ¬O C7¡A¦b EE1002 ¦ì§}¤Wªº¸ê®Æ¬O C0¡K¡K³o¤@¦C¦@¦³¤CӦ줸²Õ¡A©Ò¥H¡A¤U¤@¦Cªº¦ì§}´NÅܦ¨ EE1007¡C¨º»ò 48:C7C0 45¡K¡K¤S¥Nªí¤°»ò·N¸q©O¡Hµª®×¦b¥kÃä¨ºÄæ¡A¥¦¥Nªí¡umov rax,B012345¡v³o¹D²Õ¦X»y¨¥«ü¥O¡A¸g¥Ñ²Õ;¹¡u½Ķ¡v«áªº¾÷±ñ½X( machine code )¡A¥¦¨ä¹ê´N¬O¤@³s¦ê 0 »P 1 ²Õ¦¨ªº¼ÆÈ¡A¥u¤£¹L¥H¤Q¤»¶i¦ìªí¥Ü¡A¥¦¬O CPU ¯à¡u¬Ý±oÀ´¡vªº«ü¥O¡C
¦A¨Ó¬ÝÂÅ¦â®Ø½u°é°_¨Óªº³¡¤À¡A³o¬O FIRST.EXE ªº¸ê®Æ¡C³Ì¥ªÄ檺²Ä¤@¦C¬O EE3000¡A³o¬O¦ì§}¡A¤¤¶¡¨ºÄ檺 45¡B23¡K¡K¡B22¡B12¡B11¡K¡K¦@¤Q¤»Ó¦ì¤¸²Õ«h¬O¦b EE3000¡ãEE300F ¦ì§}¤ºªº¸ê®Æ¡C¤]´N¬O»¡¡A¦b EE3000 ¦ì§}¤ºªº¸ê®Æ¬O 45¡B¦b EE3001 ¦ì§}¤ºªº¸ê®Æ¬O 23¡K¡K¦b EE3007 ¦ì§}¤ºªº¸ê®Æ¬O 22¡K¡K¡C¦A¬Ý¬Ý FIRST.ASM ªº¸ê®Æ°Ï¬q¡G
OneTwo EQU 12345h ;*************************************** .DATA Number DQ OneTwo Sum DQ 111222h
§A·|µo²{¡A¨Æ¹ê¤W¡A¦ì§} EE3000¡ãEE3007 ªº³o¤KÓ¦ì©ó²Õ¦s©ñªº¬O Number ÅܼơC¥¦³Ì°ªªº¦ì¤¸²Õ¬O 00¡A©ñ¦b³Ì°ªªº¦ì§}¤W¡C¦ý°£¿ù¾¹¤ºªº¦ì§}«o¬O¥Ñ§C¦Ó°ª¡A©Ò¥H°ª¦ì¤¸²Õ¦b¥k¡A§C¦ì¤¸²Õ¦b¥ª¡C³o»P§Ú̮Ѽg²ßºD¬Û¤Ï¡A¥H¦Ü©ó¬Ý°_¨Ó«Ü©_©Ç¡A¤£¹L³o¬O x86 CPU ¹ï¼ÆÈ¦s©ó°O¾ÐÅ骺±Æ¦C¤è¦¡¡A¥²¶·²ßºD¡]µù¤G¡^¡C¦ì©ó¦ì§} EE3008¡ãEE300F ³B¦s©ñªº¬O Sum ÅܼơA¸ò Number ¤@¼Ë¡A¨Ì·Ó©Ç²§ªº¤è¦¡±Æ¦C¡C
»¡¤F³o»ò¦h¡A°µÓµ²½×¡GWindows ¥H¦ì¤¸²Õ¬°³æ¦ì¡A§â°O¾ÐÅé¥Ñ 0 ¶}©l½s¸¹¡A³o¨Ç½s¸¹´N¬O¦ì§}¡F¨CÓ¦ì§}¥u¯àÀx¦s¤@Ӧ줸²Õªº¸ê®Æ¡A¥i¥H¬Oµ{¦¡½X¡A¤]¥i¥H¬O¸ê®Æ¡A¦pªG¸ê®Æ¬O¼ÆÈªº¸Ü¡A¥H¤pºÝ§Ç¡]µù¤G¡^¤è¦¡Àx¦s¦b°O¾ÐÅ餤¡C
°ïÅ|¬O¤@¶ô¯S®íªº°O¾ÐÅé¡A³o¸ÌÁ¿ªº¯S®í¨Ã¤£¬O¦¹°O¾ÐÅé§÷®Æ¡B»s³y¤è¦¡¡A¦Ó¬O«ü¦s¨ú¤è¦¡¡C¯S®í¤§³B¦³¤G¡G①¦s¤J¸ê®Æ»PŪ¨ú¸ê®Æ®É±Ä¥Î¥ý¶i«á¥Xªº¤è¦¡¡F②¸ê®Æ¦s¤J°ïÅ|®É¥Ñ°ª¦ì§}©¹§C¦ì§}¤è¦V¤@µ§¤@µ§¦a¦s¤J¡C
¥ý¶i«á¥Xªº·N«ä¬O«ü¡A¶V¥ý¦s¤Jªº¸ê®Æ¤Ï¦Ó¬O¶V«á±¨Ï¥Î¡C¦n¹³À\ÆU¸Ìªº½L¤l¤@¼Ë¡AÅ|¦b¶V©³¤Uªº½L¤l¬O¶V¥ý©ñªº¡A¶V¤W±ªº½L¤l¬O¶V±ß©ñªº¡C·í¤HÌn¥Î½L¤l®É¡A³£¬O¥ý¨ú¥X³Ì¤W±ªº½L¤l¡C°ïÅ|¤ºªº¸ê®Æ¡A´N¹³³o¨Ç½L¤l¡A¶V¥ý¦s¤J°ïÅ|¤¤ªº¸ê®Æ¡A¶V±ß¨Ï¥Î¡C¸ê®Æ¥Ñ°ª¦ì§}¦V§C¦ì§}¦s¤J¬O«ü¡A¥ý¦s¤Jªº¸ê®Æ©ñ¦b°ª¦ì§}¡A¦Ó«á¦s¤Jªº¸ê®Æ«h¦b¤W¤@µ§¸ê®Æªº¸û§C¦ì§}³B¡C
¬°¤F¹F¨ì³o¨âӥتº¡A¦s¨ú°ïÅ|¤Wªº¸ê®Æ®É¡A¬O¥Ñ¨âÓ x64 «ü¥O PUSH¡BPOP ·f°t RSP ¼È¦s¾¹¦s¨ú¡CRSP ¼È¦s¾¹ºÙ¬°°ïÅ|«ü¼Ð¼È¦s¾¹¡]stack pointer register¡^¡ARSP ³£·|«ü¦V°ïÅ|³»ºÝ¡A¦b°ïÅ|³»ºÝ¥H¤Î§ó°ª¦ì§}³£¤w¦s¦³¸ê®Æ¡A¤ñ°ïÅ|³»ºÝ¦ì§}§Cªº°O¾ÐÅ餺ªº¸ê®Æ¬OµL¥Îªº¡A¤]¥i¥H»¡¡A°ïÅ|³»ºÝ¬O¦s¦³¸ê®Æªº³Ì§C¦ì§}¡C¦pªG¬Ý¤£À´¡Aµ¥¤@¤U¨Ò¤lÁ¿§¹´N·|À´¤F¡CPUSH »P POP ªº»yªk¬O¡G
PUSH ¹Bºâ¤¸ POP ¹Bºâ¤¸
PUSH «á±±µµÛªº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡BÅܼƩα`¼Æ¡F¦Ó POP ªº¹Bºâ¤¸¥u¯à¬O¼È¦s¾¹©ÎÅܼơCPUSH ·|¥ý§â RSP ´î¥h¤K¡A¨Ï°ïÅ|³»ºÝ©¹§C¦ì§}²¾¤KӦ줸²Õ¡A¦A§â PUSH «á±±µµÛ¹Bºâ¤¸¦s¤J°ïÅ|¡A³oӰʧ@ºÙ¬°±À¤J°ïÅ|¡CPOP «ü¥O«h¬O¥ý±q RSP ©Ò«üªº°ïÅ|³»ºÝ¨ú¥X¼ÆÈ¡A¦s¤J¨ä«á±µµÛªº¹Bºâ¤¸¤º¡A¦A±N RSP ¥[¤K¡A³oӰʧ@ºÙ¬°¼u¥X°ïÅ|¡C
¥Ñ¦¹±oª¾¡APUSH ·|¨Ï°ïÅ|½d³òÂX¤j¡A°ïÅ|³»ºÝ©¹§C¦ì§}²¾°Ê¡F¦Ó POP «h¨Ï°ïÅ|½d³ò´î¤p¡A°ïÅ|³»ºÝ©¹°ª¦ì§}²¾°Ê¡C¥H©³¤Uªºµ{¦¡»¡©ú³o¨âÓ«ü¥O»P°ïÅ|¡G
mov rsp,2bfc38h
mov r8,12ch
push r8
push 190h
pop rax
¤U¹Ï¤¤¡A¨CÓ¬õ¦âªº¤è¶ô¬O¤K¦ì¤¸²Õªº°O¾ÐÅé¡C¥ý¬Ý¹Ï¤@¡A°²³] RSP ¬° 2BFC38h¡A¥ç§Y°ïÅ|³»ºÝ¦ì©ó¦¹¦ì§}¡C¦b 2BFC38h ³B¥H¤Î¸û°ª¦ì§}ªº°ïÅ|¡A§¡¤w¦s¦³¸ê®Æ¡A¦]¦¹»¡ RSP «ü¦V¦s¦³¸ê®Æªº³Ì§C¦ì§}¡C·í°õ¦æ¨ì¡uPUSH R8¡v®É¡A¥ý§â RSP ´î¤K¡A«ü¦V 2BFC30h ³B¡A¦A§â R8 ¤§È¡A12ch¡]µ¥©ó¤Q¶i¦ìªº 300¡^¦s¤J¦¹¦ì§}ªº°O¾ÐÅ餺¡C³o¼Ëªº¸Ü¡ARSP ¤´¬O«ü¦V¤w¦s¦³¸ê®Æªº³Ì§C¦ì§}¡A°ïÅ|³»ºÝ¦V§C¦ì§}©µ¦ù¤KӦ줸²Õ¡A¦p¤U¹Ï¤G¡C
±µµÛ PUSH 190h¡A¸ò¤W±¤@¼Ëªº¹Lµ{¡A§â RSP ´î¤K¡AÅܦ¨ 2BFC28h¡AµM«á§â 190h¡]¤Q¶i¦ì¬° 400¡^¦s¤J 2BFC28h ¦ì§}ªº°O¾ÐÅ餺¡C±µµÛªº«ü¥O¬O¡uPOP RAX¡v¡A¥¦·|§â RSP ©Ò«ü¦ì§}ªº°O¾ÐÅ餺®e¡A¦s¤J RAX ¼È¦s¾¹¸Ì¡AµM«á RSP ¥[¤W¤K¡F©Ò¥H RAX ¤§È·|Åܦ¨ 190h¡A¦P®É°ïÅ|³»ºÝÅܦ¨ 2DFC30h¡C
¦Ü©ó PUSH¡BPOP ªº¹Bºâ¤¸¬O¤£¬O¤@©w³£n 64 ¦ì¤¸©O¡H³oˤ£¤@©w¡A¥i¥H¬O 16 ©Î 32 ¦ì¤¸¡C¦pªG¬O¨ä¥¦¦ì¤¸¡A¨º»ò RSP ´N·|¼W´î¬ÛÀ³ªº¦ì¤¸²Õ¡C¦ý¬O¡A¦]¬°¥»³¹½Í½×ªº³£¬O 64 ¦ì¤¸ªºµ{¦¡¡A¦A¥[¤W¬°¤F²³æ¡A©Ò¥H³o¸Ì¥u»¡©ú PUSH »P POP ªº¹Bºâ¤¸¬O 64 ¦ì¤¸¾ã¼Æªº±¡§Î¡A¤]´N¬O¤KӦ줸²Õ¡C
¦A¨Ó¬Ý¬Ý FIRST.ASM ªºì©l½X¡G
mov rax,OneTwo+0b000000h
add rax,Number
push rax
pop Sum
«e¨â¦æ MOV¡BADD «ü¥O¤w¸gpºâ¥X RAX »P Number ¨â¼Æ¤§©M¡A¨Ã¦s©ó RAX ¤º¡C²Ä¤T¦æ¡APUSH RAX ·|§â RAX ¤º¤§¼ÆÈ±À¤J°ïÅ|¡Aºò±µµÛªº POP Sum «h·|±q°ïÅ|³»ºÝ¼u¥X¼ÆÈ¡A¨Ã¦s¤J Sum ÅܼƸ̡C¸g¹L³o¼Ëªº¾Þ§@«á¡ASum ¤§È´N¬Oì¥ý RAX ¤§È»P Number ¨â¼Æ¤§©M¤F¡C
x64dbg ¬O¤@´Ú¥\¯à±j¤jªº°£¿ù¾¹¡A¥¦¤£¶È¥i¥H±Nµ{¦¡¸ü¤J¡AÆ[¹î¨äµ{¦¡½X»P¸ê®Æ¡AÁÙ¯à¨Ï¹q¸£¨C°õ¦æ¤@¹D«ü¥O´N°±¤U¨ÓÆ[¹îµ²ªG¡C«áªÌ¬O§ì¥X¿ù»~µ{¦¡ªº«n¨BÆJ¡Aȱo¦n¦n¾Ç²ß¡C
¬°¤FÅý§Ú̧óÁA¸Ñ FIRST.EXE ¹B§@±¡§Î¡A¤]¬°¤F±N¨Ó°£¿ù¡A¤p¤ì°¸Â²³æªº¤¶²Ð¦p¾Þ§@ x64dbg¡C¨Ì¾Ú²Ä¹s³¹°£¿ù¾¹ªº»¡©ú¦w¸Ë¦n x64dbg «á¡A¥H·Æ¹«¥ªÁä¦b¨ä¹Ï¥Ü¤WÂIÀ»¨â¦¸¡A°õ¦æ x64dbg¡CµM«á¦b¿ï³æ¤W¿ï¾ÜÀɮס÷¶}±Ò¡÷¤Á´«¨ì FIRST.EXE ©Ò¦b¤l¥Ø¿ý¡A¿ï¾Ü¥¦¡Aµe±¦p¤U¡G
¤W¹Ï¤¤¡A³Ì¤W¤èªº¼ÐÃDÄæ¦³¡ufirst.exe¡v¡A¥Nªí¤w¸ü¤Jµ{¦¡¤F¡Cx64dbg ªºµe±©M OllyDbg «Ü¹³¡A¤]¤À³Î¦¨´XÓ¥Dnªºµøµ¡¡G①¤Ï²ÕĶ°Ï¡]ÂÅ¦â®Ø¡^¡B②°T®§°Ï¡]¬õ¦â®Ø¡^¡B③¸ê®ÆÅã¥Ü°Ï¡]¾í¦â®Ø¡^¡B④¼È¦s¾¹°Ï¡]µµ¦â®Ø¡^¡B⑤°ïÅ|°Ï¡]ºñ¦â®Ø¡^¡C
²{¦b¦b¤Ï²ÕĶ°Ï¤ºÅã¥Üªºµ{¦¡¬OÄÝ©ó Windows ¨t²Î¤ºªºµ{¦¡¡A¨Ã¤£¬O§Ú̩Ҽ¶¼gªº FIRST.EXE µ{¦¡¡A¦]¦¹±o¥ýÅã¥Ü§Ú̪ºµ{¦¡¤~¦æ¡C«ö¤UÁä½L¤Wªº¡uF9¡v§Ö±¶Áä¡]F9 ¬O°õ¦æªº·N«ä¡C¤]¥i¥H¥Î·Æ¹«ÂI¿ï¼ÐÃDÄæ¤U¤èªº¥D¿ï³æ¡u°£¿ù¡v¡÷¡u°õ¦æ¡v¡^¡A³o®É¤~¯u¥¿ªº¨ì¹F FIRST.EXE ªº¶i¤JÂI¡A¤U¹Ï¤¤¥HÂÅ¦â®Ø®Ø¦íªº´N¬O FIRST ªºµ{¦¡½X¡C¦pªG¨C¦¸³£n«·s°µ¤@¦¸´N«Ü³Â·Ð¡A¥i¥H¦b¥D¿ï³æ¤W¿ï¾Ü¡u¿ï¶µ¡v¡÷¡u°¾¦n³]©w¡v¡÷¡u¨Æ¥ó¡v¶±¡÷¶È¤Ä¿ï¡u¤J¤f¤¤Â_ÂI¡v¡A¨ä¾lªº¤Ä¿ï³£¨ú®ø¡AµM«á«ö¡uÀx¦s¡v§Y¥i¡C
¥i¥H¬Ý¨£ÂÅ¦â®Ø¤¤³Ì¥ªÃä RIP¡BRDX¡BR9 ³£«ü¦V¦ì§} EE1000h¡A³o¬O FIRST ªº¶i¤JÂI¡AÀËÅç¼È¦s¾¹°Ï¤¤³o¤TӼȦs¾¹¤§È¡A´N¬O EE1000h¡]µµ¦â®Ø¡A¦pn¬Ý¨£ RIP ¥i¥H©Ô°Ê¼È¦s¾¹°Ï¥kÃ䪺±²°Ê¶b¡^¡C¥J²ÓÆ[¹î¡A¥i¥Hµo²{ EE1000h ³oÓ¦ì§}I´º¬O¶Â¦âªº¡A³o¬O RIP «ü¨ì³oÓ¦ì§}©Ò¾ÉPªº¡CRIP ^¤å¬O instruction pointer register¡AºÙ¬°«ü¥O«ü¼Ð¼È¦s¾¹¡A¥¦©Ò«üªº¦ì§}¬O CPU §Y±N°õ¦æªº«ü¥O¤§¦ì§}¡A¦ý©|¥¼°õ¦æ¡C
³oÓ¦ì§}¤Wªº¨ä¥LÄæ¦ìI´º¬O¦Ç¦â¡A³o¥Nªí·í«e¦ì§}¡A¨Ï¥ÎªÌ¥i¥H×§ï·í«e¦ì§}¤Wªºµ{¦¡½X©Î³]©w¤¤Â_ÂI¡K¡Kµ¥¤u§@¡A¨Ï¥ÎªÌ¤]¥i¥H¥Î·Æ¹«ÂI¿ï¨ä¥L¦ì§}¡A¦Ó§ïÅÜ·í«e¦ì§}¡C¦Ó RDX¡BR9 «ü¨ì¦¹¦ì§}¥u¬O«ê¥©¡Cºñ¦â®Ø¤º¬O RSP ¤§È¡A¥¦«ü¦Vªº¬O°ïÅ|³»ºÝ¡A¤]´N¬Oºñ¦â½bÀY©Ò«üªº¦a¤è¡]°ïÅ|³»ªº¦ì§}¬O 2CFF18h¡A¨ä¤ºÀx¦sªº¸ê®Æ¬O 7718652Dh¡^¡C
²{¦b¨Ó¬Ý¬Ý¸ê®ÆÅã¥Ü°Ï¡A¦ý¥¦Åã¥Üªº¨Ã«D FIRST ªº¸ê®Æ°Ï¬q¡Cn¨Ï¸ê®ÆÅã¥Ü°ÏÅã¥Ü FIRST ªº¸ê®Æ°Ï¬q¡A±onª¾¹D FIRST ªº¸ê®Æ°Ï¬q¦b¨º¨à¡Hµª®×¦b¤W¹Ï¤Ï²ÕĶ°Ïªº¬õ¦â®Ø¤º¡A¹ï·Ó FIRST.ASM ì©lµ{¦¡ªº¤º®e¡A´N¯àª¾¹D³o¨âÓ¦ì§}¨ä¹ê´N¬O Number »P Sum ¨âÓÅܼƪº¦ì§}¡A¥¦ÌªºÈ¤À§O¬O EE3000h »P EE3008h¡C
¦³¨âÓ¤èªk¥i¥H¨Ï x64dbg Åã¥Ü FIRST ªº¸ê®Æ°Ï¬q¡G①¥H·Æ¹«¥ªÁäÂIÀ»¸ê®ÆÅã¥Ü°Ï¡÷«ö¤U Ctrl Á䤣©ñ¦A«ö¤U¡uG¡vÁä¡]¥ç§Y«ö¤U Ctrl¡ÐG¡^¡÷©ó¼u¥Xªº¹ï¸Ü²°¤¤¿é¤J¡uEE3000¡v¡÷«ö¡u½T»{¡v¡C②¥H·Æ¹«¥ªÁäÂIÀ»¸ê®ÆÅã¥Ü°Ï¡÷¦A«ö·Æ¹«¥kÁä¡÷¿ï¡u«e©¹¡]G¡^¡v¡÷¿ï¡uªíz¦¡¡]E¡^¡v¡÷©ó¼u¥Xªº¹ï¸Ü²°¤¤¿é¤J¡uEE3000¡v¡÷«ö¡u½T»{¡v¡C¤£ºÞþºØ¤èªk¡A³£·|±o¨ì¤U±µe±¡C³o®ÉԤϲÕĶ°Ï¬O FIRST ªºµ{¦¡½X¡A¸ê®ÆÅã¥Ü°Ï¤º¬O FIRST ªº¸ê®Æ°Ï¬q¡A°ïÅ|°Ï¬q¤ºªº°ïÅ|¸ê®Æ·|¥Ñ x64dbg ¦Û°ÊÅã¥Ü¡C
²{¦b«ö¤U¡uF7¡vÁä¡A³o¬O x64dbg ªº§Ö±¶Áä¡A¥¦·|¨Ï CPU °õ¦æ RIP ©Ò«ü¦ì§}¤Wªº¤@¹D x64 «ü¥O«á°±¤U¨Ó¡A¦pªG¸Ó«ü¥O·|¨Ï¼È¦s¾¹¡BÅܼƩΰïÅ|§ïÅÜ¡A¤]³£·|¥H¬õ¦âÅã¥Ü¥X¨Ó¡C³o®ÉÔ¡Aµe±Åܦ¨¤U¹Ï¡G
èè°õ¦æªº«ü¥O¬O¡uMOV RAX,0B012345h¡v¡A©Ò¥H¥i¥H¬Ý¨ì RAX ¤w¸gÅܬ°¦¹¥ß§YȤF¡A¥B¥H¬õ¦âªí¥Ü¡]¤W¹ÏÂÅ¦â®Ø¡^¡C»P¦¹´X¥G¦P®É¶¡¡ARIP «ü¦V¤U¤@¹D«ü¥Oªº¦ì§}¡A¤]¥i¥H§â¼È¦s¾¹°Ïªº±²°Ê¶b©¹¤U©Ô¡AÀˬd¬Ý¬Ý RIP ¬O§_¬° EE1007¡C
¦n¤F¡A¦¹®É§Y±N°õ¦æªº¬O¡uADD RAX,Number¡v¡A¦ý x64dbg Åã¥Üªº¬O¡uADD RAX,QWORD PTR DS:[EE3000]¡v¡A§Ú̪¾¹D EE3000 ¬O Number ªº¦ì§}¡A¨º»ò QWORD PTR¡BDS:¡B[] ¥Nªí¤°»ò·N«ä©O¡H¤p¤ì°¸µy«á¦A¸ÑÄÀ¡C²{¦b¡A¦A«ö¤@¦¸¡uF7¡vÁä¡Aµe±Åܦ¨¤U¹Ï¡G
¦]¬°ì¨Ó RAX µ¥©ó 0B012345h¡A¥[¤W Number¡ANumber ¤§È¬O 12345h¡A©Ò¥H RAX Åܬ° 0B02468Ah¡A³o®É¨Ã¥¼¶W¹L RAX ©Ò¯à®e¯Çªº½d³ò¤F¡A©Ò¥H¶i¦ìºX¼Ð·|Åܬ°¹s¡]NC¡^¡F¹Bºâ«á RAX ¤£¬°¹s¡A©Ò¥H¹sȺX¼Ð¬°¹s¡]NZ¡^¡C¥i¥H§â¼È¦s¾¹°Ïªº±²°Ê¶b©¹¤U©Ô¡AÆ[¹î³o¨âÓºX¼Ð¬O§_¦p«ez©Ò»¡ªº¡C
¤W¹Ï¤¤¡ARIP «ü¦V¦ì§} EE100Eh ³B¡A§Y±N°õ¦æ¡uPUSH RAX¡v¡C³oÓ«ü¥O¬O§â RAX ¤§È±À¤J°ïÅ|¡A¨Ì¾Ú«ez¨BÆJ¡A¥ý¨Ï RSP ´î¤K¡AÅܦ¨ 2CFF10h¡A³o¬O·sªº°ïÅ|³»ºÝ¡AµM«á¦A§â RAX ¤§È¦s¤J°ïÅ|³»ºÝ¡C©Ò¥H RSP ©Ò«ü¦ì§} 2CFF10h¡A¨ä¤º®e±NÅܬ° RAX ¤§È¡A¤]´N¬O 0B02468Ah¡C«ö¤U¡uF7¡vÁä°õ¦æ¥¦«á¡Aµøµ¡Åܦ¨¤U¹Ï¡AÂŦâ½bÀY³Bªº°ïÅ|³»ºÝ¡A´N¬O RAX ¤§È¡C
¤W¹Ï¤¤¡ARIP «ü¦V¦ì§} EE100Fh ³B¡A§Y±N°õ¦æ¡uPOP SUM¡v¡C¦pªG°õ¦æ¥¦¡ACPU ·|¥Ñ°ïÅ|³»ºÝ¨ú¥X¤@µ§¸ê®Æ¡A¨Ã¦s¤J Sum ÅܼƸ̡A¦P®É¨Ï°ïÅ|³»ºÝ²¾¦V§ó°ªªº¤KÓ¦ì§}¡C²{¦b RSP «ü¦Vªº¦ì§}¬O 2CFF10h¡A¨ä¤º®e¬O 0B02468Ah¡A©Ò¥H°õ¦æ§¹«á RSP «ü¦V 2CFF18h¡A¦Ó 0B2468Ah ±N·|¦s©ó Sum ÅܼƸ̡CSum ªº¦ì§}¦b¸ê®Æ°Ï¬q¡A¤]´N¬O 0EE3008h ¤§³B¡A¤]´N¬O¸Ó¦ì§}ªº¤º·|Åܬ° 0B02468Ah¡C
²{¦b«ö¤U¡uF7¡vÁä¡A¬Ý¤U¹ÏÂÅ¦â®Ø¤¤¡A´N¬O Sum ªº¤º®e¡AªGµMÅܦ¨ B02468Ah ¤F¡C
©³¤U¾ã²z¤F¤@¥÷ x64dbg ±`¥Îªº§Ö±¶Áä¡G
| §Ö±¶Áä | ¥Î³~ |
| F2 | ³]¸m¤¤Â_ÂI¡AY¸Ó¦ì§}¤W¤w¦³¤¤Â_ÂI¡A¦A«ö¤@¦¸«h¨ú®ø |
| F7 | ³æ¨B°lÂÜ¡A¨C¦¸¥u°õ¦æ¤@¹D«ü¥O´N°±¤î |
| F8 | ³æ¨B°lÂÜ¡A¦ý¹J¨ì°Æµ{¦¡®É¡Aª½±µ°õ¦æ§¹¾ãӰƵ{¦¡ |
| F9 | °õ¦æµ{¦¡¡Aª½¨ìµ{¦¡µ²§ô©Î¨ì¤¤Â_ÂI¤~°±¤î |
| Ctrl¡ÐF2 | «·s¶}©l°£¿ù¡A°lÂܬYÓµ{¦¡¨ì¥ô·N³B¡A«ö¤U Ctrl¡ÐF2 ³£·|±qÀY¶}©l¡Aì¨Ó°£¿ùªºµ{¦¡ÁÙ¦b°O¾ÐÅ餤¡A¤£·|Ãö³¬ x64dbg |
| Alt¡ÐF2 | Ãö³¬¥¿¦b¥¿¦b°£¿ùªºµ{¦¡¡A¸Óµ{¦¡·|¦Û°O¾ÐÅ餤®ø¥¢¡A¦ý¤£·|Ãö³¬ x64dbg |
| Ctrl¡ÐG | ¿ï©w¤Ï²ÕĶ°Ï¡B¸ê®ÆÅã¥Ü°Ï©Î°ïÅ|°Ï«á¡ACtrl¡ÐG ¥i¥H§ïÅܦì§} |
x64 «ü¥O¥i¥H°w¹ï°O¾ÐÅ餺ªº¸ê®Æ°µ¹Bºâ¡A³o¨Ç«ü¥O¥]§t MOV¡BADD¡BSUB¡BXOR¡K¡Kµ¥¡Cn¹ï°O¾ÐÅ餺ªº¸ê®Æ¶i¦æ¹Bºâ¡A¥²¶·¥ý«ü©w¬Oþ¤@Ó¦ì§}ªº°O¾ÐÅé¡A«ü©w°O¾ÐÅ骺¦ì§}ºÙ¬°©w§}¡A¤jP¥i¥H¤À¬°¨âºØ¡G①ª½±µ©w§}¡]direct addressing¡^»P②¶¡±µ©w§}¡]indirect addressing¡^¡C
¨ä¹ê»¡¬ï¤F¡Aª½±µ©w§}¨ä¹ê´N¬O¦s¨úÅܼƦӤw¡A¨Ò¦p©³¤Uªº¨Ò¤l¡G
Number DQ 12345h
⁝
mov rax,Number
¨ä¤¤ªº¡umov rax,Number¡v´N¬O§Q¥Îª½±µ©w§}ªº¤è¦¡¡A§â Number ÅܼƩҦb¦ì§}ªº°O¾ÐÅ餺®e²¾¤J RAX ¤º¡C¦b«e±¦¤w¤¶²Ð¹L³oºØ¤èªk¡A¦Ó¥B¤]ª¾¹D¦b¸ê®Æ°Ï¬q©Ò©w¸qªºÅܼơA¨ä¬O³£¥Nªí¬YÓ¦ì§}¡A³o¸Ì·íµM¤£·|µe³D²K¨¬¦AÂØz¤@¦¸¡A³o¸Ìn¤¶²Ð¦b x64dbg ªºªí¥Ü¤è¦¡¡C§Ú̪¾¹D¡AML64.EXE ·|pºâ Number Åܼƪº¦ì§}¡A·ín¦s¨ú¦¹ÅܼƮɡA¡uª½±µ¡v¨Ì¾Ú¦¹¦ì§}¥h¦s¨ú§Y¥i¡C°²³] Number ªº¦ì§}¬O¡uEE3000h¡v¡A¦b x64dbg ªº¤Ï²ÕͰÏÅã¥Ü¦¹«ü¥O®É¡A¦pªG¥H
mov rax,EE3000h
ªí¥Ü¡A¨º´N·|Åý¤H»~·|¬O§â¥ß§YÈ EE3000h ²¾¤J RAX ¸Ì¨Ï RAX Åܬ° EE3000h¡FµM¦Óµ{¦¡³]p®vªº¥»·N¬O§â¦ì©ó¦ì§} EE3000h ¤ºªº¼ÆÈ 12345h ²¾¤J RAX ¸Ì¡A©Ò¥H x64dbg ¤£¯à¼g¦¨¡umov rax,EE3000h¡v¡Cx64dbg ·|¥H¤@¹ï¤¤¬A¸¹¡u[]¡v±N¦ì§}¬A¦í¨Óªí¥Ü¡A¹³¤U±ªº¼Ë¤l¡G
mov rax,[EE3000h]
¦]¦¹§ÚÌn³o¼Ë·Q¡A·í¥H¤¤¬A¸¹¬A¦í¼ÆÈ®É¡A¦¹¼ÆÈ¬Oªí¥Ü¦ì§}¡A¦Ó¾ãÓ¦¡¤l ( ´N¬O¡u[¦ì§}]¡v) ¥Nªí¦¹¦ì§}¤ºªº¼ÆÈ¡CÁ|¤W±ªº¨Ò¤l¡A[EE3000h] ¥Nªí°O¾ÐÅé¦ì§} EE3000h ³Bªº¤º®e¡A¬d¾\¦¹¦ì§}ªº°O¾ÐÅé¡Aµo²{¨ä¤º®e¬°¡u12345h¡v¡A¦A§â¥¦²¾¤J RAX ¤º¡A©Ò¥H°õ¦æ§¹³o¹D«ü¥O«á¡ARAX ¤ºªº¼ÆÈ´N¬O¡u12345h¡v¡A¨£¥k¹Ï¡C¨Æ¹ê¤W¡A¦b¼¶¼g²Õ¦X»y¨¥ì©lµ{¦¡®É¡A§â
number DQ 12345h
⁝
mov rax,number
¼g¦¨
number DQ 12345h
⁝
mov rax,[number]
¤]¬O¥i¥Hªº¡A¨âªÌ·N¸q¬Û¦P¡C
±µ¤U¨Ó»¡©ú¶¡±µ©w§}¡Cè褶²Ðªºª½±µ©w§}¤¤¡A¤¤¬A¸¹¤ºªº¦ì§}¤£·|¦]¬°¬Y¨Çª¬ªp§ïÅÜ¡A¬O©T©wªº¡F¦Ó¶¡±µ©w§}«h¬O²o¯A¨ì¥H¼È¦s¾¹¬Æ¦Ü¦A¥[¤W¨ä¥L¼ÆÈ¥N´À¤¤¬A¸¹¤ºªº¦ì§}¡C³o¼Ëªº¦s¨ú¤è¦¡¡ACPU ¦b¦s¨ú®É´N¥²¶·¥ý¬d¾\¼È¦s¾¹¤º®e¡A¦A¨Ì¦¹¤º®e¨M©w¦ì§}¡AµM«á¤~¨Ì¾Ú¦¹¦ì§}¦s¨ú¡C¦]¬°¦h¤F¦V¼È¦s¾¹¬d¾\ªº¨BÆJ¡A©Ò¥HºÙ¬°¡u¶¡±µ¡v¡C
¶¡±µ©w§}¤S¤À¦¨³\¦hÃþ¡G⑴¥u¦³¼È¦s¾¹¡B⑵¼È¦s¾¹¥[°¾²¾¦ì§}¡B⑶¤Gªº¾¦¸¤è¼¥H¼È¦s¾¹¡B⑷¤Gªº¾¦¸¤è¦A¼¥H¼È¦s¾¹¥[°¾²¾¦ì§}¡B⑸¤Gªº¾¦¸¤è¼¥H¼È¦s¾¹¡A¥[¤W¥t¤@ӼȦs¾¹¡A¦A¥[¤W°¾²¾¦ì§}¡C¦b³o¸Ì¤p¤ì°¸¥u¤¶²Ð«e¨âÃþ¡Cnª`·Nªº¬O¡A¦b Win64 ¤¤°¾²¾¦ì§}¹w³]ȬO¥H 32 ¦ì¤¸ªº¼ÆÈªí¥Ü¡A³Ì¦h¤£¯à¶W¹L 0FFFFFFFFH¡A¦pªG¶W¹Ln¦b³sµ²®É¤U¹F¡u/LARGEADDRESSAWARE:NO¡v¿ï¶µ¡C
⑴¡B²Ä¤@ºØ¬O¶¡±µ©w§}³Ì²³æªº±¡§Î¡A¶È¶È¥H¤@ӼȦs¾¹¥N´À¤¤¬A¸¹¤ºªº¦ì§}¡A¦p¤U±ªºµ{¦¡¡G
mov r9,0EE3000h mov rax,[r9]
¨ä¤¤¡umov rax,[r9]¡v´N¬O§Q¥Î²Ä¤@ºØ¶¡±µ©w§}¡CCPU ·|¥ý¹î¬Ý R9 ¤§È¬°¦ó¡Aµo²{¬O¡u0EE3000h¡v¡A´N¨ì¦¹¦ì§}¥h¡A§â¦s©ñ¦b³oÓ¦ì§}ªº¤º®e²¾¤J RAX ¸Ì±¡C©ÎªÌ¤]¥i¥H³o¼Ë·Q¡A§â R9 ¬Ý¦¨¬O¤@Ó«ü¼Ð¡A©Ò«ü¦Vªº°O¾ÐÅé¦ì§}¬O¡u0EE3000h¡v¡A©ó¬O§â¦¹°O¾ÐÅ餺®e²¾¤J RAX ¤º¡C¦p¥k¹Ï©Ò¥Ü¡C
¥i¯à·|¦³¤Hı±o¶¡±µ©w§}¦h¤F¤@Ó¨BÆJ¡A°Z¤£³Â·Ð¡H³o·íµM¦³¦n³B¡A¦pªG§ïÅܼȦs¾¹ªº¼ÆÈ¡A©Ò«ü¦Vªº¦ì§}´N¤£¦P¡A¦Ó¦s¨úªº°O¾ÐÅ餺®e´N·|¤£¦P¡C©¹«á¦pªG³B²z¤j¶q¸ê®Æ®É¡A´N¦³¥i¯à·|³o¼Ë¨Ï¥Î¡A¨Ò¦pn¦s¨ú°}¦C¤¤ªº¤¸¯À´N¥i¥Î³oºØ¤èªk¡C
⑵¡B²Ä¤GºØ±¡§Îªº§Î¦¡¦b¤@¹ï¤¤¬A¸¹¤º§t¦³¤@ӼȦs¾¹¡A¨Ã¥B¥[©Î´î¤@ӥߧYÈ¡A¨Ò¦p¤U±µ{¦¡ªº²Ä¤G¡B¤T¦æ¡G
mov r9,0EE2FF0h
mov rax,[r9+10h]
·í CPU nŪ¨ú¡u[r9+10h]¡v°O¾ÐÅ餺ªº¸ê®Æ®É¡A¥²¶·¥ý¨ú¥X R9 ¼È¦s¾¹¤§¼ÆÈ¡A¦A¥[¤W 10h¡A¤~¯à±o¨ì¯u¥¿nŪ¨úªº¦ì§}¡A¦A¨ì¦¹¦ì§}¤WŪ¨ú¼ÆÈ¡C¨Ò¦p¥k¹Ï¤¤¡A°õ¦æ§¹³o¨â¹D«ü¥O«á¡ARAX ¬° 12345h¡C
¦b¼Æ¾Ç¤W¡A¥[¡B´î¡B¼¡B°£¬O§Ú̳̦¾Çªº¹Bºâ¡A¥¦ªº¹ï¶H¦³³\¦hºØ¡A¥i¯à¬O±`¼Æ¡BÅܼơK¡K¡A³o¨Ç±`¼Æ¡BÅܼơK¡K³£ºÙ¬°¹Bºâ¤¸¡]operand¡^¡A¦Ó¹Bºâªº°Ê§@ºÙ¬°¹Bºâ¤l¡]operator¡^¡C¨Ò¦p¡u10¡Ð8¡×2¡v¤¤¡A10 ¬O³Q´î¼Æ¡A8 ¬O´î¼Æ¡F¦b¹q¸£¤¤ªº³N»y¤¤¡A¦¹¤GªÌ¬Ò¬°¹Bºâ¤¸¡A¡u¡Ð¡vºÙ¬°¹Bºâ¤l¡C
¥|«h¹Bºâªº¹Bºâ¤¸³£¬O¨âÓ¡A¦ý¤]¦³¨Ç¹Bºâ¤l¥u¶·¤@Ó¹Bºâ¤¸¡A¬Æ¦Ü«Ü¦h¡C¨Ò¦pt¸¹¤]¥i¥H¬Ý¦¨¬O¤@ºØ¹Bºâ¡A¥¦´N¥u¦³¤@Ó¹Bºâ¤¸¡C
©Ò¥Hµ²½×¡G¹Bºâ¤l¡]operator¡^¬O«ü©w¸q¹Bºâªº¦æ¬°¡A¦Ó¹Bºâ¤¸¡]operand¡^«h¬O°Ñ»P¹Bºâªº¸ê®Æ©Î¹ï¶H¡C
¥ý»¡§Ú̮Ѽg¤Q¶i¦ì¼ÆÈªº¨Ò¤l¡C¨Ò¦p¤p¾Ç®É¡A°²¦pn¥Îªü©Ô§B¼Æ¦r¼g¥|¦Ê¤¤Q¤»¡A°O¦¨ 456¡A¤»¬OÓ¦ì¼Æ¡A¬O³o¤TÓªº³Ì§C¦ì¼Æ¡F¤¬O¤Q¦ì¼Æ¤ñ¤»°ª¤@¦ì¼Æ¡F¥|¬O¦Ê¦ì¼Æ¡A¬O³Ì°ª¦ì¼Æ¡C¤Q¤»¶i¦ì¤]¬O³o¼ËÃþ¤ñ¡A¨Ò¦p 12ABh¡A12 ºÙ¬°°ª¦ì¤¸²Õ¡AAB ºÙ¬°§C¦ì¤¸²Õ¡C°²¦p¦b¸ê®Æ°Ï¬q¤¤©w¸q¤TÓÅܼơGx¡By¡Bz
.DATA x DW 1234h y DD 0aabbcch z DQ 80706050403020ffh
¸ü¤J°O¾ÐÅé«á¡A¦p¤U¹Ï¡G
ª`·N¨ì¤W¹Ï¡A¥ÎÂÅ¦â®Ø®Ø°_¨Óªº¬O x¡B¥Îºñ¦â®Ø®Ø°_¨Óªº y¡B¥Î¬õ¦â®Ø®Ø°_¨Óªº¬O z¡C¥¦Ì³£¬O§C¦ì¤¸²Õ¦ì©ó§C¦ì§}¡A°ª¦ì¤¸²Õ¦ì©ó°ª¦ì§}¡C
¹³³o¼Ë¦ì¤¸²Õ¦s©ñ¦b°O¾ÐÅ骺§C¦ì§}¡A°ª¦ì¤¸²Õ¦s©ñ¦b°O¾ÐÅ骺°ª¦ì§}¡A³o¼Ëªº±Æ¦Cªº¤è¦¡ºÙ¬°¡u¤pºÝ§Ç¡v¡]little-endian¡^¡Cx86 ©Î x64 ®a±Úªº CPU ÄÝ©ó³oºØ¡C¤pºÝ§Ç¸û²Å¦X¹q¸£Åª¨úªº¤è¦¡¡A¦ý»P¤HÃþ¾\Ū²ßºD¬Û¥ª¡C¥t¦³¤@ºØºÙ¬°¤jºÝ§Ç¡]big-Endian¡^ªº±Æ¦C¤è¦¡¡A«h¬O°ª¦ì¼Æ¦s©ñ¦b°O¾ÐÅ骺§C¦ì§}¡B§C¦ì¼Æ©ñ¦s¦b°O¾ÐÅ骺°ª¦ì§}¡CMotorola 68000 ¨t¦C¥H¤Îºô¸ô¶Ç¿é§¡±Ä¥Î¤jºÝ§Ç¡A¥¦¸û²Å¦X¤HÃþ¾\Ū²ßºD¡A¦ý¤£²Å¦X¹q¸£Åª¨ú¤è¦¡¡C