ARPCACHE 에 대하여

개발/연구 / / 2007. 5. 9. 14:06

ARPCache 에 대하여...

레지스트리 분석을 위해 각 부분별 레지스트리를 분석하고 있었다.

프로그램 추가/삭제 부분에서 디스크상 삭제하였는데 레지스트리에 기록되어 있는 쓔레기 부분을 파악하기 위해 ARPCache 부분을 참조해야 한다는 것을 확인하였다.

그런데 ARP 라고 해서 Address Resolution Protocol 인줄 알고 프로그램 추가/삭제와 무슨 상관이 있을까 하고 한참을 보다 ARP 는 Add/Remove Programs 라고 프로그램 추가/삭제를 위한 레지스트리임을 알게 되었다.. 흐흐

아무튼 레지스트리의 주소는 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache 인데 모든 정보가 바이너리 값으로 되어 있었다.

MSDN 에 찾아봐도 레퍼런스가 없는 것을 보아하니 undocumented 되어 있는 것 같았다.

그래도 모든 값을 제대로 파악해야 했기에 나름 분석하다 아래의 구조체를 만들어 내었다.



끼워 맞추는 식이지만.. -_ㅡ;

WCHAR wName[] 은 컴파일러가  비표준 확장이라며 버럭거리지만 컴파일은 된다.

뒤에 바로 유니코드가 오기때문에 포인터를 넣을 수도 없었고, 저 표현식은 filemon 소스에서 본 적이 있어서 구현상 무리가 없을 것 같아 그대로 구현하였다.

이제 arpcache 에서 키값을 가져와서 SlowInfoCache 값을 저 구조체에 캐스팅해 보면 아래와 같이 매칭된다.

사용자 삽입 이미지


위의 자료는 CCleaner 라는 프로그램이고 아래는 제어판-프로그램추가/삭제 있는 내용이다.

사용자 삽입 이미지

크기는 1511424 는 Mb 로 수정하면 1.44140625 이기 때문에 정확하고, 사용됨의 빈도는 정확히 바운더리가 어느정도 인지는 모르겠지만 6 이 보통으로 나오니.. 몇번 삽질하면 바운더리가 확실히 나올 것 같다.

아무튼 목표는 바이너리값 분석이기 때문에 이것으로 마무리하고.. 그 외의 정보는  아래의 레지스트리 위치에서 찾으면 된다.

SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall

혹시나 ARPCACHE 값을 분석해야 할 사람이 있으면 참고가 되었기를...
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기