난독화
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
난독화는 코드의 가독성을 의도적으로 낮추어, 코드의 분석 및 리버스 엔지니어링을 어렵게 만드는 기술이다. 치환 암호와 유사하게 코드의 복잡성을 증가시키고, 관련 없는 함수들을 섞거나 데이터를 인코딩하는 방식으로 이루어진다. 난독화 기법에는 변수 이름 변경, 코드와 데이터 혼합, 이중 코딩 등이 있으며, 소스 코드 난독화뿐만 아니라 머신 러닝 모델의 내부 구조를 숨기는 모델 난독화 기술도 존재한다. 난독화는 코드 보호, 파일 크기 감소 등의 장점이 있지만, 디버깅을 어렵게 하고 성능 저하를 유발하며, 리플렉션 API 사용 시 문제를 야기할 수 있다는 단점이 있다. 또한, 난독화된 코드는 백신 소프트웨어에 의해 악성 코드로 오인될 수 있으며, 브라우저 확장 프로그램 스토어 등록이 제한될 수 있다.
더 읽어볼만한 페이지
- 난독화 - 갸루 문자
갸루 문자는 2002년경 일본 여중고생 사이에서 유행한 문자 표현 방식으로, 여러 문자를 변형하여 메시지 위장이나 감정 표현에 사용되며, 기성세대에게는 반항적인 언어로 여겨지기도 했다. - 난독화 - 리트 (인터넷)
리트는 인터넷 커뮤니티에서 알파벳 문자를 숫자나 기호로 변환하여 은어나 속어처럼 사용하는 방식이며, 내용 이해를 어렵게 하거나 검열을 피하기 위해 사용된다. - 안티패턴 - 기술 부채
기술 부채는 소프트웨어 개발에서 발생하는 개념으로, 현재의 편의적인 설계가 미래에 추가적인 비용을 발생시키는 것을 의미하며, 다양한 원인으로 발생하여 개발 비용 증가, 프로젝트 지연, 경쟁력 약화 등의 부정적인 결과를 초래할 수 있다. - 안티패턴 - 도덕적 해이
도덕적 해이는 원래 보험 가입자의 부도덕한 행위를 지칭하는 용어에서 시작하여, 현재는 정보 비대칭으로 인해 한 당사자의 행동이 다른 당사자에게 해를 끼치는 상황을 의미하며, 금융 위기 등 다양한 분야에서 경제 주체들의 위험한 행동을 유발하는 요인으로 작용한다.
난독화 | |
---|---|
개요 | |
유형 | 소프트웨어 기술 |
목적 | 소스 코드 또는 실행 파일의 이해를 어렵게 하여 무단 분석, 리버스 엔지니어링 또는 변조를 방지 |
관련 기술 | 워터마킹 (Watermarking) 암호화 (Encryption) |
상세 정보 | |
정의 | 소프트웨어 난독화는 소프트웨어의 기능을 숨기거나 모호하게 하여 사람이 이해하기 어렵게 만드는 프로세스이다. |
응용 | 저작권 보호 지적 재산 보호 악성 코드 탐지 회피 |
난독화 방법 | 이름 바꾸기 (Identifier renaming) 불필요한 코드 삽입 (Dead code insertion) 제어 흐름 변경 (Control flow obfuscation) 데이터 인코딩 (Data encoding) 문자열 암호화 (String encryption) |
난독화 도구 | ProGuard DexGuard Allatori yGuard |
난독화의 한계 | 완벽한 보안을 제공하지 않으며, 숙련된 공격자에 의해 분석될 수 있다. |
난독화 수준 | 낮은 수준: 코드 가독성을 약간 저하시키는 수준 높은 수준: 코드 구조를 완전히 변경하여 분석을 매우 어렵게 만드는 수준 |
난독화와 보안 | 난독화는 보안의 한 부분일 뿐이며, 다른 보안 기술과 함께 사용해야 효과적이다. |
합법성 | 난독화 자체는 합법적인 기술이지만, 악의적인 목적으로 사용될 수 있다. |
2. 난독화의 원리 및 기법
코드 난독화는 프로그램 코드의 일부 또는 전체를 변경하여 가독성을 낮춰 역공학에 대한 대비책을 제공한다.[51] 난독화는 적용 범위에 따라 소스 코드 난독화와 바이너리 난독화로 나눌 수 있으며, 기술의 무단 복제 방지와 불법 침입 프로그램 방지를 목적으로 한다.[52]
난독화는 다음과 같은 다양한 기법들을 통해 이루어진다.
- 필요 이상으로 복잡하거나 아무것도 하지 않는 코드를 작성한다.
- 관련이 없는 여러 함수들을 뒤섞는다.
- 데이터를 알아보기 힘들게 인코딩한다.
- for 문을 while 문으로 바꾼다.
- 순환문을 재귀 함수로 바꾼다.
- if-else 문을 ?: 조건 연산자로 바꾼다.
- 변수 이름을 무작위로 짓는다. (예: `int rabbitNum = 0`을 `int m = 0`으로 변경)
- 내부 변수를 다른 것으로 치환한다.
- 함수 이름과 변수 이름을 바꾼다. (예: 변수 이름을 `_`, `__`, `___`으로, 함수 이름을 `____`으로 변경)
- 리터럴을 함수 인자로 넘겨주는 방법을 사용하거나, 1을 `a/a`와 같이 다른 변수로 치환한다.
C,[30] C++,[5] Perl[33]과 같은 언어는 구조와 특성 때문에 난독화가 더 용이하다.[28][29]
닉 몬트포트(Nick Montfort)에 따르면, 난독화 기법은 다음과 같다.[9]
1. 이름 난독화: 변수를 무의미하거나 기만적인 방식으로 명명한다.
2. 데이터/코드/주석 혼란: 실제 코드를 주석처럼 보이게 하거나, 데이터를 사용하여 구문을 혼란스럽게 만든다.
3. 이중 코딩: 코드를 시의 형태로 또는 흥미로운 형태로 표시한다.
난독화된 소스 코드를 작성하고 읽는 것은 수수께끼가 될 수 있다. 국제 난독화 C 코드 경연 대회 및 난독화된 펄 경연 대회와 같이 가장 창의적으로 난독화된 코드를 포상하는 여러 프로그래밍 경연 대회가 있다.
짧은 난독화된 Perl 프로그램은 펄 프로그래머의 서명 블록에 사용될 수 있다. 이것들은 JAPHs("또 다른 펄 해커")이다.[34]
2. 1. 기본 원리
코드 난독화는 프로그램 코드의 일부 또는 전체를 변경하여 가독성을 낮추는 방법으로, 역공학에 대한 대비책을 제공한다.[51] 난독화는 소스 코드 난독화와 바이너리 난독화로 나눌 수 있으며, 기술의 무단 복제 방지와 불법 침입 프로그램 방지를 목적으로 한다.[52]난독화의 기본 원리는 다음과 같다.
- 필요 이상으로 복잡하거나 아무것도 하지 않는 코드를 작성한다.
- 관련 없는 여러 함수들을 뒤섞는다.
- 데이터를 알아보기 힘들게 인코딩한다.
C,[4] C++,[5][6] 펄[7] 과 같은 일부 프로그래밍 언어는 구조와 특성 때문에 다른 언어보다 난독화가 더 쉽다.[2][3] 하스켈도 구조가 다름에도 불구하고 난독화가 가능하다.[8]
2. 2. 난독화 기법
난독화 기법에는 다음과 같은 방법들이 있다.- 필요 이상으로 복잡하거나 아무 일도 하지 않는 코드를 추가한다.
- 관련 없는 함수들을 섞는다.
- 데이터를 알아보기 어렵게 인코딩한다.
- for 문을 while 문으로 바꾸고, 순환문을 재귀 함수로 바꾼다.
- if-else 문을 ?: 조건 연산자로 바꾼다.
- 변수 이름을 무작위로 짓는다. (예: `int rabbitNum = 0`을 `int m = 0`으로 변경)
- 내부 변수를 다른 것으로 치환한다.
- 함수 이름과 변수 이름을 바꾼다. (예: 변수 이름을 `_`, `__`, `___`으로, 함수 이름을 `____`으로 변경)
- 리터럴을 함수 인자로 넘겨주는 방법을 사용하거나, 1을 `a/a`와 같이 다른 변수로 치환한다.
액션스크립트 3로 작성된 소수 판별 함수를 난독화하는 예시는 다음과 같다.
원래 코드:```actionscript
function isPrime(n:int):Boolean{
var r:int = 0;
while(r*r<=n)r++;
r--;//r은 [n의 제곱근]임.
if(n==r) return false;//n이 0 또는 1
if(n<4) return true;
if(n%2==0 || n%3==0 || n%r==0){
return false;
}
for(var i:int = 6;i
if(n%(i-1)==0) return n==i-1;
if(n%(i+1)==0) return n==i+1;
}
return true;
}
```
난독화된 코드 (최종):```actionscript
function ____(_:int,__:int=0,___:int=6):Boolean{return(__+___/___)*(__+___/___)<=_?____(_,__+___/___,___):_==__?_-_:
_<___-(__+_+__-_)/__?_/_:_%(__/__+_/_)==_-_||_%(__*___/(__+__))==__-__||_%__==___-___?___/___-_/_:___<__?
_%(___-_/_)==__/__-___/___?_==___-__/__:_%(___+___/___)==__+_-__-_?_==___+___/___:
____(_,__,___+(__*___*(_+_+_)+__*_*___+(__+__)*___*_)/_/__/___):_}
```
위 코드는 변수명 변경, 재귀 함수 사용, 조건 연산자 사용, 리터럴 치환 등 다양한 난독화 기법을 적용하여 원래 코드를 알아보기 어렵게 만들었다.
C,[4] C++,[5][6] Perl[7], 하스켈[8]과 같은 언어는 구조와 특성으로 인해 난독화가 더 쉽다.[2][3]
닉 몬트포트(Nick Montfort)는 난독화 기법을 다음과 같이 분류했다.[9]
1. 이름 난독화: 변수 이름을 무의미하거나 혼란스럽게 짓는다.
2. 데이터/코드/주석 혼란: 코드를 주석처럼 보이게 하거나, 데이터를 사용하여 구문을 혼란스럽게 한다.
3. 이중 코딩: 코드를 시의 형태로 또는 흥미로운 형태로 표현한다.
난독화된 코드를 작성하고 읽는 것은 수수께끼와 같으며, 국제 난독화 C 코드 경연 대회나 난독화된 펄 경연 대회와 같은 프로그래밍 경연 대회가 열리기도 한다. 짧은 난독화된 Perl 프로그램은 펄 프로그래머의 서명 블록에 사용될 수 있으며, 이를 JAPHs("또 다른 펄 해커")라고 한다.[16]
2. 3. 난독화 도구
프로그래머의 코딩, 전용 애플리케이션, 또는 개발 도구의 보조 기능을 통해 소스 코드나 실행 코드의 로직, 데이터를 의도적으로 난독화하고 모호하게 만들 수 있다. 이러한 난독화 코드를 생성하거나 지원하는 소프트웨어를 ''obfuscators''라고 부르며, 연구용, 상용, 오픈 소스 등 다양한 형태로 존재한다.상용 난독화 솔루션은 주로 소스 코드 난독화[47][48]나 Java[49], .NET[50]과 같은 플랫폼 독립적인 바이트 코드 변환을 사용하지만, 컴파일된 바이너리에 직접 작용하는 경우도 있다.
디컴파일러는 실행 파일이나 라이브러리에서 소스 코드를 역으로 추출하는 도구이다. 이 과정을 man-in-the-end (mite) 공격이라고 부르기도 한다. 하지만, 디컴파일된 소스 코드는 읽기 어려운 경우가 많은데, 무작위 함수 및 변수 이름, 잘못된 변수 유형, 컴파일러 최적화 등으로 인해 원래 소스 코드와 다른 로직을 포함할 수 있기 때문이다.
리플렉션을 지원하는 언어나 처리 시스템은 컴파일 시 심볼 정보를 메타데이터로 저장하여 역 컴파일을 통해 원래 소스 코드를 복원하기 쉽다. 따라서 독점 소프트웨어와 같은 상용 소프트웨어에서는 리버스 엔지니어링을 방지하기 위해 난독화를 많이 사용한다. 일반적으로 프로그래밍할 때 서브루틴이나 변수와 같은 코드의 심볼에는 사람이 이해하기 쉬운 이름을 붙이지만, 이러한 이름은 분석을 쉽게 만들기 때문에 난독화 도구를 통해 의미 없는 이름으로 바꾸는 것만으로도 효과를 볼 수 있다.
난독화를 해제하는 도구도 존재한다.
3. 난독화의 장단점
코드 난독화는 프로그램의 소스 코드나 실행 코드의 로직, 데이터를 의도적으로 알아보기 어렵게 만드는 기술이다. 이는 주로 다음 두 가지 목적을 위해 사용된다.
# 코드의 목적을 숨기거나(난해함에 기반한 보안 참조) 변조나 리버스 엔지니어링을 막는다.
# 코드를 해독하는 사람들의 실력을 시험하기 위한 퍼즐이나 오락으로 활용한다.
코드 난독화는 전자 회로의 배치와 구조를 변경하여 기능을 숨기는 하드웨어 모호화와는 다르다.
C 언어, C++, Perl과 같이 구조와 특성 때문에 난독화가 더 용이한 프로그래밍 언어들이 있다.[28][29][30][33]
일반적으로 소스 코드가 필요한 스크립트 언어는 분석이 쉽지만, 컴파일러를 통해 기계어를 생성하는 언어는 분석이 어렵다. 기계어는 단순한 수치 나열이며, 역어셈블은 쉽지만, 원래 소스 코드를 완벽하게 복원하는 것은 불가능하므로 코드의 의도 파악은 어렵다.
리플렉션을 지원하는 언어나 처리 시스템은 컴파일 시 심볼 정보를 메타데이터로 저장하여 역컴파일이 쉽다. 따라서 독점 소프트웨어와 같은 상용 소프트웨어는 리버스 엔지니어링을 막기 위해 난독화를 사용한다. 심볼 이름을 난독화 도구로 의미 없는 것으로 바꾸는 것만으로도 효과를 볼 수 있다.
하지만 난독화는 시간 벌이일 뿐, 리버스 엔지니어링을 완전히 막을 수는 없다.[44] 구현에 따라 성능 저하가 발생할 수 있으며, 의존성 주입 등 참조 대상 이름을 문자열로 제공하는 리플렉션 API를 사용하면 난독화로 인해 작동하지 않을 수 있어 난독화 가능 부분이 제한된다.[45]
또한, 난독화는 제3자의 안전성 및 정당성 검증을 방해하므로, 웹 브라우저 확장 기능과 같은 플랫폼에서는 보안상 금지되는 추세이다.[46]
3. 1. 장점
코드 난독화는 프로그램 코드의 일부 또는 전체를 변경하여 코드의 가독성을 낮춰 역공학을 어렵게 만드는 기술이다.[51] 난독화는 기술의 무단 복제와 불법 침입을 방지하는 데 사용된다.[52]난독화된 소스 코드의 작성과 해독은 두뇌 훈련(브레인 티저)이 된다. 국제 난독화 C 코드 콘테스트와 같은 콘테스트도 있으며, 창의성 등을 평가하여 시상한다. 이러한 콘테스트는 프로그램 작동의 의외성(겉보기와 전혀 다른 작동 등)도 평가 요소에 포함되는 경우가 많으며, 단순히 어려운 것만으로는 좋은 평가를 받기 어렵다.
난독화 패턴에는 키워드 치환, 공백을 활용한 예술적 표현, 자기 생성, 데이터 고압축 등 다양한 종류가 있다.
일부 Perl 프로그래머는 Signature block|시그니처 블록영어에 짧게 난독화된 Perl 프로그램을 포함하기도 한다. 이러한 서명에는 Just another Perl hacker|JAPHs영어 등이 있다.[34]
3. 2. 단점
- 난독화는 프로그램을 읽고, 쓰고, 리버스 엔지니어링하는 것을 어렵고 시간이 오래 걸리게 만들 수 있지만, 반드시 불가능하게 만드는 것은 아니다.[19]
- 개발자는 빌드 과정에 시간과 복잡성이 더해진다.
- 소프트웨어가 난독화된 후에는 문제 디버깅이 매우 어려워질 수 있다.
- 코드 유지가 더 이상 이루어지지 않을 때, 취미로 프로그래밍을 하는 사람들은 프로그램을 유지보수하거나, 모드를 추가하거나, 더 잘 이해하고 싶어할 수 있다. 난독화는 최종 사용자가 코드에서 유용한 작업을 수행하는 것을 어렵게 만든다.
- 특정 종류의 난독화(예: 로컬 바이너리가 아니고 필요에 따라 웹 서버에서 미니 바이너리를 다운로드하는 코드)는 성능을 저하시키거나 인터넷 연결을 필요로 할 수 있다.
- 일부 백신 소프트웨어는 수동으로 난독화된 코드가 있는 웹사이트에 접속할 때 사용자에게 경고를 표시하기도 하는데, 이는 난독화의 목적 중 하나가 악성 코드를 숨기는 것일 수 있기 때문이다. 하지만 일부 개발자는 파일 크기를 줄이거나 보안을 강화하기 위해 코드 난독화를 사용할 수 있다. 일반 사용자는 신뢰할 수 있는 기업의 경우를 포함하여, 일반적으로 무해한 코드에 대해 백신 소프트웨어가 경고를 제공할 것이라고 예상하지 않을 수 있으므로, 이러한 기능은 사용자가 합법적인 소프트웨어를 사용하는 것을 방해할 수 있다.
- 모질라와 구글은 난독화된 코드를 포함하는 브라우저 확장 프로그램의 자사 부가 기능 스토어 등록을 허용하지 않는다.[21][22]
- 난독화는 시간을 벌 뿐, 프로그램의 리버스 엔지니어링을 불가능하게 하는 것은 아니다.[44]
- 난독화는 필연적으로 제3자에 의한 안전성 및 정당성 검증을 저해하므로, 웹 브라우저의 확장 기능과 같은 플랫폼에서는 보안상의 관점에서 금지되는 추세이다.[46]
4. 난독화와 관련된 논쟁
일부 백신 소프트웨어는 수동으로 난독화된 코드가 있는 웹사이트에 접속할 때 사용자에게 경고를 표시하기도 하는데, 이는 난독화의 목적 중 하나가 악성 코드를 숨기는 것일 수 있기 때문이다.[20] 하지만 일부 개발자는 파일 크기를 줄이거나 보안을 강화하기 위해 코드 난독화를 사용할 수 있다. 일반 사용자는 신뢰할 수 있는 기업의 경우를 포함하여, 일반적으로 무해한 코드에 대해 백신 소프트웨어가 경고를 제공할 것이라고 예상하지 않을 수 있으므로, 이러한 기능은 실제로 사용자가 합법적인 소프트웨어를 사용하는 것을 방해할 수 있다.
모질라와 구글은 난독화된 코드를 포함하는 브라우저 확장 프로그램의 자사 부가 기능 스토어 등록을 허용하지 않는다.[21][22]
난독화된 형태로 소스 코드를 공개하여 카피레프트 소프트웨어 라이선스를 회피하는 것이 불법인지에 대한 논쟁이 있어왔다. 저작자가 소스 코드를 공개하는 것을 덜 꺼리는 경우가 이에 해당한다. 이 문제는 "수정에 선호되는 형태"를 제공하도록 요구하는 GNU 일반 공중 사용 허가서에서 다루어진다.[23] GNU 웹사이트는 "난독화된 '소스 코드'는 실제 소스 코드가 아니며 소스 코드로 간주되지 않는다."라고 명시하고 있다.[24]
결국 난독화는 시간 벌이에 불과하며, 프로그램의 리버스 엔지니어링을 불가능하게 하는 것은 아니다.[44] 구현에 따라 성능 저하를 일으킬 뿐만 아니라, 의존성 주입 등의 목적으로 참조 대상의 이름을 문자열로 제공하는 리플렉션 API를 사용하는 경우, 원리적으로 난독화로 인해 작동하지 않게 되므로 난독화가 가능한 부분이 제한된다.[45]
또한, 난독화는 필연적으로 제3자에 의한 안전성 및 정당성의 검증을 저해하므로, 웹 브라우저의 확장 기능과 같은 플랫폼에서는 보안상의 관점에서 금지되는 추세이다.[46]
5. 난독화의 활용 분야
코드 난독화는 프로그램 코드의 가독성을 낮춰 역공학(리버스 엔지니어링)을 어렵게 만드는 기술이다. 크게 소스 코드 난독화와 바이너리 난독화로 나뉜다.[51] 난독화는 기술 무단 복제 방지, 불법 침입 프로그램 방지 등의 목적으로 사용된다.[52]
자바스크립트 코드 용량을 줄이는 Packer는 코드를 읽기 어렵게 만드는 데에도 활용된다. 난독화된 코드를 작성하고 읽는 것은 수수께끼와 같아서, 국제 난독화 C 코드 경연 대회, 난독화된 펄 경연 대회 등 프로그래밍 경연 대회가 열리기도 한다.
일부 펄 프로그래머는 서명 블록에 짧은 난독화된 펄 프로그램을 넣어 JAPHs(또 다른 펄 해커)를 표현하기도 한다.[16]
암호학자들은 코드 역공학을 암호학적으로 어렵게 만드는 구분 불가능 난독화를 연구해 왔다. 이는 다양한 암호화 구성에 활용될 수 있지만, 블랙 박스 난독화는 일반적으로 불가능하다고 알려져 있다.[17][18]
'''모델 난독화'''는 머신 러닝 모델 내부 구조를 숨기는 기술로, 모델을 블랙 박스로 만들어 설명 가능한 인공지능과 반대된다.[25] 훈련 데이터에 노이즈를 추가해 민감한 정보를 숨기기도 한다.[26]
코드 난독화는 주로 다음 두 가지 목적으로 사용된다.
# 코드 목적을 숨기거나(난해함에 기반한 보안 참조) 변조, 리버스 엔지니어링을 방지한다.
# 코드 해독 능력 시험을 위한 퍼즐, 오락으로 활용한다.
코드 난독화는 전자 회로 배치와 구조를 변경하는 하드웨어 모호화와는 다르다.
C 언어, C++, Perl 등 프로그래밍 언어는 구조와 특성 때문에 난독화가 더 쉽다.[28][29][30][33]
스크립트 언어는 분석이 쉽지만, 컴파일러를 사용하는 언어는 기계어 생성 과정의 비가역성 때문에 분석이 어렵다. 리플렉션을 위해 메타데이터에 심볼 정보를 저장하는 언어는 역컴파일이 쉬워 난독화가 많이 사용된다. 난독화 도구는 심볼 이름을 의미 없는 것으로 바꿔 분석을 어렵게 만든다.
난독화된 소스 코드 작성, 해독은 두뇌 훈련이 되며, IOCCC 등 콘테스트도 있다. 콘테스트는 프로그램 작동 의외성 등을 평가하며, 난이도만을 겨루는 것은 아니다.
난독화 패턴에는 키워드 치환, 공백 활용, 자기 생성, 데이터 고압축 등 다양한 종류가 있다.
일부 Perl 프로그래머는 서명란에 난독화된 Perl 프로그램을 넣기도 한다. (JAPHs)[34]
6. 난독화의 미래
암호학자들은 코드 난독화를 통해 코드 역공학을 ''암호학적으로'' 어렵게 만드는 방법을 연구해 왔다. 이는 안전하게 구축 가능하다면, 완전히 새로운 유형을 포함한 다양한 종류의 암호화를 가능하게 하는 암호화 기본 요소인 구분 불가능 난독화에 대한 여러 제안으로 이어졌다. (더 강력한 개념인 블랙 박스 난독화는 일반적으로 불가능하다고 알려져 있다.)[17][18]
'''모델 난독화'''는 머신 러닝 모델의 내부 구조를 숨기는 기술이다.[25] 이는 모델을 블랙 박스로 만들어 설명 가능한 인공지능과 반대되는 개념이다. 난독화된 모델은 훈련 데이터에 임의의 노이즈를 추가하여 개별 샘플 및 샘플 그룹 속성에 대한 민감한 정보를 숨길 수 있다.[26]
7. 결론
코드 난독화는 프로그램 코드의 일부 또는 전체를 변경하는 방법 중 하나로, 코드의 가독성을 낮춰 역공학에 대한 대비책을 제공한다. 난독화는 적용 범위에 따라 소스 코드 난독화와 바이너리 난독화로 나눌 수 있다.[51] 또한, 난독화 목적에 따라 기술의 무단 복제와 불법 침입을 방지하는 것으로 나뉘기도 한다.[52]
참조
[1]
웹사이트
What is obfuscation (obfu)? - Definition from WhatIs.com
https://searchsoftwa[...]
2019-02-01
[2]
웹사이트
Obfuscation: Cloaking your Code from Prying Eyes
https://web.archive.[...]
2003-03-06
[3]
웹사이트
Jeff Atwood, May 15, 2005
https://web.archive.[...]
Codinghorror.com
2005-05-15
[4]
웹사이트
Obfuscation
https://web.archive.[...]
Kenter.demon.nl
[5]
웹사이트
C++ Tutorials – Obfuscated Code – A Simple Introduction
http://www.dreaminco[...]
DreamInCode.net
[6]
웹사이트
C Tutorials – Obfuscated Code in C
https://web.archive.[...]
2011-07-07
[7]
웹사이트
Pe(a)rls in line noise
http://www.perlmonks[...]
Perlmonks.org
[8]
웹사이트
Obfuscation – Haskell Wiki
https://wiki.haskell[...]
2006-02-16
[9]
웹사이트
Obfuscated code
https://web.archive.[...]
[10]
웹사이트
Obfuscating "Hello world!"
https://benkurtovic.[...]
2017-10-18
[11]
웹사이트
Obfuscated Python
http://wiki.c2.com/?[...]
2017-10-18
[12]
웹사이트
The First Annual Obfuscated Python Content
https://web.archive.[...]
2017-10-18
[13]
간행물
xoreaxeaxeax/movfuscator
https://github.com/x[...]
2022-11-03
[14]
Youtube
Break Me00 The MoVfuscator Turning mov into a soul crushing RE nightmare Christopher Domas
https://www.youtube.[...]
2015-09-25
[15]
웹사이트
One Instruction To Rule Them All: C Compiler Emits Only MOV
https://hackaday.com[...]
Hackaday
2021-03-21
[16]
웹사이트
JAPH – Just Another Perl Hacker
http://rochester.pm.[...]
Perl Mongers
2015-02-27
[17]
간행물
Cryptography Breakthrough Could Make Software Unhackable
https://www.wired.co[...]
2021-03-14
[18]
학술논문
Indistinguishability Obfuscation from Well-Founded Assumptions
https://eprint.iacr.[...]
2020
[19]
웹사이트
"Can We Obfuscate Programs?" by Boaz Barak
http://www.math.ias.[...]
Math.ias.edu
2013-11-25
[20]
웹사이트
Blocking website and only way to fix is disabling HTTPS s... {{!}} AVG
https://support.avg.[...]
2020-07-21
[21]
웹사이트
Google taking action against disguised code in Chrome Web Store
https://www.theregis[...]
[22]
웹사이트
Mozilla announces ban on Firefox extensions containing obfuscated code
https://www.zdnet.co[...]
[23]
웹사이트
Reasoning behind the "preferred form of the work for making modifications to it" language in the GPL
https://lwn.net/Arti[...]
Lwn.net
2013-11-25
[24]
웹사이트
What is free software?
https://www.gnu.org/[...]
gnu.org
2014-12-18
[25]
학술논문
Model Obfuscation for Securing Deployed Neural Networks
https://openreview.n[...]
2023
[26]
학술논문
Privacy-preserving Machine Learning through Data Obfuscation
2018-07-12
[27]
문서
難読化(obfuscation)とは - IT用語辞典 e-Words
https://e-words.jp/w[...]
[28]
웹사이트
Obfuscation: Cloaking your Code from Prying Eyes
http://www.devx.com/[...]
Devx.com
2003-03-06
[29]
웹사이트
Obfuscating Code
https://blog.codingh[...]
Codinghorror.com
2005-05-15
[30]
웹사이트
Obfuscation
https://web.archive.[...]
Kenter.demon.nl
2019-03-06
[31]
웹사이트
C++ Tutorials - Obfuscated Code - A Simple Introduction
https://www.dreaminc[...]
DreamInCode.net
2007-11-25
[32]
웹사이트
Obfuscated Code
https://sites.google[...]
Sites.google.com
2011-07-07
[33]
웹사이트
Pe(a)rls in line noise
https://perlmonks.or[...]
Perlmonks.org
[34]
웹사이트
JAPH - Just Another Perl Hacker
https://web.archive.[...]
Perl Mongers
2019-03-06
[35]
웹사이트
International Obfuscated C Code Winners 1988 - Least likely to compile successfully
https://www.ioccc.or[...]
IOCCC
[36]
웹사이트
Reverse Engineering the Twelve Days of Christmas
http://research.micr[...]
Research.microsoft.com
2019-03-06
[37]
서적
Obfuscated C and Other Mysteries
John Wiley & Sons
[38]
웹사이트
Intel 8080 emulator. 19th IOCCC. Best of Show.
http://www.nanochess[...]
Nanochess.org
2019-03-06
[39]
웹사이트
Obfuscated Perl Program
https://perl.plover.[...]
Perl.plover.com
2019-03-06
[40]
웹사이트
Is it possible to write obfuscated one-liners in Python?
https://docs.python.[...]
Docs.python.org
2019-03-06
[41]
웹사이트
Obfuscating "Hello world!"
https://benkurtovic.[...]
Ben Kurtovic
2019-03-06
[42]
문서
ObfuscatedPython
[43]
웹사이트
The First Annual Obfuscated Python Content
https://code.actives[...]
ActiveState Software Inc.
2019-03-06
[44]
웹사이트
Can We Obfuscate Programs?
https://www.boazbara[...]
www.math.ias.edu
2011-05-29
[45]
웹사이트
Can I always use the Reflection API if the code is going to be obfuscated?
https://stackoverflo[...]
Stack Overflow
2019-03-06
[46]
웹사이트
Mozilla is gearing up to tackle shady add-ons on Firefox
https://thenextweb.c[...]
TNW
2019-05-03
[47]
웹사이트
Open Directory - Computers: Programming: Languages: JavaScript: Tools: Obfuscators
https://dmoztools.ne[...]
DMOZ
2019-03-06
[48]
웹사이트
Open Directory - Computers: Programming: Languages: PHP: Development Tools: Obfuscation and Encryption
https://dmoztools.ne[...]
DMOZ
2019-03-06
[49]
웹사이트
Open Directory - Computers: Programming: Languages: Java: Development Tools: Obfuscators
https://dmoztools.ne[...]
DMOZ
2019-03-06
[50]
웹사이트
Open Directory - Computers: Programming: Component Frameworks: .NET: Tools: Obfuscators
https://dmoztools.ne[...]
DMOZ
2019-03-06
[51]
간행물
서광열의 프로그래밍 언어 이야기, 코드 난독화
마이크로소프트웨어
2007-12
[52]
논문
Obfuscation 기술의 현황 및 분석과 향후 개발 방향
보안공학연구논문지(Journal of Security Engineering)
2008-05
관련 사건 타임라인
( 최근 20개의 뉴스만 표기 됩니다. )
KAIST, 바이너리 취약점 분석·탐지 기술 개발...“AI 자동화 공격 방어에 활용” – 바이라인네트워크
취약한 자바스크립트 기반 서비스 보호…악산, ‘시큐어JS’ 발표 – 바이라인네트워크
악산, 코틀린 기반 안드로이드 모바일 앱 보안 솔루션 출시 – 바이라인네트워크
악산 “애플리케이션 보호, 난독화론 불충분…가시성 확보해 적응형 보안 구현해야” – 바이라인네트워크
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com