본문 바로가기
  • 개발 삽질 블로그

해킹 및 보안/리버싱7

[스무디] 어셈블리어 강의 29~32강 정리 29강~30강 반복문 jecxz, loop, rotateLoop 명령어: ecx가 0이 아닐 때 반복, ecx 값이 자동으로 1 감소Loop [주소](반복할 부분) LOOPE( LOOZ )-> zf=1이고 ecx가 0이 아닐 때 반복, 체크를 두 가지 해야할 때 사용  rotate 연산 ->  shift 연산의 연장-rotate에서는 밀려난 값을  최하위  혹은 최상위 비트에 넣음ex) 0111 -> 1110 - left: 최상위 비트가 최하위 비트로 들어감-right: 최하위 비트가 최상위 비트로 들어감ror       [r / m8]     [1 / imm8 / cl]rol *1이 오는 경우는 기계어로 2바이트이고 임시값이 오면 4바이트임*오버플로우 비트는 최상위 비트와 그 옆 비트가 다를 때 세팅됨.. 2022. 12. 1.
[스무디] 어셈블리어 강의 정리 (18~22강) 18강-JGE/JLE: JG/JL에 같은 경우도 포함JGE: S=O 면 점프JLE: S or Z=1 -JNGE = JL /JNLE = JG -JO: Overflow 비트가 1이면 -JS: Sign 비트가 1이면    19강P(parity): 페리티 플래그parity?동등성을 유지시키는 것비트에서 1의 동등성을 유지시킴 -odd parity: 1의 개수를 홀수로 유지시킴    ex) 1100       p:1(parity까지 홀수개)만약 비트가 오류가 나서 1000     ->1이 되면 1의 개수가 짝수가 되기 때문에 오류가 났다는 것을 알 수 있음*intel: 홀수 패리티 사용, 하위 8bit에 대해서만 체크cf) even parity: 짝수 페리티*crc32: 파일을 체크하고 오류를 복구하는 방법->p.. 2022. 11. 10.
[스무디]어셈블리어 강의 13~17강 정리 13. 메모리 지정 방식-offset 이용하는 방법ex) [eax+4]*offset: 변위차mov ebx, 402000mov byte ptr [ebx], 0mov byte ptr [ebx+2], 1 mov byte ptr [ebx+3], 2 mov byte ptr [ebx+4], 3 결과[402000]:  00 01 02 03 ...mov ecx, 0mov byte ptr [402000 + ecx], cl-> [402000] : 00 00 00 00inc ecxmov byte ptr [402000 + ecx], ecx-> [402000] : 00 01 00 00inc ecxmov byte ptr [402000 + ecx], ecx-> [402000] : 00 01 02 00-index 지정 방식mov e.. 2022. 10. 13.
[스무디] 어셈블리어 강의 8~12강 정리 8~9강 점프 JMPJMP: 실행의 흐름을 변경, 원하는 메모리 주소로 가야할 때ex) JMP [401005]*EIP: 다음에 실행할 주소를 담고있는 레지스터-현재 실행될 명령어의 크기를 계산하고 그 크기만큼 현재 실행될 코드의 주소값에 더해주어 다음에 실행될 코드 주소를 가르켜 줌-EIP는 범용 레지스터가 아니기 때문에 MOV 연산 사용 불가, JMP로 흐름을 변경해야함#해킹: EIP라는 레지스터에 들어가는 값을 해커가 원하는 값으로 바꾸면 됨!  10강 증감 명령어INC: 증가 연산, ++과 같은 역할INC [REG/MEM] DEC: 감소 연산, --와 같은 역할DEC [REG/MEM]11강 ADD, SUBADD: 덧셈 연산ADD op1, op2 -> op1에 op2를 더한다. SUB: 뺄셈 연산SU.. 2022. 10. 6.
[스무디] 어셈블리어 강의4~7강 정리 #4강 메모리📌RAM(Random Access Memory)-주기억장치에 사용, 휘발성 메모리-하드디스크에 비해 속도가 빠르기 때문에 주기억장치로 사용-저장 원리: 전류의 흐름에 따라 0과 1로 저장참고) 레지스터, 캐시, 램, 하드디스크용량: 하드디스크(T) > RAM(G) > 레지스터(Byte)속도 및 가격: 레지스터 > RAM > 하드디스크#5강 메모리 주소 접근-word(워드): 컴퓨터 설계 시 정해지는 메모리 기본 단위, 하나의 기계어 명령어나 연산을 통해 저장된 장치로부터 레지스터에 옮겨 놓을 수 있는 데이터 단위-메모리 각 주소에 바이트 단위로 데이터를 담도록 설계-32비트: 주소 값은 32bit(4Byte)로 설계,  2^32개의 주소 지정 가능→32bit 램 용량은 2^32*1바이트 =.. 2022. 10. 2.
[ 스무디 ] 어셈블리어 강의 1~ 3강 정리 # 1강📌어셈블리어: 기계어를 일정한 규칙에 따라 대응시킨 것-기계어 -> CPU에 따라 상이-어셈블리어-> 기계어를 1:1로 기호와 알파벳으로 변환한 것, *사람이 읽기 편함**컴퓨터 구조→ 기계어 → 어셈블리어, 따라서 어셈블리어도 각각 다름CPU마다 지원하는 오퍼레이션(연산)의 타입과 개수는 제각각, 레지스터의 크기나 개수도 다름📌 어셈블러: 어셈블리어를 기계어로 바꿔주는 프로그램, 어셈블리어를 기계어 형태의 오브젝트 코드로 해석-MASM, FASM, NASM, GAS 등이 있음-지시어가 어셈블러마다 다름!**ollydbg 사용**-ollydbg: 바이너리 코드 분석을 위한 x86 디버거, 리버스 엔지니어링에 종종 사용됨 #2강📌어셈블리어→ intel 문법 vs AT&T 문법- 차이점**접두사.. 2022. 10. 2.