리버싱

9일차, 시저암호화

컴공 2013. 4. 18. 12:46
반응형

2-7-------------

시저 암호화

알파벳의 패턴을 쉬프트하여 +3의 위치에 있는 것을 입력한다.
\\\\\\\ C코드\\\\\\\\\\\\\\\\\\\

#include "stdafx.h"

int APIENTRY WinMain(HINSTANCE hInstance,

                     HINSTANCE hPrevInstance,

                     LPSTR     lpCmdLine,

                     int       nCmdShow)

{

int len;

for( len = 0 ; lpCmd[len] ; len++ );

char * p = (char * ) malloc(len+1); // ( 강제 형 변환 )

len = 0;

while(lpCmd[len]){

if( lpCmd[len] >= 'A' && lpCmd[len] <= 'Z')

char ch = 'A';

else if(lpCmd[len] <= 'a' && lpCmd[len] <= 'z')

ch = 'a';

else if( lpCmd[len] == ' '){

p[len] = lpCmd[len]; // null값을 담는다.

len++;

continue;

}

else

return 0;

p[len]= (lpCmd[i] - ch + 3) % 0x1A + ch;
//기존 알파벳에서 RSHIFT 3을 진행한 뒤 26(알파벳수)으로 나눈 나머지에 문자 A를 최초도 더한다. A일 시 D가 됨.

len++;

}

return 0;

}

\\\\\\\\\\\\\\\\\\\\\\\\

# new, malloc : 동적할당의 경우 동적할당이 된(call) 부분에서 확인할 수 없고 최초로 쓰이는 부분에서 어떤 자료형으로 쓰였는지 확인할 수 있다.  malloc은 void자로형(형이 없는 것)이기에 형변환을 통해 데이터형식을 정해줘야한다.

# IDIV ECX : 나머지를 구하는 것으로 EAX에 입력된 수와 ECX를 나누기 한 후 나머지를 EDX에 저장하고 몫은 ECX에 저장한다.



새 텍스트 문서.txt


4-18.txt


반응형

'리버싱' 카테고리의 다른 글

11일차, caller, callee 복귀주소(RETN)  (0) 2013.04.22
10일차, 브레이크 포인트, Frame Pointer Omission  (0) 2013.04.20
8일차, malloc, strcmp  (0) 2013.04.17
7일차 리버싱의 오묘한맛  (0) 2013.04.16
6일차,  (0) 2013.04.15