能力值:
( LV2,RANK:10 )
|
-
-
2 楼
lanbda都用上了 先进啊
已star 有空玩玩
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
67fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6c8K9h3&6Y4h3i4g2F1i4K6u0r3N6s2u0S2j5$3g2J5i4K6u0r3j5X3I4G2j5W2)9J5c8X3#2S2M7%4c8W2M7W2)9J5c8Y4c8J5j5h3y4W2M7W2)9J5c8X3S2G2L8$3E0Q4y4h3k6A6L8i4m8D9i4K6u0W2j5%4m8H3i4K6t1K6e0o6t1K6
这里进程就没必要比较了吧
其实如果是hook第三方进程,挂起所有线程出问题的概率比全部不挂起还要高,感脚怎么着都不完美,真是一种蛋蛋的忧伤啊 原来有一丝心痛叫做无奈
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
还有,我看你的代码,是每hook一处地方就提交一次
364K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6c8K9h3&6Y4h3i4g2F1i4K6u0r3N6s2u0S2j5$3g2J5i4K6u0r3j5X3I4G2j5W2)9J5c8X3#2S2M7%4c8W2M7W2)9J5c8Y4c8J5j5h3y4W2M7W2)9J5c8Y4c8J5j5h3y4W2i4K6u0W2K9s2m8H3i4K6t1K6e0o6p5H3y4b7`.`.
这样的话,挂起线程安装钩子那出问题的几率又增加了很多啊,而且性能还稍有影响
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
boost和c++11用得很熟练啊,膜拜一下
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
没考虑性能, 因为这个库没打算用在发布版本中
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
原来有一丝心.. 感觉好熟悉
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
 Singleton:
#ifndef __UTILITY_SINGLETON_HPP__
#define __UTILITY_SINGLETON_HPP__
#include <boost/scoped_ptr.hpp>
#include <boost/thread/once.hpp>
#include <boost/noncopyable.hpp>
namespace core {
template <class T>
class Singleton : private boost::noncopyable
{
public:
static T& GetInstance()
{
boost::call_once(init, flag_);
return *t_;
}
static void init() // never throws
{
static delete_helper<T> helper;
helper.ptr = t_ = new T();
}
static T* GetInstancePtr()
{
boost::call_once(init, flag_);
return t_;
};
protected:
~Singleton() {}
Singleton() {}
private:
template<class M>
struct delete_helper
{
delete_helper()
{
ptr = NULL;
}
~delete_helper()
{
delete ptr;
}
M* ptr;
};
static T* t_;
static boost::once_flag flag_;
};
template<class T> T * Singleton<T>::t_ = NULL;
template<class T> boost::once_flag Singleton<T>::flag_ = BOOST_ONCE_INIT;
}// namespace core
#endif//__UTILITY_SINGLETON_HPP__
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
感觉有点复杂。这是俺的实现。
boost::function<BOOL(HANDLE, LPVOID, DWORD, LPDWORD, LPOVERLAPPED> ReadFileAPI =
sCoreHook.HookAPI<BOOL(HANDLE, LPVOID, DWORD, LPDWORD, LPOVERLAPPED)>("Kernel32.dll", "ReadFile", boost::bind(&Handler::ReadFileHandler, this, _1, _2, _3, _4, _5));
|
能力值:
( LV3,RANK:20 )
|
-
-
10 楼
呵呵 我那个复杂的是库里的类型推导, 用户实际用的接口上是不用自己手敲一遍函数签名的
|
|
|