질문 1: 소프트웨어의 소스코드를 어떻게 추출하고 소스코드를 보고 싶은지 불가능하다고 생각합니다. 일부 프로그램이 보이지 않는 것이 아니라 모든 프로그램이 보이지 않는 것입니다. 귀하가 직접 작성한 프로그램이 아닌 한 합법적인 채널을 통해 소스를 제공합니다. 거의 모든 프로그램이 출시되기 전에 암호화되어 압축되기 때문입니다. 누군가 암호화에 어떤 기술을 사용하는지 안다 해도 소스코드를 그대로 복원할 가능성은 거의 없다. 소위 크래킹은 원본 프로그램의 소스 코드를 복원한 후 크래킹하는 것을 의미하지 않습니다. 소프트웨어를 크래킹하는 것은 소프트웨어의 어셈블리 코드를 디컴파일하는 것 이상입니다!
질문 2: 소프트웨어의 소스 코드를 얻는 방법 이 문제의 경우 EXE만 있으면 소스 코드를 얻는 것이 불가능합니다.
개발자에게 묻지 않는 한.
질문 3: 엑셀 표에서 소스 코드를 추출하는 방법은 무엇입니까? 예를 들어 테이블 이름이 sheet1이라면 sheet1의 라벨을 마우스 오른쪽 버튼으로 클릭하여 코드를 확인하세요.
질문 4: 소프트웨어의 소스 코드는 어떻게 얻을 수 있나요?
일반적으로 소프트웨어 소스코드는 제품이 출시되면 일정 기간이 지나면 소프트웨어 회사에서 자체적으로 출시하게 된다.
물론이죠. 디컴파일을 사용하는 것도 가능합니다. 그러나 크래킹 작업은 새로운 소프트웨어를 개발하기에 충분히 복잡합니다. 이득이 손실보다 큽니다.
질문 5: 20포인트짜리 웹사이트 소스코드 추출 도구를 찾고 있습니다. 이런 종류의 소프트웨어는 존재하지 않습니다.
전체 웹사이트의 소스코드를 얻으려면, 공간의 권한을 얻으세요
그래야만 전체 사이트를 다운로드할 수 있습니다
그렇지 않으면 웹사이트 템플릿을 얻게 됩니다
질문 6: apktool 사용 방법 소스 코드를 추출하기 위해 준비된 도구에는 다음과 같은 내용도 있습니다(Google 공식 웹사이트에서 사용 가능):
apktool-install-windows-2.1_r01-1.zip 및 dex2jar 압축 풀기 -0.0.7-SNAPSHOT.zip을 디스크의 루트 디렉터리(여기서는 H 디스크 선택)에 저장하고 동시에 압축을 풀려는 AXMLPrinter2.jar, apktool.jar 및 apk 소프트웨어도 해당 디렉터리에 저장합니다. 동일한 디렉터리를 입력한 후 "--cmd"를 실행하여 콘솔을 열고 cd /d h : /를 입력하여 H 드라이브의 루트 디렉터리를 입력하고 다음 내용을 입력합니다(나중에 편의를 위해 스테이션을 끄지 않도록 제어). < /p>
그 중 apktool.jar은 압축해제 도구, d는 압축풀기를 의미하고, memo.apk는 내가 압축을 풀고 싶은 소프트웨어, memo는 압축해제 후 이 파일로 출력된다는 뜻입니다. 순간, 메모 폴더가 생성되고, 그것을 열면 res 폴더와 AndroidManifest.xml에 모든 파일이 있을 것입니다. 메모장으로 볼 수 있습니다.
위는 .xml 파일과 그림을 얻는 것입니다. 다음은 내부의 .java 소스 코드를 얻는 것입니다.
winRar 또는 good press를 사용하여 memo.apk를 엽니다. 스크린샷은 다음과 같습니다:
< p> H 드라이브의 루트 디렉터리에 있는classes.dex 파일을 추출한 다음 콘솔을 다시 열고 dex2jar.batclasses.dex를 입력하십시오.라는 이름의 파일을 가져옵니다. classes.dex.dex2jar.jar, 이때 jd-gui.exe를 사용하여classes.dex.dex2jar.jar을 열면 모든 소스 코드를 볼 수 있습니다!
디컴파일된 파일을 다시 apk 파일로 변경하려면 콘솔에
apktool.jar b memo
를 입력하면 됩니다. 여기서 b는 Re- 패키징은 메모가 방금 압축을 푼 폴더라는 의미입니다. 전제는 모든 파일이 메모 폴더에 있는지 확인하는 것입니다! !
질문 7: 소프트웨어를 크랙하여 모든 소스 코드를 얻을 수 있습니까? 디컴파일을 말씀하시는 건가요? 어떤 소프트웨어도 이를 디컴파일할 수 없습니다. 사람들이 디컴파일하는 데에만 의존할 수 있지만 매우 번거롭습니다.
질문 8: .apk 파일에서 소스 코드를 얻을 수 있나요? 당신이 만든 APP의 소스코드를 왜 모르시나요?
난독화 없이 프로그램을 통해 디컴파일할 수 있고, 소스코드도 얻을 수 있다.
난독화가 수행되면 더 어려워집니다.
질문 9: 소프트웨어 소스 코드를 얻을 수 없는 이유는 무엇입니까? 컴파일된 소프트웨어의 소스 코드는 획득이 거의 불가능합니다. 이론적으로 획득이 불가능한 이유를 다음과 같이 설명할 수 있습니다.
소스 코드를 컴파일하고 일련의 0과 0으로 변환해야 합니다. 1s. 이 일련의 0과 1이 패키지화되면 우리가 매일 사용하는 실행 파일이라고 부르는 것이 바로 여러분이 흔히 사용하는 소프트웨어입니다.
실행 파일, 즉 일련의 0과 1을 통해 소스 코드로 푸시백하려는 것은 고급 언어 소스 코드와 최종 생성되기 때문에 거의 불가능합니다. 0 1과 엄격한 일대일 대응이 없습니다. 고급 언어를 먼저 어셈블리 언어로 변환한 다음 어셈블리 언어를 0과 1로 변환해야 합니다. 어셈블리 언어와 0과 1 사이에는 일대일 대응이 있지만 고급 언어에서는 반드시 그런 것은 아닙니다. 레벨 언어와 어셈블리 언어.
동일한 몇 문장의 고급 언어 코드라도 컴파일러에 따라 완전히 다른 어셈블리 코드가 될 수 있습니다. 게다가 같은 로직의 코드라도 키워드나 변수의 차이가 조금이라도 다른 어셈블리 코드가 생성됩니다.
따라서 바이너리 0,1 실행 파일에서 고급 언어를 역으로 추론하는 것은 이론적으로는 가능하지만, 작업 부하가 너무 크기 때문에 실제로는 불가능합니다. 대규모 소프트웨어와 마찬가지로, 수 기가바이트, 즉 수십억 개의 0과 1 라인이 전 세계의 프로그래머들이 함께 리버스 엔지니어링을 한다고 해도 소스 코드를 완전히 리버스 엔지니어링하는 데 몇 년이 걸릴지는 아무도 모릅니다.
그렇다면 우리가 일반적으로 부르는 리버스 엔지니어링은 무엇일까요?
네, 사실 소프트웨어는 뒤집힐 수 있지만 실제 소스코드가 뒤집힌다는 뜻은 아니고, 소프트웨어의 어셈블리 코드가 뒤집힌다는 뜻입니다. 그러나 어셈블리 코드는 규모가 크고 읽기가 쉽지 않기 때문에 어느 정도 이 소프트웨어의 소스 코드가 될 수 없다는 점에 유의해야 합니다. 암호. 그래서 어셈블리 코드의 양이 엄청납니다.
동시에 어셈블리 코드는 거의 구조화되어 있지 않습니다. 즉, 소프트웨어의 어셈블리 코드를 얻더라도 등록 로직과 같은 일부 핵심 로직만 약간만 변경할 수 있습니다(사용). (크래킹용) 등이 있지만 어셈블리 코드를 통해 본 소프트웨어의 기능을 변경하는 것은 거의 불가능합니다. 따라서 어셈블리 코드를 공개하면 다른 사람들이 읽을 힘이 없습니다.