欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

IgniteMe debug 寒假逆向生涯(2/100)

发布时间:2025/3/21 编程问答 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 IgniteMe debug 寒假逆向生涯(2/100) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

IgniteMe

声明

这是道超级简单的题目,就不重复啰嗦了,找到需要加密的关键代码后,直接一步到位。

memset(&v4, 0xCCu, 0xF4u);if ( strlen(a1) > 4 ){j = 4;for ( i = 0; ; ++i ){v2 = strlen(a1);if ( j >= v2 - 1 )break;v11[i] = a1[j++];}v11[i] = 0;v8 = 0;v6 = 0;memset(v7, 0, 0x20u);for ( j = 0; ; ++j ){v3 = strlen(v11);if ( j >= v3 )break;if ( v11[j] >= 97 && v11[j] <= 122 ){v11[j] -= 32;v6 = 1;}if ( !v6 && v11[j] >= 65 && v11[j] <= 90 )v11[j] += 32;v5 = sub_4013C0(v11[j]);v7[j] = byte_4420B0[j] ^ v5;v6 = 0;}result = strcmp("GONDPHyGjPEKruv{{pj]X@rF", v7) == 0;}else{result = 0;}return result; }

分析

  • v11 经过大小写转换 到达v11
  • v11 再经过 sub_4013C0函数转换到 v5
  • v5 再经过异或byte_4420B0数组 到 v7
  • v7 和 GONDPHyGjPEKruv{{pj]X@rF 比较 是否相同
  • 解释一下上面的一些代码操作,
    j=4是因为前面还有四个字符,EIS{所以数组应该从索引4开始,数组索引0,1, 2,3分别对应EIS{
    j >= v2 - 1是因为 数组最后一个是 }

    中间的主要信息才是我们需要加密的flag,所以j的范围变成这样

    分析四条反推回去,数组已知

    接下来上逆向代码

    #include <iostream> using namespace std; int main() {int a[] = { 0xD,0x13,0x17,0x11,0x2,0x1,0x20,0x1D,0xC,0x2,0x19,0x2F,0x17,0x2B,0x24,0x1F,0x1E,0x16,0x9,0xF,0x15,0x27,0x13,0x26,0x0A,0x2F,0x1E,0x1A,0x2D,0x0C,0x22,0x4 };char b[] = {"GONDPHyGjPEKruv{{pj]X@rF"};char c[24];int j;for (int i = 0; i < 24; i++) {j = a[i] ^ b[i];c[i] = (j - 72) ^ 0x55;if (c[i] >= 65 && c[i] <= 90)c[i] += 32;else if(c[i] >= 97 && c[i] <= 122)c[i] -= 32;cout << c[i];} }

    debug

    声明

    这是一道超级简单的题目,最主要说说我这个脑残历程。。。

    如果大家以后dnSpy出现下面这种情况的话,

    没有程序资源管理器,只需要如下操作即可

  • 打开视图

  • 点击程序资源管理器

    然后就出现左边这样的

  • 下面进入正文


    这个题的话,直接用来判断输入是否和flag(即b值)相同即可,所以直接一个断点到判断上方,即可查看b值

    flag{967DDDFBCD32C1F53527C221D9E40A0B}

    总结

    以上是生活随笔为你收集整理的IgniteMe debug 寒假逆向生涯(2/100)的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。