우리가 만든 난독화 기술별로 대응하는 역난독화를 단계적으로 구현해가려고한다. 이번에는 더하기 연산을 MBA expression으로 난독화한것을 다시 원래의 더하기 표현으로 역난독화 하려고 하였다.
입력 소스코드
int _(int ___, int ____) {
int _____ = 0;
_____ = (___ | ____) + ____ - ((~___) & ____);
return _____;
}
역난독화 대상 코드이다.
원하는 역난독화 결과 소스코드
int adder(int a, int b) {
int result = 0;
result = a + b;
return result;
}
역난독화를 제대로 구현하면 위와 같은 결과가 도출되기를 원한다.
그러나 mba부분을 역난독화하는것에 어려움을 느끼고 있다.
지난 주에 구현한 식별자 역난독화를 사용해서 식별자를 되돌리는 것은 성공하였지만, mba를 기존의 더하기 연산으로 되돌리는 것은 성공하지 못했다.
구현에 대한 고민
리스너에서 되돌리는 것 말고 아예 mba에 대한 표현을 (출력이 정해져 있으니까) .g4파일에 rule로 작성하여 파싱을 하면 어떨까 생각하였다.
MBA 표현을 파싱할 수 있는 문법을 어떻게 작성하고 우선순위를 어떻게 줘야 할지 잘 모르겠다..