代码脚本解开法

#include <stdio.h>
int main(int argc, char* argv[]) {
char flag_data[] = {
220, 23, 191, 91, 212, 10, 210, 27, 125, 218,
167, 149, 181, 50, 16, 246, 28, 101, 83, 83,
103, 186, 234, 110, 120, 34, 114, 211};
char v7[] = {
84, -56, 126, -29, 100, -57, 22, -102, -51, 17,
101, 50, 45, -29, -45, 67, -110, -87, -99, -46,
-26, 109, 44, -45, -74, -67, -2, 106};
unsigned int v2;
unsigned char* v3;
// v11 = -478230444;
// v12 = -1709783196;
// v13 = 845484493;
// v14 = 1137959725;
// v15 = -761419374;
// v16 = -752063002;
// v17 = -74;
// v18 = -67;
// v19 = -2;
// v20 = 106;
// 方法一:类比写
for (int i = 0; i <= 6; ++i) {
v2 = ((v7[4 * i] & 0x000000FF) + ((v7[4 * i + 1] & 0x000000FF) << 8)
+ ((v7[4 * i + 2] & 0x000000FF) << 16) + ((v7[4 * i + 3] & 0x000000FF) <<
24)) ^ 0xDEADBEEF;
v3 = (unsigned char*)&v2;
for (int j = 3; j >= 0; --j) {
printf("%c", *(v3 + j) ^ flag_data[4 * i + j]);
}
}
// 方法二:按位异或,小端字节序,低位在低地址
// for (int i = 0; i <= 6; ++i) {
// printf("%c", v7[4 * i + 3] ^ 0xDE ^ flag_data[4 * i + 3]);
// printf("%c", v7[4 * i + 2] ^ 0xAD ^ flag_data[4 * i + 2]);
// printf("%c", v7[4 * i + 1] ^ 0xBE ^ flag_data[4 * i + 1]);
// printf("%c", v7[4 * i] ^ 0xEF ^ flag_data[4 * i]);
// }
return 0;
}

动态调试

这里得用Linux得gdb动态调试

win

ida

找到关键函数下断点

动态调试

这里不改寄存器,直接改函数,jz——>jnz

然后运行到函数结束,return处

但是程序得到不可打印字符,说明ida不行

然后od也差不多是一个意思了

GDB

用这个的话需要win结合一起用,因为需要在win的ida那里看地址

在ida中找到关键函数的地址

在gdb上下断点

mian函数下一个,防止一下子运行结束了

然后再到关键函数那里下一个

然后运行程序

然后运行到下一个断点

在这里的话因为是test eax eax,所以查看一下eax的值,果不其然为0,那么test就是0和0按位与,这样子的话最后导致的就是zf位为1,那么就会发生jz跳转,就会跳转到wrong的部分,所以要改变zf的结果,也就是要改变eax的值

test指令

zf位

所以操作为

最后得到结果

simple-check-100的更多相关文章

  1. java simple check whether a file or directory.

    Ref:  check whether a file or directory First, make sure the path exists by using: new File(path).ex ...

  2. zabbix simple check

    摘自: http://www.ttlsa.com/zabbix/zabbix-simple-checks/ 1. 开始 Simple checks通常用来检查远程未安装代理或者客户端的服务 使用sim ...

  3. Simple JavaScript Inheritance(John Resig)

    I’ve been doing a lot of work, lately, with JavaScript inheritance – namely for my work-in-progress ...

  4. (14)zabbix Simple checks基本检测

    1. 开始 Simple checks通常用来检查远程未安装代理或者客户端的服务 使用simple checks,被监控客户端无需安装zabbix agent客户端,zabbix server直接使用 ...

  5. springboot + rabbitmq发送邮件(保证消息100%投递成功并被消费)

    前言: RabbitMQ相关知识请参考: https://www.jianshu.com/p/cc3d2017e7b3 Linux安装RabbitMQ请参考: https://www.jianshu. ...

  6. (转载)springboot + rabbitmq发送邮件(保证消息100%投递成功并被消费)

    转载自https://www.jianshu.com/p/dca01aad6bc8 一.先扔一张图   image.png 说明: 本文涵盖了关于RabbitMQ很多方面的知识点, 如: 消息发送确认 ...

  7. jQ1.5源码注释以及解读RE

    jQ作为javascript的库( ▼-▼ ), 尽善尽美, 代码优美,  值得学习.  这一周平常上班没啥事也看jQ1.5的代码, 今天周六差不多看完了(Sizzle部分还没看), 重新看了一下, ...

  8. jQuery1.4源码解读

    来吧, 慢慢折腾吧 总结一下: jq1.4挺简单的, 正则写的不多, 看的都懂, 多写一些 三目写法到底要不要 特殊的地方的注释一定要有 /*! * jQuery JavaScript Library ...

  9. Libsvm:脚本(subset.py、grid.py、checkdata.py) | MATLAB/OCTAVE interface | Python interface

    1.脚本 This directory includes some useful codes: 1. subset selection tools. (子集抽取工具) subset.py 2. par ...

  10. 立即执行函数(IIFE)的理解与运用

    作为JavaScript的常用语法,立即执行函数IIFE(Immediately-Invoked Function Expression)是值得我们认真去学习探究的. 一.创建函数的两种方式 我们先从 ...

随机推荐

  1. python3 使用位图排序

    代码 from bitmap import BitMap a=[1,5,3,4,7,8,15,6,9] print(a) bm=BitMap(max(a)) #print(dir(bm)) print ...

  2. 2021-7-6 vue音乐播放器

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...

  3. python:时间模块dateutil

    安装 pip install python-dateutil dateutil模块主要有两个函数,parser和rrule. 其中parser是根据字符串解析成datetime,而rrule则是根据定 ...

  4. 【pandas小技巧】--修改列的名称

    重命名 pandas 数据中列的名称是一种常见的数据预处理任务.这通常是因为原始数据中的列名称可能不够清晰或准确.例如,列名可能包含空格.大写字母.特殊字符或拼写错误. 使用 pandas 的 ren ...

  5. H5用canvas放烟花

    很久很久以前的一个很流行的java Applet放烟花效果,当初移到android过,这次摸鱼时间翻译成js代码,用canvas实现这么多年,终于能大致看懂这代码了, 已经实现透明效果,只需要给bod ...

  6. c++算法之离散化

    什么是离散化? 离散化,故离散数学,其中的"离散"就是不连续的意思.离散化可以保持原数值之间相对大小关系不变的情况下将其映射成正整数. 也就是给可能用到的数值按大小关系分配一个编号 ...

  7. 《Kali渗透基础》12. 无线渗透(二)

    @ 目录 1:无线协议栈 1.1:ifconfig 1.2:iwconfig 1.3:iw 1.4:iwlist 2:无线网卡配置 2.1:查看无线网卡 2.2:查看信道频率 2.3:扫描附近 AP ...

  8. 《Linux基础》01. 概述

    @ 目录 1:Linux的应用领域 1.1:个人桌面领域的应用 1.2:服务器领域 1.3:嵌入式领域 2:Linux介绍 3:Linux和Unix的关系 4:Linux基本规则 Linux介绍 1: ...

  9. CentOS 8 无痕升级到 Rocky Linux

    CentOS 8 无痕升级到 Rocky Linux 1.升级当前系统 dnf upgrade -y 2.重启当前系统: reboot 3.下载脚本: CentOS 8 到 Rocky Linux 8 ...

  10. utils工具类整理

    闲暇之余,整理出了项目中常用的一些工具类,不是很全,后续会持续更新--- 全部代码请移植github哦-github地址:https://github.com/yang302/utils