XNUCA2020-re
目录
unravelmfc
flag长度66(输入66长度字符才能点击确定)点确定没反应,只有flag正确才会弹框
首先使用下面的mfc的sig文件:
http://s.wjk.moe/bt/tmp/unravelmfc/afx140d.sig
在CCmdTarget::OnCmdMsg
函数内部, 调用_AfxDispatchCmdMsg
的call指令下断点,再点确定,即可在栈参数中找到对应的处理函数指针
MFC逆向
0x00CB1080 点确定后的处理函数 (程序基址我rebase到了0x00b10000)
00CB127C 是flag正确
直接看最下面的if,里面调用的两个函数。前33字符和后33字符分开判断检测。
|
|
前33字节首先RC4,再base64
|
|
base64是改了字符表的,在一个rc4加密的代码段里,x64dbg里将内存dump出来放到ida里用f5还勉强能看吧
|
|
前半部分flag就出来了。。。
后33字符:第一个字符是f,后面三十二个字符单独加密
是tea算法,只改了delta。
需要解一个方程解出来是[0x2d46347f5e79f6f4, 0xDF3634AE2F9970FF, 0x6cacebd512c2fc6d, 0xe8e95dc6c558d3ec]
|
|
hellowasm
需要用node起一下直接点开不行
|
|
长度是42
这里可以直接用浏览器调试,还比较方便。
然后做了个base64, 每四个字符一组,异或[0xa, 0xb, 0xc, 0xd]
最后check的部分是个vm,算法是简单异或。
一点点分析的过程,分析了一点以后直接在异或和比较的函数下了断点发现算法其实比较简单。
|
|
|
|
babyarm
主要验证部分在sub_114D8
, xxtea稍微改了一点,一次加密了16轮…长度也是16
|
|