180207 逆向-Frida入门(1)

1625-5 王子昂 总结《2018年2月7日》 【连续第495天总结】
A. Frida入门
B.
在Windows下的Hook框架似乎没什么出名的,仅有的一些例如EasyHook、微软提供的API和detour库都是API级别的

而对于当前目的以做题为主的我来说,INS指令级别的Hook才是更需要的—毕竟拿到的程序很大可能关键部分都是自写的函数、甚至只是一个结构块

于是想起了已经在Android平台使用的Frida,这是一个全平台,包括Windows、Linux、Android、iOS等等都可使用的框架

它的原理是在需要Hook的平台上开启一个服务器,然后服务器通过ptrace调试目标进程,另一方面客户端脚本将核心代码传给服务器,服务器进行Hook

脚本方面似乎使用C、Python、Switch都可以,而核心代码必须使用js
正好借此契机去好好学下js啦~

首先安装,py2和3下面都有,各自用pip安装即可
值得一提的是以前用的是py2,版本是2.7.13c,正常使用
这次刚开始py3跑的是3.5.2,安装后import frida会报

Failed to load the Frida native extension: DLL load failed: 找不到指定的模块
查了一下发现是frida开发者更新太勤了外加死脑筋,模块中硬编码要求导入python36.dll,而在3.5版本下仅有python35.dll,于是报错

解决方法为:

  • 安装python3.6版本
  • 搜索并改变Frida模块中要求为python36.dll的代码,将其修正为对应的版本文件

后者有可能会导致一些不可预料的错误,毕竟跟编译版本不同。所以乖乖更新了python233

导入以后在python直接可以使用一些简单的API:

import frida
session = frida.attach("notepad.exe")
print([x.name for x in session.enumerate_modules()])

[‘notepad.exe’, ‘ntdll.dll’, ‘KERNEL32.DLL’, ‘KERNELBASE.dll’, ‘ADVAPI32.dll’, ‘msvcrt.dll’, ‘sechost.dll’, ‘RPCRT4.dll’, ‘GDI32.dll’, ‘USER32.dll’, ‘combase.dll’, ‘OLEAUT32.dll’, ‘COMDLG32.dll’, ‘shcore.dll’, ‘SHLWAPI.dll’, ‘SHELL32.dll’, ‘COMCTL32.dll’, ‘windows.storage.dll’, ‘kernel.appcore.dll’, ‘powrprof.dll’, ‘profapi.dll’, ‘WINSPOOL.DRV’, ‘bcrypt.dll’, ‘IMM32.DLL’, ‘MSCTF.dll’, ‘bcryptPrimitives.dll’, ‘uxtheme.dll’, ‘dwmapi.dll’, ‘ole32.dll’, ‘clbcatq.dll’, ‘sogoutsf.ime’, ‘MSIMG32.dll’, ‘VERSION.dll’, ‘SogouPy.ime’, ‘OLEACC.dll’, ‘ntmarta.dll’, ‘Resource.dll’, ‘PSAPI.DLL’, ‘PicFace64.dll’, ‘frida-agent-64.dll’, ‘WS2_32.dll’, ‘NSI.dll’, ‘WINMM.dll’, ‘DNSAPI.dll’, ‘WINMMBASE.dll’, ‘cfgmgr32.dll’, ‘DEVOBJ.dll’]

而且效率很高,毕竟因为是注入原理的。

明天对应文档尝试在指定地址处Hook, 计数和读取参数

C. 明日计划
Frida入门

你可能感兴趣的:(各种工具,CTF)