올리디버거에서 (Ctrl+N)을 누르면 NAME창이 열린다. 여기서 __vba관련 함수들이 나오는데 여기서 "vbavarteq"를 입력한다"00401170"번지에 위치한 __vbaVarTstEq를 Import하여 사용하고 있다.
그럼 해당함수를 사용하는 모든 주소에 BP를 설치해 분석을 진행할 수 있는데 F2로 BP를 걸면 안된다. 왜냐하면 여기가 실행이 됐을 때 BP를 거는게 F2다. 하지만 __vbaVarTstEq는 주소를 참조하는 곳이므로 다른 방법으로 BP를 걸어야 한다.
실행되는 해당 함수에서 "마우스 우클릭 - Set breakpoint on every reference"를 클릭하면 해당 함수를 호출하는 모든 주소에 BP가 걸린다. 프로그램을 실행(F9)하면 BP가 걸린 곳에 멈춘다. 그리고 F8을 이용해 한줄 씩 분석을 해야한다.분석하다보면 "__vbaFreeVar"함수를 호출하고, DI, SI레지스터를 비교 후 분기가 일어난다.분기가 일어나고 다시 BP걸린 곳을 볼 수 있다. 다시 계속 분석하다보면 분기문이 또 나오는데 분기된 곳에서 어떤 문자열을 EDX 레지스터에 저장하고, __vbaStrCopy함수를 호출한다. 그리고 사진 가장 아래를 보면 시리얼넘버를 EDX 레지스터에 저장하는 것도 확인할 수 있다
해당 문자열이 올바른 시리얼인지 판별하려면 아까 걸어둔 BP를 제거해야 한다. (Alt + B)를 눌러서 BP상태 창을 띄운 뒤 "마우스 우클릭 - Disable all"을 눌러 모든 BP를 비활성화 한다.