180826 逆向-巅峰极客第二场(Reverse)

本文介绍了在逆向工程中遇到的Windows事件Hook技术,讲解了如何通过Hook处理所有消息来实现反调试。分析了GetWindowLongA获取窗口风格和扩展风格的用途,并探讨了通过CreateThread调用者寻找main函数的方法。此外,还提到了通过System("pause")的交叉引用定位main函数,以及如何处理栈指针错误。最后,讨论了动态调试时处理数组和提取flag的技巧。
摘要由CSDN通过智能技术生成

打开以后只有start函数,找不到main函数
但是看得到一个StartAddress
根据经验可以知道这个命名通常是指CreateThread的入口函数
进去看可以发现它设置了一个事件Hook
SetWinEventHook(1u, 0x7FFFFFFFu, 0, pfnWinEventProc, 0, 0, 2u);
查了一下手册,前两个参数表示Hook的消息ID范围,从1~0x7fffffff也就意味着这个pfnWinEventProc会处理所有消息,基本上也就等同于瞬间的死循环了
通常这种线程会作为反调试,来保证进程全程无被附加


调用了两个GetWindowLongA,不知道是干啥的,去查一下
-16 GWL_STYLE 得到窗口风格
-20 GWL_EXSTYLE 得到扩展的窗口风格

进一步加反调试加入关键字
找到了如下示例代码

LONG mStyle = GetWindowLongA(hwnd,GWL_STYLE);
LONG ExtStyle=GetWindowLongA(hwnd,GWL_EXSTYLE);
if(mStyle==0x57c70000&&ExtStyle==0x140)
{
    printf("find od 1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值