近期结合hgame心得体会
结合官方wp和自己的做题情况,想写点东西 记录下。通过week1 的题目,以题代学,什么不会什么不懂就去学啥,也学到了不少东西
week1 re做了四题 官方wp里有些操作写的轻轻松松而自己却要花很多时间去学再去实践,可以 将里面的一些东西记下来
easyasm
从ida⾥直接复制出来的汇编,嫌看着丑可以⽤vscode打开,然后装个assembly插件就可以有代码⾼
亮(以后都可以这么干)
首先这里将str值入栈,计算了str的长度 ,而后
获取了str的地址
并且读取了str[i] 所以可以看出其核心是将str数组全部异或0x33
a=[0x5b,0x54,0x52,0x5e,0x56,0x48,0x44,0x56,0x5f,0x50,0x3,0x5e,0x56,0x6c,0x47,0x3
a=[0x5b,0x54,0x52,0x5e,0x56,0x48,0x44,0x56,0x5f,0x50,0x3,0x5e,0x56,0x6c,0x47,0x3,0x6c,0x41,0x56,0x6c,0x44,0x5c,0x41,0x2,0x57,0x12,0x4e] for i in a: print(chr(i^0x33,end="")
收获:
- 对python 中集合与列表的用法更了解
- 对chr ord hex的操作更了解
- 对汇编的操作和栈空间更加理解
easyenc
在ida中打开 能够分析出将读入的v10与0x32异或后-86与v5对比,其中有一些tips在官方wp中提到
如果看不出来scanf将flag读到了哪里,可以双击进入函数,再返回main(快捷键esc),再按一次F5,就能自动分析了,这种情况是因为ida的分析策略比较懒
然后可以通过更改数据类型简化分析
对其中的变量修改类型,对着要修改的变量按快捷键y,输入要改的变量类型;按n改变变量名。
然后是解密代码时候可以直接复制数组,在c语言里,可以不用管这些数据是如何转成char的
int main(){ int v8[11]; v8[0] = 167640836; v8[1] = 11596545; v8[2] = -1376779008; v8[3] = 85394951; v8[4] = 402462699; v8[5] = 32375274; v8[6] = -100290070; v8[7] = -1407778552; v8[8] = -34995732; v8[9] = 101123568; v8[10] = -7; char* p = v8; for (int i = 0; i < 41; i++){ putchar((p[i] + 86) ^ 0x32); } }
收获:
- 熟悉ida操作
- 了解了高地址与低地址,大端序与小端序,数据存储
- c语言指针运用
encode
该题中能分析出对一个char拆成两个bit比较(后来看了官方wp得知为base16)。其中dword_403000里的密文是用int存储的,不懂的我直接一个一个的复制出来的。。。
在官方wp中通过快捷键y设置成int数组,然后再shift + E导出数据
收获:
- base16原理
- ida操作
a_cup_of_tea
这题自己能够读懂思路,但是没有做出来
是一题把delta改了的TEA算法 但说实话这题没弄明白,同样在xmmword的数据里没弄好
收获:
- ida中常用宏定义认识了不少(之后会总结)
- ida操作熟悉
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构