===================== Answer by Mongil
==================================
어셈에서 return 해주는 두 가지 방법이 있는데~
하나는 원래 인라인 어셈 문법 중에 c언어 변수를
전달하는 것이 있고 (http://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/app3.basic.html)
다른 하나는 꽁수를 이용하는 건데 C언어에서 함수가
리턴될 때 내부적으로 %eax 레지스터 값을 가져오거든
그래서 다음과 같이 가능하삼
int my_func()
{
asm("어쩌구저쩌구\n
mov %eax, 리턴값\n");
}
int main()
{
int ret = my_func();
printf("%d\n", ret);
}
잘 이해 안되면 다시 질문해주삼~
=====================================================================
어셈에서 return 해주는 두 가지 방법이 있는데~
하나는 원래 인라인 어셈 문법 중에 c언어 변수를
전달하는 것이 있고 (http://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/app3.basic.html)
다른 하나는 꽁수를 이용하는 건데 C언어에서 함수가
리턴될 때 내부적으로 %eax 레지스터 값을 가져오거든
그래서 다음과 같이 가능하삼
int my_func()
{
asm("어쩌구저쩌구\n
mov %eax, 리턴값\n");
}
int main()
{
int ret = my_func();
printf("%d\n", ret);
}
잘 이해 안되면 다시 질문해주삼~
=====================================================================
'System_Hacking' 카테고리의 다른 글
원격지 login 인자값 넘기기 (0) | 2012.03.21 |
---|---|
인드라 형님의 쉘코드 만들기 mkdir 과 execve 함수를 쉘코드 만들기 동영상 강좌 (0) | 2012.03.21 |
레지스터 이해와 어셈블리 더블 포인터의 이해 (0) | 2012.03.21 |
gdb 사용법 우분투에서 연습하기. (0) | 2012.03.21 |
%2f 가 없는 쉘코드 (shellcode without %2f code) (0) | 2012.03.21 |