# 시스템 해킹 공부중
-
가상함수(Virtual function)와 가상함수테이블(vtable)의 이해# 시스템 해킹 공부중 2019. 7. 17. 02:16
오버라이딩(Overriding) 가상함수를 이해하기 위해선 오버라이딩(Overriding) 에 대해서 알아야 한다. SourceCode(1) class Parent{ void show(){ printf("this is parent\n"); } } class Child : public Parent{ void show(){ printf("this is child\n"); } } class ChildChild : public Child{ void show(){ printf("this is childchild\n"); } } int main(){ Parent * p = new Parent; Child * c = new Child; ChildChild * cc = newChildChild; p->show(); c..
-
[MIPS] strcmp# 시스템 해킹 공부중 2018. 4. 4. 16:07
[MIPS strcmp] 동작 분석 [그림0] strcmp 코드 [그림1] 변수 공간 할당 및 $ra, $fp 백업후 frame pointer 갱신 [그림2] 스택에 str1, str2, str3 순서대로 저장 [그림3] $v0 값 스택에 백업 후 $a0, $a1 에 인자값 load 후 strcmp 호출 [그림4] if(!strcmp(str1, str2)) => bnez $v0, loc_40092C bnez는 $v0 값이 0이 아니면 두번째 오퍼랜드로 분기 즉 $a0과 $a1 문자열이 같으면 분기 x 문자열이 다르면 분기 o
-
Ubuntu MIPS ARM 크로스 컴파일 환경 구성# 시스템 해킹 공부중 2018. 3. 28. 15:33
[GCC 크로스 컴파일러 및 라이브러리 설치] sudo apt-get install -y gcc-multilib-arm-linux-gnueabi;sudo apt-get install -y gcc-multilib-arm-linux-gnueabihf;sudo apt-get install -y gcc-multilib-mips-linux-gnu;sudo apt-get install -y gcc-multilib-mips64-linux-gnuabi64;sudo apt-get install -y gcc-multilib-mips64el-linux-gnuabi64;sudo apt-get install -y gcc-multilib-mipsel-linux-gnu;sudo apt-get install -y gcc-multil..
-
[MIPS] MIPS 기본 내용 정리# 시스템 해킹 공부중 2018. 3. 28. 00:48
[MIPS Register]$0 = Always 0$at = The Assembler Temporary used by the assembler in expanding pseudo-ops.$v0, $v1 = 리턴값 저장. 1 word 인 경우 $v0 만 사용. 초과할 경우 $v1 과 나눠서 저장$a0-$a3 = 함수 인자값 저장. 초과할 경우 스택에 저장$t0-$t9 = 임시 저장 레지스터$s0 - $s7 = 저장 용 레지스터 – 함수 호출 중 불변$k0, $k1 = 커널에서 사용하는 레지스터$gp = 전역 포인터 레지스터$sp = 스택 포인터$fp = 함수 프레임 포인터 ($s8)$ra = 서브루틴 호출 시 반환 주소 저장 [MIPS 주요 명령어]addiu [addiu A B C] = [A B]lw [l..