静态方法和实例方法的实现方式不一样,代码如下:
class M
class << self
def save(tt,a)
#puts "save #{tt} #{t3}"
puts "save #{tt} #{a}"
end
# def reload(flag)
# puts "reloaded"
# end
def __create_rule_before( method, comment = '', &block)
return if method.to_s=='__create_rule_before'
puts "method= #{method} #{method.class}"
args = M.method(method).arity == 0 ? '' : '(*args)'
puts "args= #{args}"
b_id = "%04x" % block.object_id
old_method_name = :"__previous_#{method}_#{b_id}"
#alias_method old_method_name, method
puts "method= #{old_method_name} #{old_method_name.class}"
define_singleton_method :"__before_#{method}_#{b_id}", &block
# class_eval <<-EOT
# class <<M
# alias old_method_name method
# end
# EOT
a2 = "class << M\nalias :#{old_method_name} :#{method}\nend"
class_eval(a2)
class_eval <<-EOT
class << self
#alias old_method_name method
def #{method}#{args}
__before_#{method}_#{b_id}#{args}
puts "__previous_#{method}_#{b_id}#{args}"
__previous_#{method}_#{b_id}#{args}
end
end
EOT
end
end
M.singleton_methods.each do |name|
#Hook.hook_method name,self
puts self
M.__create_rule_before(name) { |*args| puts "BEFORE SAVE#{args}" }
end
end
M.save 'test me','a'
分享到:
相关推荐
StaticInlineHook
C++Hook(钩子)编程,通过内联汇编,使类成员函数代替全局函数(静态函数)[收集].pdf
hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程hook 教程...
hook api,hook CreateFile,hook CloseHandle,hook ReadFile,hook WriteFile,hook LoadLibrary
HookAPI HookAPI HookAPI HookAPI
IDA 静态分析 + Frida Hook,可以让分析变得更加丝滑。一起学习!本文只对于源码进行学习 ShowFridaCode 导入模块 Frida Hook函数模板 Frida Inline Hook函数模板 打印参数的函数 生成函数Hook代码的函数 生成Inline...
HOOK 系统注册表 HOOK API SYSTEM REGISTRY 文件清单: PHookRegistry.exe HOOK管理主程序 PNtHOOK.dll HOOK API DLL 功能描述: 1. 只针对用户级别的程序API陷井式HOOK, 这里只对以下API进行HOOK: ...
远程hook 远程hook 远程hook 远程hook 远程hook 远程hook
2017-7-01 10:35 1:新增非静态方法hook回调MethodHookParam.thisOnject参数为当前hook类的实例对象,静态方法hook次参数将为NULL 2017-6-30 19:34 1.对编译检查和垃圾回收做了对应的处理 2017-5-16 18:26 1.修复5.0...
这是一个Hook WinSocket的例子,只在原理性述如何Hook API。 直接注入就可以使用了 sdddddddddddddddd
ssdthook
HOOK详细方法
API hook API hook API hook
含内核HOOK 的 easyhook,可用于C#等语言支持
hook,apihook,inlinehook
Hook经典分析 关于QQ Hook的应用 钩子
Windows miniHook hookapi demo
ApiHook 技术大全 ApiHook 技术大全 ApiHook 技术大全
注册表监控程序 该程序的作用是记录系统...Hook API 采用微软detours静态库 "Hook"目录是hook.dll源码 "RegisterMon"目录是界面程序源码,VC6+MFC+Single Document "bin"目录是生成目录 转帖请保留此文件 作者:毕飞
包含3个教程,易语言Hook教程,Hook教学实战等,包含PC2.6 Hook全功能版