리버싱

7일차 리버싱의 오묘한맛

컴공 2013. 4. 16. 18:43
반응형

## LEA의 주소값 연산


LEA의 오른쪽 대괄호 안은 일반적으로 주소자리로 인식되나 실제로는 안에 연산해서 이루어진 값이 ECX로 전해진다.

## 연산에서 1가지 인자 처리 방법
ADD ECX는 EAX값에 저장된 값과 더하여 그 결과값을 저장한다.

## 연산에서 2가지 인자 처리 방법
SUB EAX, ECX 에서  EAX= EAX-ECX로 결과값을 저장한다.

##  연산에서 3가지 인자 처리방법.
IMUL ECX, ECX, 0A의 경우 2,3번째 값을 연산한 값을 ECX에 저장한다.


3-5 len 함수를 대신하는 문자열 확인 for문
for문은 밖에서 초기값을 지정해주고 검은색 화살표가 그려져있는 부분으로 들어와서 조건을 만든 후, 안에 있는 내용을 JMP가 나타나기 전까지 실행한다. 그리고 JMP가 맨 위로 올리면 ++을 하기 위해서 mov, add, mov를 한다.
if(int i= 0; lpCmd[i];i++)




3-6 new 동적 할당.

void  AA;

{
    MessageBoxA(0, "Analysis this", ittank, 0);
    for(i = 0; lpCmd(AA + i) != 0; i ++) {    }
    name = new char[i + 1];
    for(i = 0; lpCmd(AA + i) != 0; i ++) {
        *(BB + i) = lpCmd(AA + i);   
    }
    *(BB + i) = 0; 
    return 0;
}



3-7 답 = lpCmd[] 부분에 대문자 두개, 나머지 소문자로 넣으면 된다.

CHAR * A10;

{

    MessageBoxA(0, "Insert Argument", ittank, 0);

    for(K = 0; *(A10 + K) != 0; K = K + 1) {

    }

    J = K + 1;

    for(K = 0; 1; K = K + 1) {

        if(*(A10 + K) == 0) {

            goto A;

        }

        if(*(A10 + K) < 0x41 || *(A10 + K) > 0x5a) {

            if(*(A10 + K) < 0x61 || *(A10 + K) > 0x7a) {

                if(*(A10 + K) != 0x20) {

                    break;

                }

                *(J + K) = *(A10 + K);

                K = K + 1;

                continue;

            }

            i = 0x61;

        } else {

            i = 0x41;

        }

        eax = *(A10 + K) - i + 3;

        asm("cdq");

        ecx = 0x1a;

        edx = 0x1a / 0x1a % 0x1a / 0x1a + i;

        *(J + K) = dl;

    }

    MessageBoxA(0, "Insert An Alphabet", "ITBANK", 0);

    eax = 0;

    goto B;

A:

    *(J + K) = 0;

    if(strcmp(J, "LWedqn") == 0) {

        MessageBoxA(0, A10, "ITBANK", 0);

    }

    eax = 0;

B:

}




3-8




http://www.backerstreet.com/rec/recdload.htm  //REC 디코더

 strSrc.compare("Test strinG...")  vs _stricmp( strSrc.c_str(), "Test strinG...")

 

반응형

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

9일차, 시저암호화  (0) 2013.04.18
8일차, malloc, strcmp  (0) 2013.04.17
6일차,  (0) 2013.04.15
5일차, 점프, Argument(arguv, arguv)  (0) 2013.04.13
4일차 역공학, 어셈 & register & stack & dumpwindow에서 내용수정  (0) 2013.04.11