Posts
Mini
Cancel

난독화 전 C코드 #include <stdio.h> int main() { int temp = 10; for (int i=0; i<5; i++) { if(temp < 13){ temp = temp + 1; } else{ temp = temp - 1; } te...

이번 목표 - 가상화 난독화를 수행하는 pass 작성하기 switch문에 case 추가 마무리 << 이전 글에서 이어지는 내용 깃허브 소스코드 ✨ 1. Switch문에 case 추가하기 저번에 Switch문을 추가하는 것까지 해 보았다. 그 이후 중복된 작업들을 함수로 정리하고, return 문을 retval을 re...

이번 목표 - 가상화 난독화를 수행하는 pass 작성하기 switch문을 이용하기 위한 for문 생성 switch문 생성 << 이전 글에서 이어지는 내용 깃허브 소스코드 ✨ 설명을 위해 작성한 코드는 이후에 변경된 것이 많아, 위의 깃허브 링크에서 확인하는 것이 좋음! 1. BasicBlock 나누기 색깔이 칠해...

이번 목표 - 가상화 난독화를 수행하는 pass 작성하기 패스 생성 준비 필요한 변수 삽입 깃허브 소스코드 ✨ 이번 주부터 가상화 난독화를 해 볼 것인데, 우선 switch문을 넣는 것을 해 보기로 했다. 입력 C파일은 저번에 사용한 것을 조금 고쳐 사용했다. virtualTest.c 일단 일반적인 코드에 적용할 수 있는 게 아닌...

이번 목표 - 가상화 난독화 손으로 작성해보고 익히기 가상화 난독화 C 코드 작성 LLVM으로 해당 코드의 IR 확인 우리 프로젝트의 최종 목표는 가상화 난독화이다. 하지만.. 나한테 가상화 난독화라는게 아직 낯선 개념이어서 조금 어떤 난독화인지 익힐 수 있는 시간이 필요했다. 그래서 이번 주에는 본격적인 가상화 난독화를 들어가기에...

이전글 > LLVM - Control Flow 난독화 (1/2) 이번 주의 목표 Control Flow 조작하여 난독화해보기 저번 주에 이어서 난독화 작업을 마무리 지어 볼 것 4. 원본 BasicBlock을 변형하여 false에 연결하기 이 번에는 마지막 단계인…! 원본 BasicBlock인 trueBB를 살짝 변형하여 fa...

이번 주의 목표 Control Flow 조작하여 난독화해보기 이번 주에는 LLVM을 이용한 난독화를 해 보기로! 그 중에서도 Obfuscator-LLVM의 BogusControlFlow와 같이 “코드의 control flow를 조작하는 난독화”를 시도해 보았다. 우선 난독화에 쓸 간단한 입력 controlTest.c를 만들었다 #in...

오늘의 목표 BasicBlock 관련해서 이름 출력해보기 ~(task list가 있다는걸 알고 사용해봤다ㅋㅋ)~ 1. Basicblock 관련 출력해보기 Basicblock의 단위나 나눠지는 구분? 같은 게 직접 출력해봐야 이해가 될 것 같아서 간단하게 이름이랑 몇 가지 출력할만한 것들을 출력해보기로 했다. 다음과 같이 test03...

오늘부터 모각코 형식으로 시간을 정해서 팀원들과 같이 공부하기로 했다! 이번 주의 목표는… 패스 만드는 법 다시 요약정리 해 두기 ModulePass 다뤄보기, runModule함수로 뭔가 해보고 제대로 실행까지 원래 pass에서 module? 다루는 법을 주로 하려고 했는데 공부하는 김에 패스 만드는법도 같이 정리해두면 나중에 써먹기 ...

LLVM IR은 다음의 명령어로 각각 .ll(어셈 언어 형식), .bc(비트코드 형식)으로 저장 가능함 clang -S -emit-llvm test.c clang -c -emit-llvm test.c 다음과 같이 .ll 파일과 .bc파일이 생성되는 것을 볼 수 있음 .ll 파일은 다음과 같은 구조