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

补充
buffer1buffer2 的第一个 计数 字符并返回指示它们关系的值。 非零返回值的符号是缓冲区中的第一个不同值对之差的符号。

核心

一个是数组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;

v2v3以及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)相关推荐

  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. IgniteMe debug 寒假逆向生涯(2/100)

    IgniteMe 声明 这是道超级简单的题目,就不重复啰嗦了,找到需要加密的关键代码后,直接一步到位. memset(&v4, 0xCCu, 0xF4u);if ( strlen(a1) &g ...

  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. 列出所有已安装的perl模块
  2. 采用模板建站细节更不容忽略
  3. Python中的collections
  4. python os.system 不打印_Python初体验之我爱你
  5. Trinity 1.1 发布,Linux 桌面环境
  6. gcc-5.4.0 static dwarf2 compile
  7. 2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态
  8. Hive on Spark和Spark sql on Hive,你能分的清楚么
  9. python证券_基于Python爬取搜狐证券股票过程解析
  10. 深入浅出Docker(四):Docker的集成测试部署之道
  11. 如何使用SSH密钥登录你的云服务器?使用SSH密钥的好处
  12. python语法简图
  13. Flash Builder 4 正式版序列号
  14. diy计算机英语,电脑组装DIY基本英语单词
  15. Paperreading 之二  多人人体姿态估计COCO2017冠军—CPN
  16. Verilog仿真器
  17. Windows搭建SMB服务
  18. 一键修改windows远程桌面3389端口
  19. Linux LCD屏幕驱动调参实操
  20. 计算机组成原理实验tec2000,计算机组成原理实验手册(TEC2000)

热门文章

  1. Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换
  2. Tensorflow:tf.contrib.rnn.DropoutWrapper函数(谷歌已经为Dropout申请了专利!)、MultiRNNCell函数的解读与理解
  3. CV之FD:基于dlib、cv2库利用warpPerspective函数和_68_face_landmarks文件实现AI换脸渐变融合视频效果
  4. 气象各种资料汇总(持续更新ing)
  5. 蓝桥杯算法训练_2的次幂表示+前缀表达式+Anagrams问题+出现次数最多的整数
  6. 当今世界最受人们重视的十大经典算法
  7. Ubuntu16.04 Docker 安装
  8. drools7 (一、最简单的例子)
  9. hihocoder-1615-矩阵游戏II
  10. js自定义类,混合的构造函数/原型方式