본문으로 바로가기

Dehydrating a string Technique

category Analysis/JS Obfuscation 2013.07.26 13:19

Dehydrating a string Technique

스페이스와 수평탭을 이용하여 보이지 않는 공격코드를 만드는 기법입니다.

이 부분에 대한 자세한 설명은 이미 다수의 블로거에 설명이 잘 나와있습니다. 그래서 저는 소스코드상 알고리즘을 풀어나가려고 합니다.



function rcu_push(s) {
    var r = new Array();
    var curr = 0;
    while(s.charAt(curr) != '\n') {
    // s의 문자가(charAt(curr)) \n이 아닐 때 까지 반복, rcu_push함수에 사용되는 값에는 '\n'이 포함되어 있어 종료 시점을 야기시킨다. charAt는 메서드는 문자열에서 문자를 추출하는데 사용하는 메소드 이다.
        var tmp = 0; // 연산되어 저장되는 tmp 변수를 초기화
        for(var i = 6; i >= 0; i--) { //6부터 역순으로 7번 반복, 이유는 ASCII가 7bit로 구성되기 때문이다.
            if(s.charAt(curr) == ' ') { //charAt(0)이 공백이면 다음을 연산하고 아니면 연산하지 않는다.
                tmp = tmp | (Math.pow(2, i));
                // tmp에 2^i 계산하여 tmp에 저장, 이것은 2진수 값을 7 자리수만 계산하여 10진수로 변환하는 과정이다. 공백(space)을 1로 계산하기 위해 만들어졌다. 
                // Math.pow() 지수승 계산에 사용하는 함수이다.
            }
            curr++;
        }
        r.push(String.fromCharCode(tmp));
        // push() 메소드는 배열 r에 축적하여 저장하는 역할을 한다. String.fromCharCode() 메소드는 tmp안의 ASCII 값을 문자로 치환하는 역할을 한다.
    }
    return r.join('');
    // join('') 메소드는 ''를 사용함으로써 배열로 저장된 문자를 출력할 때 문자 사이의 공간을 제거함으로써 하나로 이어진 문자열로 만들어 주는 역할을 한다. 디폴트로는 ,가 사용된다.
}
Function(rcu_push("                                                                                                                                                                                                                                                     (생략)\n"))();


저작자 표시 비영리 동일 조건 변경 허락
신고

'Analysis > JS Obfuscation' 카테고리의 다른 글

Base64를 이용한 JavaScript 난독화  (0) 2013.09.24
VBscript를 이용하여 역순코드로 만든 난독화 알고리즘  (0) 2013.08.30
Dehydrating a string Technique  (1) 2013.07.26
Unicode Obfuscated  (0) 2013.06.24
Hexdecimal Obfuscation #02  (0) 2013.06.19
Vbscript Obfuscated  (2) 2013.06.19

댓글을 달아 주세요

  1. 2014.10.02 03:47

    비밀댓글입니다

티스토리 툴바