虽然Frida不仅仅能hook安卓,但是市面上基本都用Frida来hook安卓...

【Frida】Frida的初次尝试

安装

官网

~ $ pip install frida-tools

~ $ frida-trace -i "recv*" Twitter

image-20220809162630338

测试

直接attach一下QQ.exe

import frida


def on_message(message, data):
    print("[on_message] message:", message, "data:", data)


session = frida.attach("QQ.exe")

script = session.create_script("""
rpc.exports.enumerateModules = function () {
    return Process.enumerateModules();
};
""")
script.on("message", on_message)
script.load()

print([m["name"] for m in script.exports.enumerate_modules()])

'''
PS E:\myworks\vscode_workspace\firda_workspace> python -u "e:\myworks\vscode_workspace\firda_workspace\test.py"
['WeChat.exe', 'ntdll.dll', 'KERNEL32.DLL', 'KERNELBASE.dll', 'USER32.dll', 'win32u.dll', 'GDI32.dll', 'gdi32full.dll', 'msvcp_win.dll', 'ucrtbase.dll', 'ADVAPI32.dll', 'msvcrt.dll', 'sechost.dll', 'RPCRT4.dll', 'SHELL32.dll', 'ole32.dll', 'combase.dll', 'SHLWAPI.dll', 'VERSION.dll', 'IMM32.DLL', 'windows.storage.dll', 'Wldp.dll', 'SHCORE.dll', 'kernel.appcore.dll', 'bcryptPrimitives.dll', 'uxtheme.dll', 'OLEAUT32.dll', 'CFGMGR32.dll', 'clbcatq.dll', 'propsys.dll', 'profapi.dll', 'WeChatWin.dll', 'WS2_32.dll', 'SETUPAPI.dll', 'bcrypt.dll', 'COMDLG32.dll', 'WLDAP32.dll', 'PSAPI.DLL', 'COMCTL32.dll', 'WINMM.dll', 'CRYPT32.dll', 'DDRAW.dll', 'dbghelp.dll', 'd3d11.dll', 'gdiplus.dll', 'VoipEngine.dll', 'urlmon.dll', 'MSIMG32.dll', 'WINHTTP.dll', 'USERENV.dll', 'IPHLPAPI.DLL', 'OLEACC.dll', 'WININET.dll', 'WSOCK32.dll', 'libFFmpeg.dll', 'dxgi.dll', 'DCIMAN32.dll', 'iertutil.dll', 'srvcli.dll', 'netutils.dll', 'Secur32.dll', 'CRYPTBASE.DLL', 'SSPICLI.DLL', 'Riched20.dll', 'USP10.dll', 'msls31.dll', 'WeChatResource.dll', 'MSCTF.dll', 'CRYPTSP.dll', 'rsaenh.dll', 'ondemandconnroutehelper.dll', 'mswsock.dll', 'NSI.dll', 'WINNSI.DLL', 'dhcpcsvc6.DLL', 'dhcpcsvc.DLL', 'DNSAPI.dll', 'wcprobe.dll', 'WINTRUST.dll', 'WTSAPI32.dll', 'MSASN1.dll', 'imagehlp.dll', 'WeUIResource.dll', 'rasadhlp.dll', 'textinputframework.dll', 'CoreMessaging.dll', 'CoreUIComponents.dll', 'ntmarta.dll', 'wintypes.dll', 'Wlanapi.dll', 'napinsp.dll', 'pnrpnsp.dll', 'wshbth.dll', 'NLAapi.dll', 'winrnr.dll', 'wbemprox.dll', 'wbemcomn.dll', 'WindowsCodecs.dll', 'wbemsvc.dll', 'SangforUDProtectEx.dll', 'sangforvpnlibcrypto-1_1.dll', 'fastprox.dll', 'amsi.dll', 'TextShaping.dll', 'fwpuclnt.dll', 'gpapi.dll', 'cryptnet.dll', 'msftedit.dll', 'Windows.Globalization.dll', 'Bcp47Langs.dll', 'bcp47mrm.dll', 'globinputhost.dll', 'dataexchange.dll', 'dcomp.dll', 'twinapi.appcore.dll', 'WINSTA.dll', 'winmmbase.dll', 
'MMDevAPI.DLL', 'DEVOBJ.dll', 'wdmaud.drv', 'ksuser.dll', 'AVRT.dll', 'AUDIOSES.DLL', 'powrprof.dll', 'UMPDC.dll', 'msacm32.drv', 'MSACM32.dll', 'midimap.dll', 'Windows.UI.dll', 'WindowManagementAPI.dll', 'InputHost.dll', 'resourcepolicyclient.dll', 'libruntime_host_export.dll', 'frida-agent.dll']
PS E:\myworks\vscode_workspace\firda_workspace> python -u "e:\myworks\vscode_workspace\firda_workspace\test.py"
['QQ.exe', 'ntdll.dll', 'KERNEL32.DLL', 'KERNELBASE.dll', 'apphelp.dll', 'AcLayers.DLL', 'msvcrt.dll', 'USER32.dll', 'win32u.dll', 'GDI32.dll', 'gdi32full.dll', 'msvcp_win.dll', 'ucrtbase.dll', 'SHELL32.dll', 'SHLWAPI.dll', 'OLEAUT32.dll', 'combase.dll', 'RPCRT4.dll', 'SETUPAPI.dll', 'cfgmgr32.dll', 'bcrypt.dll', 'MPR.dll', 'sfc.dll', 'WINSPOOL.DRV', 'sfc_os.DLL', 'IMM32.DLL', 'ADVAPI32.dll', 'sechost.dll', 'FirstLoad.dll', 'libtcmalloc.dll', 'libuv.dll', 'ole32.dll', 'WS2_32.dll', 'WINTRUST.dll', 'PSAPI.DLL', 'CRYPT32.dll', 'MSVCP140.dll', 'VCRUNTIME140.dll', 'VERSION.dll', 'IPHLPAPI.DLL', 'MSASN1.dll', 'msvcrt20.dll', 'msvcrt40.dll', 'windows.storage.dll', 'Wldp.dll', 'SHCORE.dll', 'HummerEngine.dll', 'Common.dll', 'KernelUtil.dll', 'COMCTL32.dll', 'GF.dll', 'COMDLG32.dll', 'AFUtil.dll', 'AFBase.DLL', 'AppUtil.dll', 'AsyncTask.dll', 'imagehlp.dll', 'NETAPI32.dll', 'zlib.dll', 'libexpat.dll', 'WININET.dll', 'WINHTTP.dll', 'tinyxml.dll', 'WINMM.dll', 'AVICAP32.dll', 'arkFS.dll', 'libcrypto-1_1.dll', 'xImage.dll', 'xGraphic32.dll', 'jsonc.dll', 'arkXML.dll', 'arkIOStub.dll', 'arkImage.dll', 'pcre2.dll', 'urlmon.dll', 'arkGraphic.dll', 'RASAPI32.dll', 'OLEACC.dll', 'USP10.dll', 'trpc_client.dll', 'beacon_sdk.dll', 'POWRPROF.dll', 'gdiplus.dll', 'WTSAPI32.dll', 'sqlite.dll', 'libpng.dll', 'libjpegturbo.dll', 'libimagequant.dll', 'MSIMG32.dll', 'MSVCR100.dll', 'iertutil.dll', 'srvcli.dll', 'netutils.dll', 'MSVFW32.dll', 'rasman.dll', 'VCOMP140.DLL', 'WKSCLI.DLL', 'profapi.dll', 'uxtheme.dll', 'riched20.dll', 'bcryptPrimitives.dll', 'UMPDC.dll', 'DPAPI.DLL', 
'CRYPTBASE.DLL', 'SspiCli.dll', 'kernel.appcore.dll', 'DNSAPI.dll', 'NSI.dll', 'dhcpcsvc6.DLL', 'dhcpcsvc.DLL', 'WINNSI.DLL', 'atlthunk.dll', 'MSCTF.dll', 'arkHttpClient.dll', 'libssl-1_1.dll', 'mswsock.dll', 'QPSection.dll', 'AppMisc.dll', 'AFCtrl.dll', 'UtilGif.dll', 'LongCnn.dll', 'RenderService.dll', 'AppCenter.dll', 'Camera.dll', 'arkIPC.dll', 'PreloginLogic.dll', 'xpng_dll.dll', 'arkSocket.dll', 'msf.dll', 'spdlog.dll', 'abseil_dll.dll', 'Secur32.dll', 'dbghelp.dlNSTA.dll', 'LoginUI.dll', 'MsgMgr.dll', 'AudioVideo.dll', 'RocketApi.dll', 'MediaEngine.dll', 'AsyncSpeechEngine.DLL', 'TRAE.DLL', 'DSOUND.dll', 'winmmbase.dll', 'DocShare.dll', 'NetDisk.dll', 'QQVip.dll', 'minibrowser_shell.dll', 'SNSApp.dll', 'mlang.dll', 'dwmapi.dll', 'Advertisement.dll', 'babyq.dll', 'MobileGame.dll', 'RemoteHelp.dll', 'Weather.dll', 'Rah.1kj', 'Tribe.dll', 'Mail.dll', 'PayCenter.dll', 'Today.dll', 'QInterLive.dll', 'HRTX.dll', 'WenWen.dll', 'QQRing.dll', 'InformationBox.dll', 'AppStore.dll', 'Soso.dll', 'NetBar.dll', 'AdvVideoDev.dll', 'MyCollection.dll', 'HotPic.dll', 'msctfuimanager.dll', 'DUI70.dll', 'DUser.dll', 'UIAutomationCore.dll', 'UIAnimation.dll', 'GameLife.dll', 'ContactInfoFrame.dll', 'MMOG.dll', 'QQGame.dll', 'hmrsdk.dll', 'DEVOBJ.dll', 'Windows.FileExplorer.Common.dll', 'edputil.dll', 'cldapi.dll', 'FLTLIB.DLL', 'appresolver.dll', 'Bcp47Langs.dll', 'SLC.dll', 'sppc.dll', 'QQMusic.dll', 'coml2.dll', 'GFRichControl.dll', 'Winks.dll', 'AddrSearch.dll', 'MSVCIRT.dll', 'IOT.dll', 'AsyncSpeechEngine2.dll', 'directmanipulation.dll', 'xmllite.dll', 'msls31.dll', 'WebCtrl.dll', 'audioses.dll', 'MMDevAPI.DLL', 'WindowsCodecs.dll', 'frida-agent.dll']
'''

andriod server

github下载

frida-server-15.2.2-android-x86

注意自己的架构

 adb push .\frida-server-15.2.2-android-x86 /data/local/tmp/

image-20220809220607543

然后进入adb shell

 cd /data/local/tmp
 chmod 777 frida-server-15.2.2-android-x86
 ./frida-server-15.2.2-android-x86

这样就开启了服务端,现在进行本地的tcp端口转发,将模拟器的27042转发到本地的27042端口

adb forward tcp:27042 tcp:27042

写个本地脚本测试是否成功连接

import frida

remote_dev = frida.get_remote_device()
print(remote_dev)

front_app = remote_dev.get_frontmost_application()
print(front_app)

process = remote_dev.enumerate_processes()
for i in process:
    print(i)

image-20220809221312370

之后的具体使用例子就去各个论坛博客找找吧,反正我用的ts写的脚本,然后编译成js,最后用python调用