[转组第4天] | DDCTF的re3和re4

2018-04-27

  被隐藏的真实:(参考夜影大佬的wp)

  这是一个跟比特币相关的题目,总共分三小关,第一小关很容易跟到是小字节序DEADBEEF,第二关是是base58解码地址,第三关是脑洞题,创世区块的头信息,正好长度是80,把创世区块输入得到flag。

  探寻逝去的Atlantis文明(参考夜影大佬的wp)

  主要考察的是反调试,直接运行OD或IDA会无法触发EP断点,也不能正常关闭。查看export发现有Tlscallback函数。TLS回调函数是指,每当创建/终止进程的的线程时会自动调用执行的函数(前后共调用两次)。创建进程的主线程时也会自动调用回调函数,且其调用执行先于EP代码。而且在第一个Tlscallback里会调用SetInformationThread函数的ThreadHideFromDebugger(17)参数,反调试。将其跳过,还会有一个IsdebuggerPresent函数检测是否为反调试,如果是返回1,exitProcess。第二个Tlscallback主要是打印一个Messagebox没有反调试。将这两个过掉,后面还有一个反调试IsdebuggePresent可以一样过掉。然后代码的主要逻辑是:

  输入flag,通过base64加密成一个24位长字符串,作为GlobalAtom的name,然后根据预存字符串建立一个table,按一定逻辑取table中指定位置的ascii值与GlobalAtomName做抑或操作,最后与另一个预存字符串比较。

  所以求解的逻辑就是,获取table指定位置的ascii值与预存字符串做抑或,得到GlobalAtomName,再通过Base64解码得到flag。

  总结:

    TlsCallBack反调试,SetInformationThread(17)

    这几个题就第二题算正常题,硬核题。

  明天预计:

    听天枢分享

原文地址:https://www.cnblogs.com/nww-570/p/8969976.html