지난 학기 과제로 진행했던 miniC에 대한 소스 난독화를 해보는 것이 숙제였다.
내가 생각한 방법은

  1. 변수 이름 변경
    int number, int length, int age 와 같이 의미가 직관적으로 보이는 변수의 이름을
    int _,int __, int _ 처럼 변환해서 알아보기 어렵도록 만드는 것.
  2. for문을 while문으로 변경하기
    for의 시작 조건을 while문 시작 전에 배치,
    for의 종결 조건을 while의 종결 조건으로,
    for의 변화식을 while 내부의 마지막 문장으로 삽입하는 방법.
  3. 사칙 연산 바꾸기
    a + b -> a++1을 b번 반복,
    a * b -> temp에 a를 넣고 a += temp 를 b-1번 반복 등
    ***
    인데,
    • 1번 방법의 경우 pretty print 수준에서 적용할 방법을 찾지 못했다. 변수를 정의하는 부분에서 그 이름을 바꾸어도, 나중에 그 변수를 사용할 때 같은 ‘_‘를 어떻게 지정해야 되는지 고민중이다.
    • 2번 방법의 경우 Compound_stmt 내부에 for의 변화식을 삽입하려고 했다. addChild가 그런 역할을 하는 함수라고 생각했는데, 원하는 작업을 수행하지 않았다. 그런데 Compound stmt의 컨텍스트 안에 문장을 삽입하는 부분을 해결한다고 해도 for을 while로 단순 변환하는 방법보단 더 좋은 방법이 필요할 것 같다.
    • 3번 방법의 경우 expr의 Exit 메소드에 작성하려고 했는데, expr이 일반 문장이 아니라 if나 for의 조건식, 변화식인 경우의 예외처리를 생각해내지 못했다.

pretty print단계에서 난독화 하는 방법에 대해 더 고민하고 적절한 방법을 생각해야겠다.

마지막으로 수정된 시간은 2020-02-27 18:10:00 +0900이다.