HWS计划 decryption 寒假逆向生涯(17/100)
decryption
前奏
没法搞,直接拖ida
全局
首先输入flag,然后一个if判断一下长度是否符合,不符合直接结束
然后再new处一个数组,接着一个加密函数,把加密后的存放在new出来的数组里,
最后把加密后的和已知数组buf
进行比较,符合的话则成功
这个函数memcmp以前我在博客里写过,这里,再给大家写一遍。
int memcmp(const void *buffer1,const void *buffer2,size_t count
);
参数:
buffer1
:第一个缓冲区。
buffer2
:第二个缓冲区。
count
:要比较的字符数。 (比较 wmemcmp) 的 memcmp、宽字符的字节数。
返回值:
返回值 | Buf1 和 buf2 的第一个 计数 字符的关系 |
---|---|
< 0 | buffer1 小于 buffer2 |
0 | buffer1 等同于 buffer2 |
> 0 | buffer1 大于 buffer2 |
补充:
buffer1
和 buffer2
的第一个 计数 字符并返回指示它们关系的值。 非零返回值的符号是缓冲区中的第一个不同值对之差的符号。
核心
一个是数组buf
(数组直接通过hex图里面直接拷贝出来,然后加上0x即可),另一个是加密函数encrypt
char a[]={ 0x12, 0x45, 0x10, 0x47, 0x19, 0x49, 0x49, 0x49, 0x1A, 0x4F, 0x1C, 0x1E, 0x52, 0x66, 0x1D, 0x52,0x66, 0x67, 0x68, 0x67, 0x65, 0x6F ,0x5F, 0x59, 0x58, 0x5E, 0x6D, 0x70, 0xA1, 0x6E, 0x70, 0xA3 };
v7 = a2[i];v6 = i;do{v4 = 2 * (v6 & v7);v7 ^= v6;v6 = v4;}while ( v4 );result = &a1[i];a1[i] = v7 ^ 0x23;
v2
和v3
以及result
没用,就用来混淆
注意
那个i值一定要赋给一个字符,然后再用字符进行while循环的变更,否则的话把i值改变了,下面然后进行数组赋值时就出错了。
错误示范:
do {d ^= char(i);c = 2 * (d & char(i));i = c&0xff;} while (c);
正确示范:
e = char(i);do {d ^= e;c = 2 * (d & e);e = c&0xff;} while (c);
代码
#include<iostream>
using namespace std;
int main() {char a[]={ 0x12, 0x45, 0x10, 0x47, 0x19, 0x49, 0x49, 0x49, 0x1A, 0x4F, 0x1C, 0x1E, 0x52, 0x66, 0x1D, 0x52,0x66, 0x67, 0x68, 0x67, 0x65, 0x6F ,0x5F, 0x59, 0x58, 0x5E, 0x6D, 0x70, 0xA1, 0x6E, 0x70, 0xA3 };char b[32];char c;char d;char e;for (int i = 0; i <= 31; ++i) {d=a[i] ^ 0x23;e = char(i);do {d ^= e;c = 2 * (d & e);e = c&0xff;} while (c);b[i] = d;}for (int i = 0; i <= 31; i++) {cout << b[i];}
}
1e1a6edc1c52e80b539127fccd48f05a
HWS计划 decryption 寒假逆向生涯(17/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静态分析 看到上方输出框有字符串,所以我们 ...
- IgniteMe debug 寒假逆向生涯(2/100)
IgniteMe 声明 这是道超级简单的题目,就不重复啰嗦了,找到需要加密的关键代码后,直接一步到位. memset(&v4, 0xCCu, 0xF4u);if ( strlen(a1) &g ...
- 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 ...
最新文章
- 列出所有已安装的perl模块
- 采用模板建站细节更不容忽略
- Python中的collections
- python os.system 不打印_Python初体验之我爱你
- Trinity 1.1 发布,Linux 桌面环境
- gcc-5.4.0 static dwarf2 compile
- 2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态
- Hive on Spark和Spark sql on Hive,你能分的清楚么
- python证券_基于Python爬取搜狐证券股票过程解析
- 深入浅出Docker(四):Docker的集成测试部署之道
- 如何使用SSH密钥登录你的云服务器?使用SSH密钥的好处
- python语法简图
- Flash Builder 4 正式版序列号
- diy计算机英语,电脑组装DIY基本英语单词
- Paperreading 之二 多人人体姿态估计COCO2017冠军—CPN
- Verilog仿真器
- Windows搭建SMB服务
- 一键修改windows远程桌面3389端口
- Linux LCD屏幕驱动调参实操
- 计算机组成原理实验tec2000,计算机组成原理实验手册(TEC2000)
热门文章
- Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换
- Tensorflow:tf.contrib.rnn.DropoutWrapper函数(谷歌已经为Dropout申请了专利!)、MultiRNNCell函数的解读与理解
- CV之FD:基于dlib、cv2库利用warpPerspective函数和_68_face_landmarks文件实现AI换脸渐变融合视频效果
- 气象各种资料汇总(持续更新ing)
- 蓝桥杯算法训练_2的次幂表示+前缀表达式+Anagrams问题+出现次数最多的整数
- 当今世界最受人们重视的十大经典算法
- Ubuntu16.04 Docker 安装
- drools7 (一、最简单的例子)
- hihocoder-1615-矩阵游戏II
- js自定义类,混合的构造函数/原型方式