.NET 프로그램의 코드 혼동, 케이스 추가 및 탈피

2604 단어
일반적으로 우리는 코드를 혼동하고 암호화하는 형식을 통해 소프트웨어 보호의 목적을 달성한다.웹 개발에서 우리가 접한 것은 아마도 JS 코드를 암호화한 것일 것이다. JS 코드를 혼동하고 암호화함으로써 핵심 JS 코드에 대한 보호를 실현할 수 있다.만일 접촉한 적이 없다면 이곳에서 간단하게 이해할 수 있으니 이번에는 자세히 말하지 않겠습니다.
이전에 Win32의 소프트웨어에서 껍질을 벗기고 껍질을 벗기는 기술은 이미 매우 성숙하게 발전했다. 국내에는 눈구경, 우리애해독 등 포럼이 유명하다. 3, 4년 전까지 학교에 다닐 때 포럼의 소는 줄곧 자신의 우상이었다.
그러나NET 프로그램은 컴파일 결과가 기계 코드 언어가 아니라 IL 언어이기 때문에 케이스 탈피 관련 소프트웨어가 많지 않다. 예를 들어 VS 자체의DotFuscator,NET Reactor, xeoncode 등 이번에는 간단하게 옆에 있는 것들을 소개해 드리겠습니다.NET Reactor.
1. 코드 혼동
코드 혼동은 주로 일부 명칭 교체, 위치 이동, 절차 혼동을 통해 이루어진다.
먼저 테스트하는 DEMO 프로그램을 보십시오. 아주 간단한 Winform 프로그램입니다. 창을 실례화할 때 User 클래스를 실례화하고 단추를 누르면 사용자 이름을 표시합니다. 이렇게 하면 암호화되고 케이스를 추가한 후에 프로그램이 계속 실행될 수 있는지 테스트할 수 있습니다.
using System;
 using System.Windows.Forms;
     
 namespace CodeObfuscator
 {
     public partial class Form1 : Form
     {
         private readonly User _currentUser;
         public Form1()
         {
             InitializeComponent();
             _currentUser = new User
             {
                 UserID = 1,
                 UserName = "Parry@cnblogs"
             };
         }
     
         private void ButtonAlertClick(object sender, EventArgs e)
         {
             MessageBox.Show(_currentUser.UserName);
         }
     }
     
     public class User
     {
         public int UserID { get; set; }
         public string UserName { get; set; }
     }
 }

우리는 가장 자주 사용하는 컴파일러 도구인 Reflector를 사용하여 생성된 exe 컴파일러에 대해 원본 코드를 봅니다.
다음은 우리가 열자.NET Reactor는 코드를 혼동하여exe를 불러온 후 일반 설정에서 압축 옵션을 설정할 수 있지만 설정 후 프로그램의 초기화 속도가 느려지는 것은 코드를 압축을 풀고 메모리에 불러와야 하기 때문이다.
혼동 옵션에서 Enable을 활성화, 공통 유형 혼동, 문자열 암호화 등 자주 사용하는 것도 활성화로 설정합니다.다른 옵션 Tips에는 상세한 설명이 있어 일일이 설명하지 않는다.
Reflector 역컴파일러를 사용해서 보았을 때, 혼동된 코드를 보지 못하고, 이 결과를 보았습니다.
아마도NET Reactor 프로그램이exe를 처리한 후에 패키지를 만들었습니다. 케이스 찾기 도구를 사용해서 보니 과연 이렇습니다. 밖에 Delphi가 씌워져 있습니다. 이것은 케이스가 아니라 추가 데이터일 뿐입니다.
Overlay 관련 내용은 여기를 볼 수 있습니다.
2.가각과 탈각
가각은 사실상 암호화 방식의 하나로 가각된 프로그램은 실행하기 전에 추가 명령을 실행해야 한다. 이 추가 명령은 관련 조작을 완성한 후에 메인 프로그램을 시작한다. 프로그램은 마치 한 케이스에 싸인 것처럼 가각 기술은 바이러스가 작성할 때도 대량으로 사용된다.
우리는 북두가각 프로그램을 사용하여 위의exe가각을 사용한 후에 다시 역컴파일해서 한 번 보았다.
역컴파일 후 우리는 이전 프로그램의 이름과 코드를 찾을 수 없었고 완전히 '케이스' 에 싸여 있었다. 프로그램이 실행될 때, 프로그램은 우리가 역컴파일한 메인 함수를 일련의 해압, 해독 동작을 실행한 후 코드를 메모리에 불러와 원시 프로그램을 실행했다. 이렇게 하면 프로그램에 대한 보호 기능을 실현할 수 있다.
탈피는 프로그램에 대해 압축을 풀고 복호화하여 바깥쪽의 껍질을 벗긴 후 역방향 공정을 계속해서 해독하는 것이다.
탈각에 관해서 본인도 피상적인 것을 알고 함부로 뽐내지 못하며 흥미가 있으면 논단에 가서 관련 지식을 배울 수 있습니다.
여기에 소개된 혼동, 케이스를 넣는 방법도 자신의 프로그램을 보호해야 할 때의 한 방법일 뿐이다.
작성자: Parry 출처:http://www.cnblogs.com/parry/

좋은 웹페이지 즐겨찾기