PCDVD¼Æ¦ì¬ì§Þ°Q½×°Ï
PCDVD¼Æ¦ì¬ì§Þ°Q½×°Ï   µù¥U ±`¨£°ÝÃD ¼Ð°O°Q½×°Ï¬°¤wŪ

¦^¨ì   PCDVD¼Æ¦ì¬ì§Þ°Q½×°Ï > ¨ä¥L¸s²Õ > ¤C¼L¤K¦Þ²§¨¥°ó
±b¤á
±K½X
 

  ¦^À³
 
¥DÃD¤u¨ã
©_¤ì©Ô
*°±Åv¤¤*
 
©_¤ì©Ôªº¤jÀY·Ó
 

¥[¤J¤é´Á: Sep 2020
¤å³¹: 7
Question ½Ð±Ð¤@­ÓVC++ªº°ÝÃD

­ì©l½X:
¥N½X:
void Fun()
{
	__asm cmp ecx, 0x4000
	__asm jnz NO_Trinity
	__asm push 0x1E
	__asm push offset STRS_TRINITY_Tutorial
	__asm lea ecx, [ebp-0x20]
	caddr = 0x004040E0;
	__asm call caddr


½sĶ«áÅܦ¨³o¼Ë:

void Fun OP ¶}ÀY
¥N½X:
10001360 T> > \55                      push ebp
10001361    .  8BEC                    mov ebp,esp
10001363    .  83EC 40                 sub esp,0x40
10001366    .  53                      push ebx
10001367    .  56                      push esi
10001368    .  57                      push edi
10001369    .  8D7D C0                 lea edi,dword ptr ss:[ebp-0x40]
1000136C    .  B9 10000000             mov ecx,0x10
10001371    .  B8 CCCCCCCC             mov eax,0xCCCCCCCC
10001376    .  F3:AB                   rep stos dword ptr es:[edi]

10001378    .  81F9 00400000           cmp ecx,0x4000                             ;  ³o¸Ì¬O ASM ¶}©l
1000137E    .  0F85 B7000000           jnz Trinity.1000143B
10001384    .  6A 1E                   push 0x1E
10001386    .  68 80D00310             push offset Trinity.STRS_TRINITY_Tutorial
1000138B    .  8D4D E0                 lea ecx,dword ptr ss:[ebp-0x20]
1000138E    .  C705 D8F10310 E0404000  mov dword ptr ds:[caddr],0x4040E0
10001398    .  FF15 D8F10310           call dword ptr ds:[caddr]


§Ú­n½sĶ«á¶}ÀY´N¬O cmp ecx,0x4000 , ¤£­n 10001360 - 10001376 ¨º¬q, ³o¼Ë¸Ó«ç»ò©w¸q fun , ¥Î void ¤£¹ï§a ?
     
      
ÂÂ 2021-03-23, 10:23 AM #1
¦^À³®É¤Þ¥Î¦¹¤å³¹
©_¤ì©ÔÂ÷½u¤¤  
¤Ú¨§¥¬§¯
New Member
 
¤Ú¨§¥¬§¯ªº¤jÀY·Ó
 

¥[¤J¤é´Á: Apr 2017
¤å³¹: 8
§Ú°Ý­Ó§Ú¦n©_ªº°ÝÃD¡A§A¬O¦³ bug §x¦b 1360~1376 ¶Ü¡H
¤£µM¬°¦ó¤¶·N«e­±¦³¨º¨Ç code?
 
ÂÂ 2021-03-23, 10:31 AM #2
¦^À³®É¤Þ¥Î¦¹¤å³¹
¤Ú¨§¥¬§¯Â÷½u¤¤  
darkangel
Major Member
 
darkangelªº¤jÀY·Ó
 

¥[¤J¤é´Á: Aug 2001
¤å³¹: 211
§Ú²q³o¬q code ¤£¬O­ì¥»ªº¡A
·|¥Î asm ªº code ¦h¥b·|¬O¬°¤F³t«×©Î·Qª½±µ³B²zµwÅé¡A
¦ý³o¬q asm ·Pı¤£¥X¦³¥Î asm ªº·N¸q¦s¦b¡C

¦^¥¿ÃD¡A©Ò¥H§Ú²q§A¬O¤£·Q­n function call ¨Ò¦æ©Ê³B²z¡H
¨º¦³¸Õ¹L __inline ©Î static inline ¶Ü¡H

__________________
º¡©Û·l Á¾¨ü¯q
ÂÂ 2021-03-23, 10:46 AM #3
¦^À³®É¤Þ¥Î¦¹¤å³¹
darkangelÂ÷½u¤¤  
©_¤ì©Ô
*°±Åv¤¤*
 
©_¤ì©Ôªº¤jÀY·Ó
 

¥[¤J¤é´Á: Sep 2020
¤å³¹: 7
¤Þ¥Î:
§@ªÌdarkangel
§Ú²q³o¬q code ¤£¬O­ì¥»ªº¡A
·|¥Î asm ªº code ¦h¥b·|¬O¬°¤F³t«×©Î·Qª½±µ³B²zµwÅé¡A
¦ý³o¬q asm ·Pı¤£¥X¦³¥Î asm ªº·N¸q¦s¦b¡C

¦^¥¿ÃD¡A©Ò¥H§Ú²q§A¬O¤£·Q­n function call ¨Ò¦æ©Ê³B²z¡H
¨º¦³¸Õ¹L __inline ©Î static inline ¶Ü¡H



³o¬O Hook
´N¬O¦b­ì¥»exe¬Y³B¥[­Ó¸õÂà. ¸õ¨ìASM¥N½X¤W­±¶}©l¶], ±q__ASM ¶}©l

½sĶ«á ¥[¤W«e­±¦h¥X¨Óªº¨º¬q, µ{¦¡´N¿ù»~Ãö³¬¤F ....

§ï¦¨ __inline ©Î static inline ÁÙ¬O¤@¼Ë, «e­±·|¦h¥X¨º¤@¬q

VC++ §Ú¤~­è¾Ç, ÁÙ¦b6.0¶¥¬q, ¦Ñ¹ê»¡§Ú¤]·d¤£¤ÓÀ´

¦¹¤å³¹©ó 2021-03-23 11:07 AM ³Q ©_¤ì©Ô ½s¿è.
ÂÂ 2021-03-23, 10:59 AM #4
¦^À³®É¤Þ¥Î¦¹¤å³¹
©_¤ì©ÔÂ÷½u¤¤  
rockindy
Major Member
 

¥[¤J¤é´Á: Nov 2001
¤å³¹: 170
¥u­n§A§â code ¥]¦b function ¸Ì, ½sĶ«á´N¤@©w·|¦³ function prologue

¦pªG§A­n¥Î jump address ªº¤è¦¡¸õ¹L¥h°õ¦æ
´N­n¥t¥~¼g .asm ÀÉ®×¥h½sĶ, ³Ì«á¦A¥Î linker §â binary Â\¦b§A­nªº address

¦¹¤å³¹©ó 2021-03-23 11:34 AM ³Q rockindy ½s¿è.
ÂÂ 2021-03-23, 11:31 AM #5
¦^À³®É¤Þ¥Î¦¹¤å³¹
rockindyÂ÷½u¤¤  
anomaly
Advance Member
 

¥[¤J¤é´Á: Feb 2003
¤å³¹: 406
10001360 - 10001376 ¨º¬q¬Oªº­n§âcall fun()¤§«eªºª¬ºApush¨ìstack¤W­±, «Ýreturnªº®É­Ô´N¥i¥H³z¹Lpop«ì´_ª¬ºA

³o¦bC¬[ºc¬OÁפ£±¼ªº, ¥Îlinkerª½±µ¸õ¤@¯ë¤]¤£¦Eºâ¡Areturnªº®É­Ô¤@¯ë³£­n¤â°Ê±NCPU register¤â°Ê´_­ì, ¤£µMµ{¦¡·|¥X°ÝÃD¡C

¦pªG¤£¤¶·NcodeÅܤj, ¥i¥H¹Á¸Õ¤£­n¥Îfunction, ¦Ó¬O§â³o¨Çasm ¥Î #define ³B²z. compileªº®É­Ô·|¦bpre-processor¶¥¬q§â#define ªº内®eª½±µ´À´«¨ì­ì©l½X内, ¦Ó¥B¤£¥Î«áÄò¦A¤â°Ê´_­ìCPU register¡C

¤W­±¦³¤j¤j´£¨ì¥Îinline keyword, ¦ý³o¨Ã¨S¦³üL¨î©Ê, ­n¬Ýcompiler¦³¨S¦³Ä±±o¤ñ¸ûÀu¡C«Ü¦hcompiler¦pªG¨S¦³³]¦Ü¤Ö -O3, inline¥i¯àµL§@¥Î¡CÁa¨Ï³]¤F¤]¥i¯à¨S¦³§@¥Î

¦¹¤å³¹©ó 2021-03-23 01:25 PM ³Q anomaly ½s¿è.
ÂÂ 2021-03-23, 01:20 PM #6
¦^À³®É¤Þ¥Î¦¹¤å³¹
anomalyÂ÷½u¤¤  
©_¤ì©Ô
*°±Åv¤¤*
 
©_¤ì©Ôªº¤jÀY·Ó
 

¥[¤J¤é´Á: Sep 2020
¤å³¹: 7
¤Þ¥Î:
§@ªÌrockindy
¥u­n§A§â code ¥]¦b function ¸Ì, ½sĶ«á´N¤@©w·|¦³ function prologue

¦pªG§A­n¥Î jump address ªº¤è¦¡¸õ¹L¥h°õ¦æ
´N­n¥t¥~¼g .asm ÀÉ®×¥h½sĶ, ³Ì«á¦A¥Î linker §â binary Â\¦b§A­nªº address


¦³¨S¦³½d¨Ò?

§Ú¥u­n¦b ­ì©l½X¸Ì­±²K¥[ .asmªº¤å¥ó µM«á Link function ªº addr ´N¥i¥H¤F¶Ü?

¨º.asm ªº function «ç»ò¼g

¦¹¤å³¹©ó 2021-03-23 01:23 PM ³Q ©_¤ì©Ô ½s¿è.
ÂÂ 2021-03-23, 01:21 PM #7
¦^À³®É¤Þ¥Î¦¹¤å³¹
©_¤ì©ÔÂ÷½u¤¤  
anomaly
Advance Member
 

¥[¤J¤é´Á: Feb 2003
¤å³¹: 406
¤Þ¥Î:
§@ªÌanomaly
¦pªG¤£¤¶·NcodeÅܤj, ¥i¥H¹Á¸Õ¤£­n¥Îfunction, ¦Ó¬O§â³o¨Çasm ¥Î #define ³B²z. compileªº®É­Ô·|¦bpre-processor¶¥¬q§â#define ªº内®eª½±µ´À´«¨ì­ì©l½X内, ¦Ó¥B¤£¥Î«áÄò¦A¤â°Ê´_­ìCPU register¡C


Ãþ¦ü³o¼Ë

#define FUN \
{ \
__asm cmp ecx, 0x4000 \
__asm jnz NO_Trinity \
__asm push 0x1E \
__asm push offset STRS_TRINITY_Tutorial \
__asm lea ecx, [ebp-0x20] \
caddr = 0x004040E0; \
__asm call caddr \
}

©I¥sªº®É­Ô´N¥´¤@­ÓFUN
ÂÂ 2021-03-23, 01:39 PM #8
¦^À³®É¤Þ¥Î¦¹¤å³¹
anomalyÂ÷½u¤¤  
©_¤ì©Ô
*°±Åv¤¤*
 
©_¤ì©Ôªº¤jÀY·Ó
 

¥[¤J¤é´Á: Sep 2020
¤å³¹: 7
¤Þ¥Î:
§@ªÌanomaly
Ãþ¦ü³o¼Ë

#define FUN \
{ \
__asm cmp ecx, 0x4000 \
__asm jnz NO_Trinity \
__asm push 0x1E \
__asm push offset STRS_TRINITY_Tutorial \
__asm lea ecx, [ebp-0x20] \
caddr = 0x004040E0; \
__asm call caddr \
}

©I¥sªº®É­Ô´N¥´¤@­ÓFUN


³o¼Ë¼g ¦n¹³½s¤£°_¨Ó

§ÚHook¬O¼g³o¼Ëªº


¥N½X:
#define Trinity_Town \
{ \
__asm cmp ecx, 0x4000 \
__asm jnz NO_Trinity \
__asm push 0x1E \
__asm push offset STRS_TRINITY_Tutorial \
__asm lea ecx, [ebp-0x20] \
caddr = 0x004040E0; \
__asm call caddr \
.....


¥N½X:
void HookMain()
{
	DWORD Target_Address;
	DWORD Distance;
	int SIZE;

	// Trinity Town ----------------------------------------------------------------
	Target_Address = 0x006A7871;
	SIZE = 5;

	// ­pºâ¸õÂà¶ZÂ÷
	Distance = ((DWORD)Trinity_Town - (DWORD)Target_Address - SIZE);
	// ¼g¤J Patch
	*(reinterpret_cast<unsigned char*>(Target_Address)) = 0xE9;
	Target_Address += 1 ;
	*(reinterpret_cast<int*>(Target_Address)) = Distance;
	// ¤À°tŪ¼g«OÅ@
	VirtualProtect((LPVOID)Target_Address, SIZE, PAGE_EXECUTE_READWRITE, &oldProtect);


(DWORD)Trinity_Town Åܦ¨¦³°ÝÃD

¦¹¤å³¹©ó 2021-03-23 02:27 PM ³Q ©_¤ì©Ô ½s¿è.
ÂÂ 2021-03-23, 02:12 PM #9
¦^À³®É¤Þ¥Î¦¹¤å³¹
©_¤ì©ÔÂ÷½u¤¤  
rockindy
Major Member
 

¥[¤J¤é´Á: Nov 2001
¤å³¹: 170
msvc ¥[¤J asm ¥i°Ñ¦Ò³o­Ó
https://stackoverflow.com/questions...n-visual-studio

msvc ¦n¹³¤£¤ä´© link address, ©Ò¥H§A¥i¯à­n¥Î label ªº¤è¦¡ jump
ÂÂ 2021-03-23, 02:33 PM #10
¦^À³®É¤Þ¥Î¦¹¤å³¹
rockindyÂ÷½u¤¤  


    ¦^À³


POPIN
¥DÃD¤u¨ã

µoªí¤å³¹³W«h
±z¤£¥i¥Hµo°_·s¥DÃD
±z¤£¥i¥H¦^À³¥DÃD
±z¤£¥i¥H¤W¶Çªþ¥[ÀÉ®×
±z¤£¥i¥H½s¿è±zªº¤å³¹

vB ¥N½X¥´¶}
[IMG]¥N½X¥´¶}
HTML¥N½XÃö³¬



©Ò¦³ªº®É¶¡§¡¬°GMT +8¡C ²{¦bªº®É¶¡¬O09:59 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025¡C