949, 1/48 회원가입  로그인  
   SmileBedge
   GDB에서 Value 수정 관련 +@

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=339 [복사]


set명령어로 C코드상의 변수나 레지스터는 변경이 가능한데..
주소안의 값을 GDB로 바꿀 수 있는 지 알고 싶습니다...(예) 0x0804820de의 값을 변경할 수 있는지

그리고
CMP DWORD PTR [EAX] , 0 <-이상하게 그냥 EAX쓰면 될걸가지고 저런식으로 되있더라구요(나름 의문)
아무튼 그래서 EAX를 바꿔보았습니다만 저기서 SEIVE인가 그 세그폴트뜰때 뜨는 그 신호오더라구요 그래서
주소값 변경법이나 저 신호의 이유를 알고싶습니다..

  Hit : 3835     Date : 2011/08/07 10:41



    
chaser1963 첫번째는 잘모르겠는데 바꾸셔도 코드영역은 못바꾸고 임의로 그렇게 쉽게 바뀔지는 모르겠네요

두번째는 eax에 값이 아니라 eax의 주소가 가진 그 값의 값입니다-_- 머랄까 약간 포인터 개념이에요

예를들어

int *eax = (int *)malloc(sizeof(int));
*eax = 5;
여기서 5와 0을 비교하고싶은데

5는 *eax 즉 eax가 가리키는 주소공간의 값이지

그냥 eax가 아닙니다 걍 eax에는 5를 가진놈의 주소가있죠
2011/08/08