본문 바로가기

Reversing/Reversing15

어셈블리어의 주소 지정 방식 1) 레지스터 주소 지정 MOV DX, BX 2) 직접 메모리 주소 지정 MOV AL, DS:[8088h] MOV DS:[1234h], DL 3) 레지스터 간접 주소 지정 MOV AL, [BX] MOV AL, [BP] 4) 인덱스 주소 지정 MOV AL, [BX+20h] MOV AL, [BP+20h] 5) 베이스 인덱스 주소 지정 MOV AL, [BX+SI] MOV AL, [BX][SI] MOV AL, [BP+SI] 6) 변위를 갖는 베이스 인덱스 주소 지정 MOV AL, [BX+SI+20h] MOV AL, [BP+SI+20h] Ref - 정보 보안 개론과 실습(시스템 해킹과 보안) 2012. 9. 10.
C코드->어셈코드 분석 [if, for, while] 어셈코드에 익숙해지기 위해서 c언어에서 if, for, while을 컴파일한 후 ollydbg로 어셈코드 형태를 알아보겠습니다. 1. if문 위와 같은 형태를 볼 수 있습니다. 즉 if문은 (조건 분기) - 연산 수행 - (무조건 분기) - 연산 수행 의 형태를 가집니다. [else 없이 if하나만 사용한다면 (조건 분기) - 연산 수행이 되겠죠] 2. for문 어셈 코드를 보기 전에 for문의 동작을 먼저 생각해보면, 1. i=0 - 비교(i 2012. 7. 28.
upx 언패킹하기 - MUP(Manual UnPacking) upx로 패킹된 프로그램을 MUP로 upacking하는 방법을 알아보겠습니다. 예제 프로그램은 CodeEngn Basic 6번 문제로 하겠습니다. 파일 : 실행 화면은 아래와 같습니다. peid와 stud_pe로 패킹되어 있는지 확인해보면 UPX로 패킹된 것을 볼 수 있습니다. - peid - - stud pe- 위와 같은 툴 없이도 올리디버거로 확인해 볼 수 있습니다. 올리디버거를 열면 "Compressed code?"라는 메시지를 띄어줍니다. 이걸로 패킹에 대한 의심을 해볼 수 있습니다. ..... 그리고 코드 부분을 보면 위쪽에 pushad, 아래쪽에 popad와 jmp를 볼 수 있습니다. pushad가 있다면 패킹된 것으로 보면 됩니다. 패킹되어있더라도 프로그램을 실행하면 정상동작하기 위해 패킹을.. 2012. 7. 12.