http://polaris.aralgood.com/index.php?mid=Polaris_code_rec&page=3&document_srl=9250&rnd=1946596#comment_1946596


처음엔 잘따라 했는데 갑작이 팍 어려워지네요 컴 전공 해야 알아 들을수 있는건가 

좀 쉽게 여기 아래부분 좀 쉽게 풀이 해주실분 안계신가요?  초등학생이 원의 넓이 구하고 있는데 갑작이 공간도형 문제가 튀어 나오는 기분



 

00434AA2 코드에서 [ESI] AL(1바이트)을 비교하려고 하고 있군요.

 

ESI에는 우리가 방금 전 찾았던 텍스트 주소, 01B73723이 들어있습니다.

 

BYTE PTR DS:[ESI] 라고 하면 01B73723 번지의 1바이트 값을 뜻하므로여기서는 8E가 됩니다.

 

바로 윗줄에서 XOR EAX, EAX를 했으니 EAX 0이 됩니다.

 

간단하게 말하면 첫 번째 문자가 00인가 검사하려는 찰나였습니다.

 

데이터를 바이트 단위로 검사하고

 

첫 바이트가 00이면 함수 끝자락으로 점프한다

 

냄새가 납니다그렇죠냄새

 

그렇다면 ESI는 어디서 세팅되는 걸까요?

 

434A90을 이 함수의 시작점이라 볼 때

 

PUSH ECX

PUSH EBX

PUSH ESI

 

사실 요 세 녀석들 때문에 ESP 12만큼 감소되었습니다.

 

(스택 포인터는 자료를 넣을수록 그 값이 감소합니다.)

 

함수 시작점에서는 [ESP+4] 로 얻어올 수 있는 인자였지만저 세 번의 푸쉬로 인해 [ESP + 10] 위치가 되었습니다.