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)相关推荐
- easyre-153 testre寒假逆向生涯(13/100)
easyre-153 简单题目,流程走起,首先查壳, 脱壳 upx壳,利用工具把它脱掉 ida静态分析 int __cdecl main(int argc, const char **argv, co ...
- notsequence 寒假逆向生涯(9/100)
notsequence 这题目,挺简单的,首先无壳,直接拖进ida,然后查看了一下伪代码 轻易发现只需要满足三点就行 sub_80486CD((int)&unk_8049BE0) (unsig ...
- secret-galaxy-300 Replace(印象深刻) 寒假逆向生涯(8/100)
secret-galaxy-300 脑洞题,直接没说法,就以后别碰这种脑洞题就行,,,,没任何帮助 显示界面 OD打开后,显示这个鬼东西.然后就没了. ida静态分析 看到上方输出框有字符串,所以我们 ...
- HWS计划 decryption 寒假逆向生涯(17/100)
decryption 前奏 没法搞,直接拖ida 全局 首先输入flag,然后一个if判断一下长度是否符合,不符合直接结束 然后再new处一个数组,接着一个加密函数,把加密后的存放在new出来的数组里 ...
- easy_Maze 梅津美治郎 寒假逆向生涯(16/100)
easy_Maze 这个题简单,迷宫题目,需要动调,或者不用动调也行,可以自己算出地图,我用的是动调. 生成地图的两个函数 只需要动调到这两个函数的下一步后,找到储存矩阵的空间的地址, 把这个地址转到 ...
- babymips(下) 寒假逆向生涯(14/100)
babymips上 主要核心代码 var_10= -0x10 var_8= -8 var_4= -4 arg_0= 0addiu $sp, -0x28 sw $ra, 0x28+var_4($sp) ...
- babymips(上) 寒假逆向生涯(14/100)
babymips 这题呢,看名字就知道,不出所料,还是mips指令,挺简单的,懒得找插件,直接分析吧,锻炼锻炼自己 开战 lui $v0, 0x40 addiu $a0, $v0, (aGiveMeY ...
- deedeedee crazy 寒假逆向生涯(11/100)
deedeedee 这题没说法...直接用notepad++打开第二个文件,然后就看到了flag....人傻了... flag{t3mplat3_met4pr0gramming_is_gr8_4_3v ...
- re-for-50-plz-50 寒假逆向生涯(6/100)
re-for-50-plz-50 这题目属实没法看伪代码(当然,可以下载插件进行一系列帮助),在这里呢,我直接读mips的指令集,因为涉及到的指令挺简单的 MIPS32指令集对照 全部指令 .text ...
最新文章
- Mac上Homebrew的使用
- 我长了一条日本制的尾巴:智能配合身体运动,增强平衡感,把我变成“改造人”| SIGGRAPH...
- 北斗导航 | 坐标转换:ECEF转LLA:GPS坐标系:WGS84(matlab代码)
- java list断点续传_java实现文件断点续传下载功能
- ubunto用户切换
- 重写(override / overwrite)
- AUTOSAR从入门到精通100讲(四十四)-AUTOSAR诊断实现
- oracle 用户管理
- 从RTS游戏看游戏开发-2
- 小狼毫[rime_win][眀月拼音]简单配置方法
- Spring学习笔记4
- 快手 (kuaishou.net) 2.6 发布
- 操作系统原理,物理内存“扩充”技术,内存紧缩,覆盖,交换,虚拟内存思想
- JQuery中$(document)和$(window)是什么意思,有什么作用
- Market1501数据集介绍及相关代码
- 关于图像显著性(MR)matlab代码详解
- python 画ks曲线_Ks密度曲线分布图绘图
- Win11磁盘空间不足怎么清理?Win11清理磁盘空间的方法
- C语言 “吞字符” 加不加‘\n‘ ---- #145. 最长的名字
- 十年后,我终于读懂了紫霞那滴留在至尊宝心中的泪
热门文章
- 计算机上检查视力表,视力检测(30cm视力表自测)
- 成功解决 pypmml.base.PmmlError: (‘PmmlException‘, ‘Not a valid PMML‘)
- CV:翻译并解读2019《A Survey of the Recent Architectures of Deep Convolutional Neural Networks》第一章~第三章
- DL之Attention:Attention注意力机制的简介、应用领域之详细攻略
- Py:利用pyautogui实现自动将pdf文件(需手动设定pdf总页数)自动翻页并截取另存为图片形式,或自动隔0.1秒自动截笔记本全屏保存到指定文件夹
- 自动微分(Automatic Differentiation)
- 【LOJ】#2014. 「SCOI2016」萌萌哒
- document对象相关信息
- NYOJ 108士兵杀敌(一)
- 在win8.1 64位系统+cocos2d-x2.2.3下搭建android交叉编译环境