近期结合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="")

收获:

  1. 对python 中集合与列表的用法更了解
  2. 对chr ord hex的操作更了解
  3. 对汇编的操作和栈空间更加理解

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);
}
}

收获:

  1. 熟悉ida操作
  2. 了解了高地址与低地址,大端序与小端序,数据存储
  3. c语言指针运用

encode

该题中能分析出对一个char拆成两个bit比较(后来看了官方wp得知为base16)。其中dword_403000里的密文是用int存储的,不懂的我直接一个一个的复制出来的。。。

在官方wp中通过快捷键y设置成int数组,然后再shift + E导出数据

收获:

  1. base16原理
  2. ida操作

a_cup_of_tea

这题自己能够读懂思路,但是没有做出来

是一题把delta改了的TEA算法 但说实话这题没弄明白,同样在xmmword的数据里没弄好

收获:

  1. ida中常用宏定义认识了不少(之后会总结)
  2. ida操作熟悉
posted @   kayoki  阅读(440)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示