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

分析

  1. v11 经过大小写转换 到达v11
  2. v11 再经过 sub_4013C0函数转换到 v5
  3. v5 再经过异或byte_4420B0数组 到 v7
  4. v7GONDPHyGjPEKruv{{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出现下面这种情况的话,

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

  1. 打开视图

  2. 点击程序资源管理器

    然后就出现左边这样的

下面进入正文


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

flag{967DDDFBCD32C1F53527C221D9E40A0B}

IgniteMe debug 寒假逆向生涯(2/100)相关推荐

  1. easyre-153 testre寒假逆向生涯(13/100)

    easyre-153 简单题目,流程走起,首先查壳, 脱壳 upx壳,利用工具把它脱掉 ida静态分析 int __cdecl main(int argc, const char **argv, co ...

  2. notsequence 寒假逆向生涯(9/100)

    notsequence 这题目,挺简单的,首先无壳,直接拖进ida,然后查看了一下伪代码 轻易发现只需要满足三点就行 sub_80486CD((int)&unk_8049BE0) (unsig ...

  3. secret-galaxy-300 Replace(印象深刻) 寒假逆向生涯(8/100)

    secret-galaxy-300 脑洞题,直接没说法,就以后别碰这种脑洞题就行,,,,没任何帮助 显示界面 OD打开后,显示这个鬼东西.然后就没了. ida静态分析 看到上方输出框有字符串,所以我们 ...

  4. HWS计划 decryption 寒假逆向生涯(17/100)

    decryption 前奏 没法搞,直接拖ida 全局 首先输入flag,然后一个if判断一下长度是否符合,不符合直接结束 然后再new处一个数组,接着一个加密函数,把加密后的存放在new出来的数组里 ...

  5. easy_Maze 梅津美治郎 寒假逆向生涯(16/100)

    easy_Maze 这个题简单,迷宫题目,需要动调,或者不用动调也行,可以自己算出地图,我用的是动调. 生成地图的两个函数 只需要动调到这两个函数的下一步后,找到储存矩阵的空间的地址, 把这个地址转到 ...

  6. babymips(下) 寒假逆向生涯(14/100)

    babymips上 主要核心代码 var_10= -0x10 var_8= -8 var_4= -4 arg_0= 0addiu $sp, -0x28 sw $ra, 0x28+var_4($sp) ...

  7. babymips(上) 寒假逆向生涯(14/100)

    babymips 这题呢,看名字就知道,不出所料,还是mips指令,挺简单的,懒得找插件,直接分析吧,锻炼锻炼自己 开战 lui $v0, 0x40 addiu $a0, $v0, (aGiveMeY ...

  8. deedeedee crazy 寒假逆向生涯(11/100)

    deedeedee 这题没说法...直接用notepad++打开第二个文件,然后就看到了flag....人傻了... flag{t3mplat3_met4pr0gramming_is_gr8_4_3v ...

  9. re-for-50-plz-50 寒假逆向生涯(6/100)

    re-for-50-plz-50 这题目属实没法看伪代码(当然,可以下载插件进行一系列帮助),在这里呢,我直接读mips的指令集,因为涉及到的指令挺简单的 MIPS32指令集对照 全部指令 .text ...

最新文章

  1. Mac上Homebrew的使用
  2. 我长了一条日本制的尾巴:智能配合身体运动,增强平衡感,把我变成“改造人”| SIGGRAPH...
  3. 北斗导航 | 坐标转换:ECEF转LLA:GPS坐标系:WGS84(matlab代码)
  4. java list断点续传_java实现文件断点续传下载功能
  5. ubunto用户切换
  6. 重写(override / overwrite)
  7. AUTOSAR从入门到精通100讲(四十四)-AUTOSAR诊断实现
  8. oracle 用户管理
  9. 从RTS游戏看游戏开发-2
  10. 小狼毫[rime_win][眀月拼音]简单配置方法
  11. Spring学习笔记4
  12. 快手 (kuaishou.net) 2.6 发布
  13. 操作系统原理,物理内存“扩充”技术,内存紧缩,覆盖,交换,虚拟内存思想
  14. JQuery中$(document)和$(window)是什么意思,有什么作用
  15. Market1501数据集介绍及相关代码
  16. 关于图像显著性(MR)matlab代码详解
  17. python 画ks曲线_Ks密度曲线分布图绘图
  18. Win11磁盘空间不足怎么清理?Win11清理磁盘空间的方法
  19. C语言 “吞字符” 加不加‘\n‘ ---- #145. 最长的名字
  20. 十年后,我终于读懂了紫霞那滴留在至尊宝心中的泪

热门文章

  1. 计算机上检查视力表,视力检测(30cm视力表自测)
  2. 成功解决 pypmml.base.PmmlError: (‘PmmlException‘, ‘Not a valid PMML‘)
  3. CV:翻译并解读2019《A Survey of the Recent Architectures of Deep Convolutional Neural Networks》第一章~第三章
  4. DL之Attention:Attention注意力机制的简介、应用领域之详细攻略
  5. Py:利用pyautogui实现自动将pdf文件(需手动设定pdf总页数)自动翻页并截取另存为图片形式,或自动隔0.1秒自动截笔记本全屏保存到指定文件夹
  6. 自动微分(Automatic Differentiation)
  7. 【LOJ】#2014. 「SCOI2016」萌萌哒
  8. document对象相关信息
  9. NYOJ 108士兵杀敌(一)
  10. 在win8.1 64位系统+cocos2d-x2.2.3下搭建android交叉编译环境