관련 학습 권장 사항: javascript 비디오 튜토리얼
오늘은 특정 JS 암호화를 분석하고 복원할 것입니다. 아직 크롤러를 사용해 본 적이 없는 사람이라면 이 인증 코드를 알아야 합니다. 앞으로 저를 만나시면 저를 믿으세요
말할 것도 없고, 시간은 소중합니다. 본론으로 들어가겠습니다!
공식 웹사이트에 들어가서 선택하세요. 오늘의 주제 슬라이딩 검증은 다음 방법을 마스터하는 한 다른 검증 유형의 암호화와 유사합니다!
버튼을 클릭하여 패킷을 캡처하고 드래그하세요. 요청 데이터 패킷은 다음과 같습니다.
실제로 해야 할 일은 다음과 같습니다. w
암호화를 클릭하면 암호화된 JS 파일을 볼 수 있으며 분석을 위해 로컬에 저장할 수 있습니다.
디버깅을 통해 유니코드 형식의 인코딩과 배열 이름의 혼동이 많은 것을 확인할 수 있습니다.
기존의 해결 방법은 브라우저 콘솔에 입력하고 사용자가 Lushan Mountain의 진정한 모습을 볼 수 있지만 이 방법은 너무 번거롭습니다. 다음으로 AST를 사용하여 복원합니다!
먼저 유니코드 인코딩을 복원하고, AST 온라인 분석 웹사이트를 엽니다(https://blogz.gitee.io/ast/[1][1]
)복원할 코드를 그 안에 넣어주세요당신 만 볼 수 있습니다. 원래 값을 복원하려면 추가 속성을 삭제해야 합니다. 순회 코드는 다음과 같습니다.const parser = require("@babel/parser");const traverse = require("@babel/traverse").default;const t = require("@babel/types"); //操作节点的函数,比如判断节点类型,生成新的节点等:const generator = require("@babel/generator").default; //生成还原后的代码const fs = require('fs');var jscode = fs.readFileSync("./slide.js", { encoding: "utf-8"});const visitor = { StringLiteral(path) { delete path.node.extra }}let ast = parser.parse(jscode);traverse(ast, visitor);let {code} = generator(ast, opts = {jsescOption: {"minimal": true}});fs.writeFile('decode_slide.js', code, (err)=>{});复制代码jscode는 이전에 공제된 JS 코드입니다. 마지막으로 복원된 코드는 decode_slide.js 파일에 기록됩니다.다음 단계는 난독화된 배열을 복원하는 것입니다. 디버깅 코드를 살펴보면 모든 배열은 JS 파일 시작 부분에 있는 큰 배열 KBBji.$_Co를 기반으로 하며, 그 배열은 여러 변수에 할당되어 있고 변수 이름은 무작위로 생성됩니다. 그래서 우리가 다음에 해야 할 일은 이러한 변수 이름을 찾아 해당 문자열 값으로 바꾸는 것입니다! AST를 온라인으로 구문 분석파싱 결과에 따라 해당 순회 코드를 작성합니다.
const visitor = { VariableDeclaration(path){ const {declarations} = path.node; if(!t.isMemberExpression(declarations[0].init))return; if(declarations[0].init.property.name !== "$_Co")return; if(declarations.length !==3 || declarations[0].init.property === undefined)return; let value1 = declarations[0].id.name; let value2 = declarations[2].id.name; new_array.push(value1, value2); }};复制代码모든 변수 이름은 위에서 찾은 후 이 형식을 모두 $ The로 입력하면 됩니다. _DFCB(66) 코드가 복원되어 코드에 대한 직관적인 느낌을 받으실 수 있습니다! 당신이 똑똑하다면 곧 복원된 코드를 작성할 수 있을 것이라고 믿습니다. 위 단계를 거쳐 전체 복원한 코드는 이렇습니다키워드를 기반으로 암호화된 위치를 빠르게 검색할 수 있고, 명확하게 보입니다! 복원하지 않으면 찾을 수 없습니다. 복원 후에는 웹사이트에서 암호화된 위치를 빠르게 찾아 중단점을 설정할 수 있습니다🎜
같은 코드라도 한눈에 가독성의 차이를 알 수 있다고 생각합니다. 이것이 끝이라고 생각하시나요? 아니요!
이제 코드는 복원되었지만 웹사이트에서 디버깅할 때 여전히 난독화된 코드가 남아 있는데 어떻게 해야 할까요?
다음으로 요청을 로컬에 매핑하는 데 사용되는 또 다른 아티팩트인 Reres를 살펴보겠습니다. 즉, 로컬 JS를 사용하여 원격 JS 파일을 대체할 수 있습니다.
사용법은 github을 직접 참조하세요 https://github.com/annnhan/ReRes[2]
이것으로 복원된 JS를 사용하여 웹사이트에서 디버깅할 수 있습니다. 너무 강력합니다!
효과는 다음과 같습니다:
tql, 이제 암호화 매개변수가 공제되고 부담이 없습니다!
백엔드 응답 tql 관련 코드를 받아보세요!
프로그래밍 학습에 대해 더 자세히 알고 싶다면 php training 칼럼을 주목해주세요!
위 내용은 크롤러 분석 JS 역방향 특정 테스트 슬라이딩 암호화 (1)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!