170917 逆向-WHCTF(BabyHack)

本文介绍了在WHCTF(武汉站)-Reverse挑战中遇到的EasyHook技术。作者通过分析代码发现,程序使用hook技术替换WriteFile API,实现在调用WriteFile时执行自定义的sub_401080函数。通过对sub_401080和sub_401000的分析,理解了输入处理算法,并最终成功解密得到了正确的字符串。然而,在过程中因对某些细节不够敏感,导致了一些时间的浪费。
摘要由CSDN通过智能技术生成

1625-5 王子昂 总结《2017年9月17日》 【连续第350天总结】
A. XCTF(武汉站)-Reverse
B.

EasyHook

刚开始看这个名字还以为要注入DLL啥的呢(:з」∠)忐忑不安地打开发现结构挺简单:

int __cdecl main(int argc, const char **argv, const char **envp)
{
  int result; // eax@2
  HANDLE FileHandle; // eax@3
  DWORD NumberOfBytesWritten; // [sp+4h] [bp-24h]@3
  char Buffer; // [sp+8h] [bp-20h]@1

  sub_401370(aPleaseInputFla);
  scanf(a31s, &Buffer);
  if ( strlen(&Buffer) == 19 )                  // 输入长度为19
  {
    sub_401220();                               // 将Re_writeFile函数的地址覆盖WriteFile
    FileHandle = CreateFileA(FileName, 0x40000000u, 0, 0, 2u, 0x80u, 0);// 创建文件
    WriteFile(FileHandle, &Buffer, 0x13u, &NumberOfBytesWritten, 0);// 执行WriteFile函数,实际上是Re_writeFile
    sub_401240(&Buffer, &NumberOfBytesWritten); // 比较函数(伪)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值