어셈블리어를 c언어로 바꾸고 있는데 문제가 있습니다
*****첨부파일에 그림 있습니다*****
저 빨간색 친 부분에서
MOV BYTE PTR DS:[EDX+EAX],0 이 부분이 정말 이해가 안되며 어떻게 C언어로 코딩해야 할지
감이 안옵니다. 저부분이 실행되면
EDX의 데이터섹션에 들어있는 포인터주소값이 받은 문자열의 길이만큼 증가하고 그 주소에 해당하는
BYTE만큼의 데이터섹션에 0이 들어갑니다
요약하자면
동적할당된 포인터 변수 두개가 있습니다
한개의 포인터 변수의 값에 다른 한개의 포인터변수의 주소가 들어가 있고
저부분이 실행되고나면
포인터 변수의 값에 들어가있는 다른 포인터 변수의 주소가 입력받은 문자열의 길이만큼 증가하여
그 주소에 해당하는 데이터 섹션에 BYTE 만큼 0으로 덮어씌워집니다...
저부분을 C언어로 코딩하면 어떻게 될까요.??
그 윗부분의 코딩은 이러합니다.
#include
#include
void Func(char *lpCmdShow)
{
int *a = (int*)malloc(8);
int *b = a;
int n2;
for(n2 = 0;lpCmdShow[n2] != 0;n2++);
int *c = (int*)malloc(n2+1);
*b = (int)c;
}
int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdShow, int nCmd)
{
Func(lpCmdShow);
return 0;
}
첨부 | 파일 크기 |
---|---|
![]() | 95.31 KB |
IDA Hex-rays Plugin
IDA Pro Advanced Edition v6.1 Full Portable [x86-x64]
<--구글에 검색하면 토렌트 뜹니다.
Hex-rays Plugin 사용해보십시오 좋습니다.
댓글 달기