没有壳 VC写的

观察界面 一个编辑框 一个按钮

拖进IDA 在导入表里找到GetDlgItemTextA

为什么找这个函数 因为这个函数的作用就是 获取我们输入编辑框的内容

双击进入 ctrl+X 交叉引用,然后F5看伪C代码 就一个自定义函数 其他都是系统函数 我们直接进去

进去之后 发现就是把我们输入的值分成两队 分别和 4030XX 这一串对0xx7异或的值 和 对0x33比较

但是我们不管这么多,直接看后面,这个if,很敏感的感觉到 flag就藏在这个 401000()函数里面,所以我们在if这一行按下TAB

直接拿到这个if的地址 进入OD 操作 ctrl+G 到刚才if的地址 下断

跑起来,用这个灰色按钮克星激活 GetFlag 按钮, 按下按钮走到断点

发现 关键的比较 这不就是刚才判断 V2+V1==3 吗?

这里的eax是1 当然和 3不相等,那我们改成cmp eax,1,1和1比较肯定一样鸭,所以不会跳转。 (这里把jnz直接改成jz也可以达到同样的效果)

继续单步 就得到了flag 全程不用做任何运算

这里再介绍下另外两种解法,就是通过计算得到flag。

第一种:

把byte_4030xx处的字符转换一下进制显示,byte_4030xx处字符分别为“JPFjXj2;9GWbN”

编写破解代码

#include <stdio.h>

int main()
{
int i, j = ;
char str1[] = "JPFjXj2;9GWbN";
char str2[] = {0x00}; for (i = ; i <= ; i++) {
str2[j++] = str1[-i] ^ ;
} for (i = ; i >= ; i--) {
str2[j++] = str1[i] ^ 0x33;
} printf("%s\n", str2); return ;
}

把计算的结果填入编辑框 用按钮克星激活GetFlag按钮 就能得到flag了

第二种:

直接到这个解密函数 sub_401000 里面看看

发现就是将 7e0cad17016b0>?45?f7c>0>4a>1c3a0 与0x7的异或操作

(解释下这里v4为什么等于这么多,Dst是已知的,位置是ebp-38h,v4的地址是ebp-29h,转为十进制后,两个差15位,所以左边的 flag:{NSCTF_md5 这十五位去掉就是v4的值)

提醒一下 “}” 这个的ASCII 就是125

用python写脚本,直接得到flag

a = "7e0cad17016b0>?45?f7c>0>4a>1c3a0"
out = ""
for i in a:
out += chr(ord(i)^7)
print out

NSCTF-Reverse02 超级详细且简单的办法搞定的更多相关文章

  1. Paxos协议超级详细解释+简单实例

    转载自:  https://blog.csdn.net/cnh294141800/article/details/53768464 Paxos协议超级详细解释+简单实例   Basic-Paxos算法 ...

  2. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

  3. 【路由达人】简单两步搞定小米路由新增功能-DDNS(解析域名地址转向在线工具)

    DDNS(Dynamic Domain Name Server)是动态域名服务的缩写! 简单来说目前ISP大多为我们提供动态IP(如ADSL拨号上网),而很多设备或服务需要通过远程访问时需要一个固定的 ...

  4. ubuntu更新源,简单两步搞定

    1.启动器中打开Ubuntu软件中心 2.鼠标顶部面板点击编辑选择软件源(163.sohu) 搞定!

  5. Typora 最后免费版本也不能用了?简单一招搞定

    作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 Typora是一款优秀的 Markdown 编辑 ...

  6. CentOS7 下Docker最新入门教程 超级详细 (安装以及简单的使用)

    转载https://blog.csdn.net/wzsy_ll/article/details/82866627 1.为什么使用Docker(本人) 最近总是频繁的在新服务器发布项目, 每次发布都需要 ...

  7. CentOS 6.4 服务器版安装教程(超级详细图解)

    附:CentOS 6.4下载地址 32位:http://mirror.centos.org/centos/6.4/isos/i386/CentOS-6.4-i386-bin-DVD1to2.torre ...

  8. 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)

    手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版) SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式, ...

  9. RHEL 6.3安装(超级详细图解教程)[转载]

        附:RHEL6.3下载地址 32位:http://rhel.ieesee.net/uingei/rhel-server-6.3-i386-dvd.iso 64位:http://rhel.iee ...

随机推荐

  1. 在小程序内点击按钮分享H5网页给好友或者朋友圈

    在小程序内点击按钮分享H5网页给好友或者朋友圈 首先需要建立h5容器文件夹 页面.wxml <navigator url="/pages/report-await/fouryearh5 ...

  2. Linux环境下安装mysql(远程连接),zookeeper,java,tomcat.

    环境阿里云centos7.5 64位 + FinalShell + Navicat Permium 12 用到的压缩包(版本看后缀) 注意:安装均在/usr/local目录下,下面代码中#号不要复制上 ...

  3. 【GYM102091】2018-2019 ACM-ICPC, Asia Nakhon Pathom Regional Contest

    A-Evolution Game 题目大意:有$n$个不同的野兽,定义第$i$ 个野兽有 $i$ 个眼睛和 $h[i]$ 个角,你可以任意从中选择一个野兽进行进化,每次进化角数量必须增加,而且进化后要 ...

  4. CMD操纵Mysql命令大全

    连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样)断开:exit (回车) 创建授权:grant select on 数据库.* to 用户名@登 ...

  5. Vue学习笔记-基本语法

    插值文本(输出文本):{{ }}或v-textHtml(输出Html):v-html 监听属性常用于表单输入时要进行的动作watch : { dataValue:function(val) { }} ...

  6. lumen 笔记一

    可以用config()函数和evn()函数来获取 .evn里面的配置内容 config('app.timezone') 获取配置config(['app.timezone' => 'China/ ...

  7. DataTable转成实体列表 和 DataRow转成实体类

    #region DataTale转为实体列表 /// <summary> /// DataTale转为实体列表 /// </summary> /// <typeparam ...

  8. 天猫SSM项目学习记录(一)----第一个相对完整的SSM项目

    来源:  http://how2j.cn/k/tmall_ssm/tmall_ssm-1516/1516.html?p=78908 目的:记录一个相对完整的SSM项目模板 1.工具:idea2018商 ...

  9. 从零开始のcocos2dx生活(三)Scheduler

    文章目录 取模 Timer() 变量 设置定时器Timer() 一些成员函数 Scheduler() 变量 初始化 哈希表 构造函数schedule() 开启定时器Update() 析构函数~Upda ...

  10. 【题解】LOJ6060 Set(线性基)

    [题解]LOJ6060 Set(线性基) orz gql 设所有数的异或和为\(S\),答案是在\(\max (x_1+S\and x_1)\)的前提下\(\min x_1\)输出\(x_1\) 转换 ...