Android에서 간단하게 광고 제거

Adfree라는 좋은 물건이 있지만 제일 많이 뜨는 광고인 Admob은 막지 않도록 설정되어 있다. 심지어 회원 가입을 한 후 개인적인 목록을 추가할 때도 Admob을 차단하려 하면 거부한다. 이게 예전엔 Host 목록을 찾아서 hosts 파일에 직접 박아넣었는데 잊어버려서 찾다가 포기하고 직접 찾기로 했다.

방법은 간단하게 Android에 Arp spoof를 걸고 PC에서 Wireshark를 띄운 뒤 DNS 요청만 보는 것이다. 하지만 Wireshark를 설치하기도 까다로웠는데 Arp spoof 툴은 설치하기 귀찮아서 adb를 이용해서 Android에서 arp table을 수정하기로 했다. arp -s <IP> <hw_addr> 명령을 내리면 알아서 영구적으로 테이블에 들어간다. 맥에서 ip_forward를 했으면 좋으련만 귀찮아서 하지는 않았다.

이미 광고가 떠있는 상태였으므로 DNS 캐시를 지워줘야 했다. 가장 간단한 방법은 재부팅이지만 요즘 누가 재부팅을 원하는가. ndc resolver flushdefaultif 명령을 날리면 DNS 캐시가 지워진다. 물론 루트 권한이 필요하긴 하다.

아무튼 위와 같은 방법으로 모든 패킷이 PC로 가게 한 뒤에 Wireshark에서 적절히 필터를 걸어주면 DNS 요청을 어디에 하는지 친절하게 다 띄워준다. 광고 느낌이 나는 걸 찾아서 /system/etc/hosts 파일에 적어주면 된다.

Win7ElevateV2 little modified by Kjwon15

Comment:
This program is writen by Leo Davidson
and little modified by Kjwon15

How to Work:
1. Check parameter (first run, parameter is empty)
2. Extract DLL file at temp directory
3. Find explorer.exe and inject DLL

4. Injected DLL is run this program again (with parameter /s)
5. This mother process is end
6. Child process (Running as admin) excute RealMain() function

cfile8.uf.141A27474D68A95E34529A.rar