近期结合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 @ 2023-01-15 18:05  kayoki  阅读(523)  评论(0)    收藏  举报