티스토리 뷰

위 책에서는 RtlNumberGenericTableElements 함수에 대해 나온다. 코드를 살펴보면 다음과 같다.
RtlNumberGenericTableElements:
7C923FD2    PUSH EBP
7C923FD3    MOV EBP,ESP
7C923FD5    MOV EAX,DWORD PTR [EBP+8]
7C923FD8    MOV EAX,DWORD PTR [EAX+14]
7C923FDB    POP EBP
7C923FDC    RET 4

//---------------------------------------------------------
// 다음과 같이 생각을 할 수 있다.
7C923FD2    PUSH EBP
7C923FD3    MOV EBP,ESP

7C923FD5    MOV EAX,DWORD PTR [EBP+8]
7C923FD8    MOV EAX,DWORD PTR [EAX+14]
/*
 unknownstructure1                 = arg.1
 return unknownstructure1.element-x

 'RtlNumberGenericTableElements' 의 이름에서 추측을 하면 Element 의 개수와 관련있는 것을 알 수 있으며,
 리턴 값이 저장되는 EAX 레지스터에 unknownstructure1.element-x를 저장하는 것을 알 수 있다.
 정리하면, EAX+14 는 Element의 개수, NumberOfElements 

 struct _unknownstruct1
 {
   int element1;
   struct _unknownstruct2
   {
     struct _unknownstruct2* element1;
     struct _unknownstruct2* element2;
   };
   struct _unknownstruct2* element3;
   int element4;
   int element5;         // 이곳이 ULONG NumberOfElements 가 된다.
   unknown element6;
   unknown element7;
   unknown element8;
   unknown element9;
 } unknownstruct;
*/

7C923FDB    POP EBP
7C923FDC    RET 4
//---------------------------------------------------------

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함