앱 진단중 루팅 탐지로 인해 계속 막혀 있다.
아마도 frida 탐지를 하는거 같은데 ida를 통해 솔루션을 실행을 시키면 좌측에 function name이라며 서브루틴들을 확인할수 있다.
과연 이들중 frida 탐지 전까지 사용되는 서브루틴들을 확인하고 싶다
그러면 해당 서브루틴들을 frida로 일일히 attach를 하려고 하는데 일일히 받아쓰기에는 서브루틴들이 굉장히 많기에
꽤나 많은 시간들을 써야한다
그래서 ida 내부에 python을 사용하여 자동화를 하려고 한다.
File > Script command > scripting language 를 python으로 바꾸기
from idautils import *
from idaapi import *
from idc import *
ea=BeginEA()
for funcAddr in Functions( SegStart(ea), SegEnd(ea)):
funcName = GetFunctionName(funcAddr)
if funcName.find("main")>0 or funcName.find("Main")>0 or funcName.find("Start")>0 or funcName.find("start"):
print("Function %s is at 0x%x" %(funcName,funcAddr) )
interceptor attach 코드까지 바로 출력하기
from idautils import *
from idaapi import *
from idc import *
ea=BeginEA()
for funcAddr in Functions( SegStart(ea), SegEnd(ea)):
funcName = GetFunctionName(funcAddr)
if funcName.find("main")>0 or funcName.find("Main")>0 or funcName.find("Start")>0 or funcName.find("start"):
print("Interceptor.attach(moduleName.add(0x%x), {\n\t onEnter: function (args) {\n\t\t console.log(\" %s work!\");},\n\t onLeave: function (retval) {} \n});"%(funcAddr,funcName))
참고
https://speedr00t.tistory.com/592
ida ][ 함수 이름과 주소 출력해보기2
ida ][ 함수 이름과 주소 출력해보기2 ■ 사용법 youtu.be/DOLvi1PmBpA
speedr00t.tistory.com
방법2.
#1. ida에 서브루틴이름만 싹 복사해서 aaa.log 텍스트 파일에 붙여넣기
#2. cmd 창에 python make_all_method_hook.py 실행
#3. 생성된 all_method_hook.js 파일 확인
def open_ida_file():
ida_data = open("./aaa.log", "r")
result = []
for line in ida_data:
result.append(line.split())
#print(line)
#print(result)
return result
def sub_filter(ida_list):
sub_list = []
for line in ida_list:
if "sub_" in line[0]:
if "nullsub_" not in line[0]:
sub_list.append(line[0])
#print(line[0])
return sub_list
def sub_filter2(ida_list):
sub_list = []
for line in ida_list:
if "sub_" in line[3]:
if "nullsub_" not in line[3]:
sub_list.append(line[3])
return sub_list
def create_sub_hook(sub_list):
tmp_list = []
tmpp = []
result_sub = []
for index in sub_list:
tmp_list = index.split("sub_")
tmpp.append(tmp_list[1])
for index in tmpp:
#필터 잘못 검 모든 문자열에서 0이 사라짐
#result_sub.append(re.sub('[^1-9A-Z]', '', index))
result_sub.append(index.lstrip('0'))
save_hook = open('all_method_hook.js', 'w')
for index in result_sub:
code = "var module_base = Module.findBaseAddress('libAppIron-jni_v2.13.19.so');\n" #Module.findBaseAddress('XXXX') -> ipa 압축 해제 후 바이너리 파일명으로 수정
code += "var custom = module_base.add("
code += "0x{}".format(index)
code += ");\n"
code += "Interceptor.attach(custom, {"
code += "\n\t onEnter: function (args) {\n\t\t"
code += "console.log('"
code += "0x{}".format(index)
code += " Call');\n"
code += "\t}\n"
code += "});"
save_hook.write(code + "\n")
save_hook.close()
ida_list = open_ida_file()
sub_list = sub_filter(ida_list)
create_sub_hook(sub_list)
# 생성된 js 파일 내용 바깥에 if (ObjC.available) {try { <내용> }catch(err) { console.log("[!] Exception2: " + err.message); }} 추가
반응형
'보안 > 모바일' 카테고리의 다른 글
보안 솔루션 추출 방법 3가지 (feat. 개인적인 꿀팁) (0) | 2025.01.29 |
---|---|
IDA 절대 주소값 알아내기 (0) | 2024.12.10 |
루팅 탐지 관련 글 (링크) (0) | 2024.12.05 |
[Game][AOS][FRIDA] frida-il2cpp-bridge 진단할때 js 파일로 루팅 우회 편법 (2) | 2024.10.22 |
루팅 없이 안드로이드 카메라 소리 없애기 (0) | 2024.09.27 |