|
|
[原创]利用StrongOD漏洞反调试
Ollydbg,无法在RVA=0的地方下CC断点 AddressOfEntryPoint =0这个问题,基本上很难处理 不过,对于PE里面AddressOfEntryPoint = 0,这个配置,实在太特殊了,反过来说,也很好解决啊 另外,如果DLL的AddressOfEntryPoint = 0,DllMain无法执行 所以感觉关系不大,就没去处理这个 处理方法也有,不过感觉没啥意义,就是在RVA=0的地方下硬件执行断点,就可以断下来了 |
|
|
[招聘]畅游百万年薪诚聘顶级安全专家
畅游还在招人? |
|
|
|
|
|
[原创]原创读写锁,求测试
个人认为还不错的共享锁架构 可以解决31楼说的空转问题,依然不建议重入
// 读写锁
#if !defined(_WIN32) && !defined(_WIN64)
# include <pthread.h>
typedef pthread_mutex_t Lock_type;
typedef pthread_cond_t WaitCondition;
typedef pthread_t ThreadHandle;
# define lock_init(x) pthread_mutex_init(&(x), NULL)
# define lock_grab(x) pthread_mutex_lock(&(x))
# define lock_release(x) pthread_mutex_unlock(&(x))
# define lock_destroy(x) pthread_mutex_destroy(&(x))
# define cond_init(x) pthread_cond_init(&(x), NULL)
# define cond_destroy(x) pthread_cond_destroy(&(x))
# define cond_signal(x) pthread_cond_signal(&(x))
# define cond_timedwait(x,y,z) pthread_cond_timedwait(&(x),&(y),z)
# define cond_wait(x,y) pthread_cond_wait(&(x),&(y))
# define sem_init(x) pthread_cond_init(&(x), NULL)
# define sem_destroy(x) pthread_cond_destroy(&(x))
# define sem_signal_one(x) pthread_cond_signal(&(x))
# define sem_signal_all(x) pthread_cond_broadcast(&(x))
# define sem_timedwait(x,y,z) pthread_cond_timedwait(&(x),&(y),z)
# define sem_wait(x,y) pthread_cond_wait(&(x),&(y))
# define thread_create(x,f,id) !pthread_create(&(x),NULL,(void* (*)(void*))f,&(id))
# define thread_join(x) pthread_join(x, NULL)
#else
#include <Windows.h>
#include <limits.h>
typedef CRITICAL_SECTION Lock_type;
typedef HANDLE WaitCondition;
typedef HANDLE ThreadHandle;
#define lock_init(x) InitializeCriticalSection(&(x))
#define lock_grab(x) EnterCriticalSection(&(x))
#define lock_release(x) LeaveCriticalSection(&(x))
#define lock_destroy(x) DeleteCriticalSection(&(x))
#define cond_init(x) { x = CreateEvent(0, FALSE, FALSE, 0); }
#define cond_destroy(x) CloseHandle(x)
#define cond_signal(x) SetEvent(x)
#define cond_timedwait(x,y,z) { lock_release(y); WaitForSingleObject(x,z); lock_grab(y); }
#define cond_wait(x,y) { cond_timedwait((x), (y), INFINITE); }
#define sem_init(x) { x = CreateSemaphore(0, 0, LONG_MAX, 0); }
#define sem_destroy(x) { CloseHandle((x)); }
#define sem_signal(x,y) { ReleaseSemaphore((x), (y), 0); }
#define sem_signal_one(x) { sem_signal((x), 1); }
#define sem_signal_all(x) { sem_signal((x), LONG_MAX); }
#define sem_timedwait(x,y,z) { lock_release((y)); WaitForSingleObject((x), (z));lock_grab((y)); }
#define sem_wait(x,y) { sem_timedwait((x), (y), INFINITE); }
#define thread_create(x,f,t) (x = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)f,(&t),0,NULL), x != NULL)
#define thread_join(x) { WaitForSingleObject(x, INFINITE); CloseHandle(x); }
#endif
typedef struct _swrlock_type
{
// 互斥锁
Lock_type lock;
// 共享等待信号量
WaitCondition shared_cond;
// 独占等待信号量
WaitCondition exclusive_cond;
// 共享锁数目
int shared_count;
// 独占锁等待数目
int exclusive_wait_count;
// 是否独占状态
bool exclusive;
}swrlock_type;
static void srwlock_init(swrlock_type* swrlock)
{
lock_init(swrlock->lock);
sem_init(swrlock->shared_cond);
sem_init(swrlock->exclusive_cond);
swrlock->shared_count = 0;
swrlock->exclusive_wait_count = 0;
swrlock->exclusive = false;
}
static void srwlock_destroy(swrlock_type* swrlock)
{
sem_destroy(swrlock->exclusive_cond);
sem_destroy(swrlock->shared_cond);
lock_destroy(swrlock->lock);
}
static void srwlock_shared_grab(swrlock_type* swrlock)
{
lock_grab(swrlock->lock);
while(swrlock->exclusive || swrlock->exclusive_wait_count)
{
sem_wait(swrlock->shared_cond, swrlock->lock);
}
swrlock->shared_count ++;
lock_release(swrlock->lock);
}
static void srwlock_shared_release(swrlock_type* swrlock)
{
bool noshared;
lock_grab(swrlock->lock);
noshared = !(-- swrlock->shared_count);
if(noshared)
{
sem_signal_one(swrlock->exclusive_cond);
sem_signal_all(swrlock->shared_cond);
}
lock_release(swrlock->lock);
}
static void srwlock_exclusive_grab(swrlock_type* swrlock)
{
lock_grab(swrlock->lock);
swrlock->exclusive_wait_count ++;
while(swrlock->exclusive || swrlock->shared_count)
{
sem_wait(swrlock->exclusive_cond, swrlock->lock);
}
swrlock->exclusive_wait_count --;
swrlock->exclusive = true;
lock_release(swrlock->lock);
}
static void srwlock_exclusive_release(swrlock_type* swrlock)
{
lock_grab(swrlock->lock);
swrlock->exclusive = false;
sem_signal_one(swrlock->exclusive_cond);
sem_signal_all(swrlock->shared_cond);
lock_release(swrlock->lock);
}
|
|
|
|
|
|
|
|
|
[原创]原创读写锁,求测试
我给个我写的windows平台下精简版的SRWLock 不支持重入
#pragma pack(push, 8)
typedef struct _MYSRWLOCK
{
CRITICAL_SECTION csWriter;
void* pSharedCount;
} MYSRWLOCK;
typedef MYSRWLOCK *PMYSRWLOCK;
#pragma pack(pop)
static void MyInitializeSRWLock(PMYSRWLOCK srwlock)
{
InitializeCriticalSectionAndSpinCount(&srwlock->csWriter, 0xFA0);
srwlock->pSharedCount = _aligned_malloc(sizeof(LONG), MEMORY_ALLOCATION_ALIGNMENT);
_InterlockedExchange((volatile LONG*)srwlock->pSharedCount, 0);
}
static void MyFreeSRWLock(PMYSRWLOCK srwlock)
{
DeleteCriticalSection(&srwlock->csWriter);
_aligned_free(srwlock->pSharedCount);
}
class SRWLockShared
{
public:
static void Acquire(PMYSRWLOCK srwlock)
{
EnterCriticalSection(&srwlock->csWriter);
_InterlockedIncrement((volatile LONG*)srwlock->pSharedCount);
LeaveCriticalSection(&srwlock->csWriter);
}
static void Release(PMYSRWLOCK srwlock)
{
_InterlockedDecrement((volatile LONG*)srwlock->pSharedCount);
}
SRWLockShared(PMYSRWLOCK srwlock) : m_srwlock(srwlock)
{
Acquire(m_srwlock);
}
~SRWLockShared()
{
Release(m_srwlock);
}
private:
PMYSRWLOCK m_srwlock;
};
class SRWLockExclusive
{
public:
static void Acquire(PMYSRWLOCK srwlock)
{
EnterCriticalSection(&srwlock->csWriter);
while(_InterlockedCompareExchange((volatile LONG*)srwlock->pSharedCount, -1, 0) != 0);
}
static void Release(PMYSRWLOCK srwlock)
{
_InterlockedIncrement((volatile LONG*)srwlock->pSharedCount);
LeaveCriticalSection(&srwlock->csWriter);
}
SRWLockExclusive(PMYSRWLOCK srwlock) : m_srwlock(srwlock)
{
Acquire(m_srwlock);
}
~SRWLockExclusive()
{
Release(m_srwlock);
}
private:
PMYSRWLOCK m_srwlock;
};
用法:
MYSRWLOCK m_lock;
初始化
MyInitializeSRWLock(&m_lock);
销毁
MyFreeSRWLock(&m_lock);
共享锁
{
SRWLockShared lock(&m_lock);
}
互斥锁
{
SRWLockExclusive lock(&m_lock);
}
|
|
|
[原创]原创读写锁,求测试
NT6的那个读写锁,MSDN里面写了,不支持重入 读写锁重入,非常容易死锁 其实,普通锁也不应该设计成可重入,如果应用层需要锁重入,那还是重新设计应用层吧,锁重入,出BUG的可能性要增加至少80% 不支持锁重入是应该的,其实我个人认为,非特殊应用,连try都可以避免掉 linux没有TLS吧? 隐藏BUG,就是指根本说不出来的BUG,以前碰到过很多,后来换了架构,就没有了。设计锁这个东西,逻辑越复杂,BUG越难找 |
|
|
[原创]原创读写锁,求测试
1,实现代码太长,隐藏BUG比较多 2,没有timeout的TryxxxLock是没太大意义 3,不能跨平台 4,win7开始,系统有读写锁实现 5,boost库里面也有读写锁 |
|
|
[分享]没有内容
其实大家不要破解,大家都要bin |
|
|
[原创]Anti StrongOD Kernel Mode
那个key就是防止你找到设备名,胡乱通信的 |
|
|
|
|
|
[原创]调戏:NProtect GameGuard ini配置的破解
不是key的问题,是整个更新模式,几年前就已经被anti了 |
|
|
[原创]调戏:NProtect GameGuard ini配置的破解
已经失效了,你才放出来 |
|
|
[原创]ccproxy密码破解
67aK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0y4H3M7X3!0^5P5g2)9J5k6i4u0#2i4K6u0r3k6r3!0%4L8X3I4G2j5h3c8Q4x3V1j5`. 谁说only for linux windows一直用得很好 |
|
|
|
|
|
|
|
|
[原创]迎国庆<RFID & NFC 之自制NFC手表>
擦。解压不了,顺手删了 |
|
|
[原创]迎国庆<RFID & NFC 之自制NFC手表>
[QUOTE=半斤八兩;1225772] ![]() 附件一直传不上来, 先占个坑 每次都是到 98% 的时候,就挂掉了. 推荐百度网盘 |
|
|
[讨论]CVE-2012-4220之利用
sys_setresuid和sys_setresgid,还有delayed_resp_id地址,是怎么找到的? |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
勋章
兑换勋章
证书
证书查询 >
能力值
