본문 바로가기

스터디/파이썬 해킹 프로그래밍

2015-01-15 스터디

http://xenostudy.tistory.com/6

정리할 것


각자 질문 내용

최호수

1. 동적 라이브러리를 링크할 때, 외부에 제공하는 export 함수란?

--> http://xenostudy.tistory.com/6  (DLL 작동방식)

2. 스택 프레임에서 스택은 아래서 위로 쌓아 올린다. 와이?

--> 아래와 위에서 안쪽으로 쌓아 올려서 효율적인 메모리 활용이 가능하다.


정상민

1. 파이썬 해킹 28페이지에서

"하지만 함수 호출자가 스택을 정리하는 것이 아니라 호출된 함수가 리턴하기 바로 전에 스택을 정리한다."

가 무슨 뜻인지 이해를 못함.

--> 함수 호출 규약 (cdecl, stdcall) 자체가 다른 것. 스택을 호출자가 정리하느냐, 피호출자가 정리하느냐 차이.

--> 추후 좀 더 찾아볼 것

2. 유니언의 메모리 공유 방식이 이해가 안됨. + 유니언이란?

--> 원래 자료를 참조할 때는 한 가지의 형태를 가지지만, 여러 종류의 자료형을 한 메모리 공간에 담음 (자료형의 확장형)


김영후

1. 왜 stdcall과 cdecl을 굳이 나누어 놓았는지? 스택을 호출자에서 정리하는 것과 피호출자에서 정리하는 것이 성능차이가 있나?

--> cdecl 은 가변인자 지원. stdcall은 더 빠름. (조금 더 알아볼 것)

2. 어셈블리어에서 leave,ret


김진용

1. 패킷의 페이로드가 저장되는 부분에 메모리 브레이크 포인트를 걸고나서 핸들러에 전달되면, 이때 패킷의 활용 용도를 어떻게 아나?

--> 패킷의 페이로드가 저장된 메모리에 접근이 발생하면 그 전/후 의 어셈블리어를 보고 나서 활용 하는 코드를 보고 알 수 있다.


김현우

Q1. 책에서는 Win32 API가 stdcall을 사용한다고 말했는데, 어떤 곳에서는 윗 부분처럼 함수의 파라미터가 명확하게 정의되어 있어 함수 내부에서 파라미터를 pop하는 cdecl 방식을 주로 이용한다고 함. 진실은?

--> 좀 더 알아볼 것.

--> Win32 API 함수를 이용할 땐  stdcall, 기본  C 함수에서는 cdecl?

--> 좀 더 알아볼 것 22


Q2. 스택에서 꺼낼 때, 함수내에서 pop 하는 것과 호출자에서 pop 하는 것중 무엇이 다르며, 왜 함수 내에서 가변적인 파라미터를 스택에서 pop 할 수 없는가.

-->  호출한 함수에서는 가변 인자의 스택의 크기를 알지만 호출된 함수에서는 가변 인자의 스택의 크기를 알 수 없기 때문. 



Q3.  JTP 12345 -> 12,345 예제에서 소스코드 구조 질문

--> 이해함. head_num이 앞에 붙은 머리 숫자.


박상협
        1. 윈도우 API에서 callback의 사용되는 시점에서 주소를 보고 찾아가는 건지 아니면 핸들러를 통해 찾아가는건지?

--> 좀더 찾아보기


송상준

1. 브레이크 포인트에서 사용되는 INT3, INT1 의 차이?

--> 인터럽트(INT)의 구분을 통해 브레이크 포인트의 구분을 위함.

2. 루프 연산



--- 광준형 정리본 ---

각자 질문:

최호수:

1. 동적 라이브러리를 링크할 때, 외부에 제공하는 익스포트 함수란?

 - http://xenostudy.tistory.com/6

2. 스택 프레임에서 스택은 아래서 위로 쌓아 올린다. 왜? 

- 아래와 위에서 안쪽으로 쌍하올려서 효율적인 메모리 활용이 가능하다.


정상민:

1. 파이선 해킹 프로그래밍 28쪽에 ~~~~~

 - 호출 규약의 차이, 좀 더 찾아볼것ㅇㅇ

2. 유니온이란?


김영후:

1. sdtcall과 cdecl이 어떤 차이점이 있나?

 - http://egloos.zum.com/qufl1999/v/2338204

2. 어셈블리어에서 ret가 있는 pop eip, 

 - http://hisjournal.net/blog/351


낌진용:

1. 50페이지 ㅇㅇ

2. edx가 eax와 연산할 때 스이는 데 굳이 edx를 쓰는 이유?


김현우:

1. 윈도32api에서는 stdcall을 사용하는 데 cdecl은? 왜 굳이 win32api와 그냥 함수호출에만 쓰이는 이유?

 - cdecl: http://msdn.microsoft.com/ko-kr/library/zkwh89ks.aspx

 - stdcall: http://msdn.microsoft.com/ko-kr/library/zxk0tw93.aspx

2. 스택에서 가변적인 파라미터를 가지는 함수내에서 왜 스스로 팝을 못하는가?

 - 호출한 함수에서는 가변 인자의 크기를 알지만 호출된 함수에서는 인자의 크기를 모른다 왜 몰름?

3. j2p에서 222페이지에서서 알고리즘 설명.


박상협:

1. 윈도우api에서 callback이 사용되는 시점에서 주소를 보고 찾아가는 건지 아니면 핸들러를 통해 찾아가는 건지?


 송상준:

1. 소프트 브레이크포인트 INT3이고 하드 브포가 INT1인데 왜 다른건지?

2. 루프연산할 때 ECX를 사용하는 다른 레지스터 사용할 때도 있는 데 왜 그런지?


신영원:

1. 윈도우에서와 리눅스에서 실행의 차이?


최원주:

1. 50페이지 위에꺼 왜?

2. 윈도우API 함수 앞에 뭐가 붙는 데 뭔지?

 - 


노도원:

1. 소프트 브레이크 대신 메모리 브레이크를 쓰는 이유?








'스터디 > 파이썬 해킹 프로그래밍' 카테고리의 다른 글

DLL 기초개념  (0) 2015.01.14
스터디 질문 답변  (0) 2015.01.14
2015-01-12 질문 정리  (0) 2015.01.12
레지스터 / 브레이크 포인트  (0) 2015.01.11
환경 구축 및 동적 라이브러리  (0) 2015.01.11