일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Compose
- Kotlin
- 앱바
- LifeCycle
- tabbar
- textfield
- 안드로이드
- TEST
- Dialog
- Flutter
- Navigation
- binding
- CustomScrollView
- 테스트
- viewmodel
- Button
- livedata
- drift
- activity
- Coroutines
- textview
- appbar
- scroll
- 계측
- 앱
- ScrollView
- intent
- data
- DART
- android
- Today
- Total
목록리버싱/기본 (8)
Study Record
7단계 : /bin/level7 ☞ /bin/level7 어셈블리어 분석 (gdb /bin/level7) 0x08048454 : push %ebp 0x08048455 : mov %esp,%ebp 0x08048457 : sub $0x8,%esp 0x0804845a : and $0xfffffff0,%esp 0x0804845d : mov $0x0,%eax 0x08048462 : sub %eax,%esp 0x08048464 : sub $0xc,%esp 0x08048467 : push $0x64 0x08048469 : call 0x8048344 0x0804846e : add $0x10,%esp ==> malloc(0x64) 0x08048471 : mov %eax,0xfffffffc(%ebp) # 0xfffffff..
readelf CMD - https://devanix.tistory.com/186 - ELF 파일의 정보를 확인할 때 사용한다. ☞ ELF 헤더 -h, --file-feader : ELF 파일 헤더 -l, --program-header, --semgents : 프로그램 헤더 -S, --section-headers, --sections : 섹션 헤더 -e, --headers : 위의 세가지 헤더 ☞ ELF 정보 출력 -s : 심볼 데이터 -r : 재배치 정보 -d : 동작 세그먼트 -V : 버전 섹션 -A : 아키텍쳐 의존 정보 -a : 모든 헤더 정보 ☞ 디버그 섹션 출력(DWARF2) -wl : line (.debug_line) -wi : info (.debug_info) -wa : abbrev (.d..
5단계 : /usr/bin/level5 ☞ /usr/bin/level5 어셈블리어 분석 (gdb /usr/bin/level5) 0x0804842c : push %ebp 0x0804842d : mov %esp,%ebp 0x0804842f : sub $0x8,%esp 0x08048432 : and $0xfffffff0,%esp 0x08048435 : mov $0x0,%eax 0x0804843a : sub %eax,%esp 0x0804843c : sub $0x8,%esp 0x0804843f : push $0x180 0x08048444 : push $0x8048580 # /tmp/level5.tmp 0x08048449 : call 0x804832c 0x0804844e : add $0x10,%esp ==> cre..
nc CMD - yum -y install nmap-ncat - client, server 모델이다. - 인위적인 TCP / UDP 연결이 가능하다. - 모의해킹 관점 : 백도어(EX: reverse_tcp, bind_tcp)로 사용된다. - 포렌식 관점 : 파일 전송(EX: OS Image 전송, 지정된 이미지 파일 전송) ☞ 옵션 -n : 호스트 네임과 포트를 숫자로만 입력받는다. -v : 더 많은 정보를 얻을수 있다. -o [filename]: 보내거나 받은 데이터를 헥스덤프하여 파일에 저장한다. -u : TCP connection 대신에 UDP connection 이 이루어 진다. -p [port number or name] : local-port 를 지정한다. 주로 -l 과 같이 사용하게 된다...
0x08048360 : push %ebp 0x08048361 : mov %esp,%ebp 0x08048363 : sub $0x8,%esp 0x08048366 : and $0xfffffff0,%esp 0x08048369 : mov $0x0,%eax 0x0804836e : sub %eax,%esp ------------------- mian 함수 시작 부분 -------------------- 0x08048370 : sub $0x8,%esp 0x08048373 : push $0xbbb # 인자값2 0x08048378 : push $0xbbb # 인자값1 0x0804837d : call 0x80482a0 0x08048382 : add $0x10,%esp ------------------- setreuid(0x..
→ AT&T 문법 : "명령어 [source] [dest]" → intel 문법 : "명령어 [dest] [source]" ※ 참고 사항 CF, ZF, SF, OF는 각각 1바이트로 전부 4바이트의 크기를 차지하는 레지스터이다. CF : Carry Flag : 연산시 Carry가 발생하면 1로 세팅된다. 오버플로우를 탐지하는데 쓰이기도 한다. ZF : 가장 최근에 계산된 명령어의 결과값이 0이면 1로 세팅된다. SF : 가장 최근에 계산된 명령어의 결과값이 음수면 1로 세팅된다. OF : 가장 최근에 계산된 명령어가 2's complement 오버플로우를 일으키면 1로 세팅된다. xor %eax, %eax 각 비트가 서로 다른 값일 때만 결과가 1이 되고 같은 값이라면 결과는 0이 된다.(mod 2) →..
gcc CMD gcc -o test1 test.c : 컴파일해서 파일이름을 test1 으로 한다. gcc -S test1.as test.c : 어셈블리어로 컴파일한다. gcc -g test.c : 바이너리 파일에 표준 디버깅 정보를 포함시킨다. # gdb a.out # gdb a.out PID # gdb a.out core gdb CMD ☞ gdb 종료 (gdb) (gdb) quit ☞ 소스 코드 확인(gcc -g 옵션을 포함하여 컴파일한 경우) (gdb) list (gdb) list 10 # 10번째줄 코드 출력 (gdb) set listsize=20 # 앞으로 소스 코드를 20줄씩 보여줌 ☞ disassemble (gdb) disassemble (gdb) disassemble main (gdb) di..
자주 사용되는 함수 ※ 참고 사이트 : http://forum.falinux.com/zbxe/index.php?document_srl=408400 int setreuid(uid_t ruid, uid_t euid) -> RUID / EUID 변경 int execl(const char* path, const char* arg); -> 현재 쉘에서 사용된다. int execv(const char* path, const char* arg[]) ☞ 공유 메모리(shmget , shmat, shmdt) https://laustudy.tistory.com/67 ☞ exit() #include void exit(int status); /* 커널에서 종료작업을 실행한다. status : 상태 코드 */ ☞ printf(..