12. 함수 호출 리턴값 확인 12. 함수 호출 리턴값 확인 본 포스팅의 내용은 해킹 맛보기 책의 내용중 3장 리버스 엔지니어링 P133~P281 까지 실습 내용을 따라하기 해보았습니다. 책의 내용중 일부 발췌 (수정) 하였습니다. 문제가 될 때는 비공개 하도록 하겠습니다. #include int sum(int a,int b, int c) { return a+b+c; } int main() { int s; s = sum(1, 2, 3); printf("%dn", s); return 0; } 3개의 인자를 입력 받아 모두 더한 결과값을 리턴하는 main 함수의 어셈블리어 [발췌-수정] 위의 어셈블리어는 main() 함수의 일부분이다. 013C1434 CALL 013C1104 명령어로 sum() 함수 호출 이후 013C1441 주소에서 .. 더보기 11. 콜린 컨벤션 __fastcall 함수의 어셈블리어 코드 11. 콜린 컨벤션 __fastcall 함수의 어셈블리어 코드 본 포스팅의 내용은 해킹 맛보기 책의 내용중 3장 리버스 엔지니어링 P133~P281 까지 실습 내용을 따라하기 해보았습니다. 책의 내용중 일부 발췌 (수정) 하였습니다. 문제가 될 때는 비공개 하도록 하겠습니다. [발췌] 구분 __cdecl __stdcall __fastcall 인자 전달 방법 스택 스택 레지스터, 스택 스택 해제 방법 호출한 함수 호출된 함수 호출된 함수 #include int __fastcall sum(int a, int b, int c) { return a+b+c; } int main() { int s; s =sum(1, 2, 3); printf("%d ", s); return 0; } [발췌-수정] __Fastcall.. 더보기 10. 콜린 컨베션 __stdcall 함수의 어셈블리어 코드 10. 콜린 컨베션 __stdcall 함수의 어셈블리어 코드 본 포스팅의 내용은 해킹 맛보기 책의 내용중 3장 리버스 엔지니어링 P133~P281 까지 실습 내용을 따라하기 해보았습니다. 책의 내용중 일부 발췌 (수정) 하였습니다. 문제가 될 때는 비공개 하도록 하겠습니다. [발췌] 구분 __cdecl __stdcall __fastcall 인자 전달 방법 스택 스택 레지스터, 스택 스택 해제 방법 호출한 함수 호출된 함수 호출된 함수 #include int __stdcall sum(int a, int b, int c) { return a+b+c; } int main() { int s; s =sum(1, 2, 3); printf("%d ", s); return 0; } [발췌-수정] 인자 입력은 __cde.. 더보기 9. 콜린 컨벤션 __cdecl 함수 어셈블리어 코드 9. 콜린 컨벤션 __cdecl 함수 어셈블리어 코드 본 포스팅의 내용은 해킹 맛보기 책의 내용중 3장 리버스 엔지니어링 P133~P281 까지 실습 내용을 따라하기 해보았습니다. 책의 내용중 일부 발췌 (수정) 하였습니다. 문제가 될 때는 비공개 하도록 하겠습니다. [발췌] 구분 __cdecl __stdcall __fastcall 인자 전달 방법 스택 스택 레지스터, 스택 스택 해제 방법 호출한 함수 호출된 함수 호출된 함수 #include int __cdecl sum(int a, int b, int c) { return a+b+c; } int main() { int s; s = sum(1, 2, 3); printf("%d ", s); return 0; } [발췌-수정] PUSH 명령어를 이용해 스택에.. 더보기 8. while문이 포함된 어셈블리어 코드 8. while문이 포함된 어셈블리어 코드 본 포스팅의 내용은 해킹 맛보기 책의 내용중 3장 리버스 엔지니어링 P133~P281 까지 실습 내용을 따라하기 해보았습니다. 책의 내용중 일부 발췌 (수정) 하였습니다. 문제가 될 때는 비공개 하도록 하겠습니다. #include int main() { int lv=0; while (true) { if (lv == 2) break; printf("%x ", lv); lv++; } return 0; } [발췌-수정] 013A13EE 주소에서 지역 변수인 Lv([EBP-8)에 먼저 0을 할당한다. 013A13FE 주소에서 CMP 명령어로 2와 먼저 비교해 , 013A13FC 주소의 JNZ(jump not zero) 명령어에 의해 [EBR-8]에 할당된 변수가 2가 .. 더보기 이전 1 ··· 6 7 8 9 10 11 12 다음