题目在这里面找

https://down.52pojie.cn/Challenge/Happy_New_Year_2019_Challenge.rar

内容方面参考论坛上的文章,并做了一些补充

https://www.52pojie.cn/thread-874670-1-1.html

按照习惯,先查壳。发现应该是upx壳。

用od打开,现在可以看到程序的入口,从这也可以发现入口的特征确实为upx壳的特征。

所以此处可以尝试使用“esp定律”来进行脱壳

具体方法为:

1.先od加载程序chunjiekuaile.exe,此时自然就到了程序的入口点,发现pushad

2.这时F8单步执行一步,然后可以看到寄存器区域的esp反色高亮

3.此时我们在esp高亮处点击右键 ->选择HW break[ESP],即可下一个硬件断点

插一句,这里也可使用另一种方式下断点,效果是一样的。在高亮处,右击选择“数据窗口中跟随”。

然后在数据窗口中右键,选择 "断点" -> "硬件访问“ -> "byte"(其他两个也都行)

4.这里可以打开,”调试“->"硬件断点",来进行查看断点是否下成功

5.接下来F9运行程序,然后我们可以看到程序断在了第一行那里,按照规律最下面的jmp,将带领我们跳至oep,也就是程序真正的入口,我们可以在那行用F4,直接运行到选定位置,然后再F8单步执行一次

6.此时就来到了正真的程序入口点,可以看到程序入口点OEP的特征和通常的Microsoft Visual C++ 6.0的OEP特征非常相似,所以这时我们可大致断定我们找到了OEP

7.这时我们在OEP处右键选择“用ollydump脱壳调试进程”

8.然后不要勾选重建输入表,其他按照默认配置,点击脱壳,然后保存就好,我们这里保存为chunjiekuaile2.exe

9.脱出来的程序需要重建输入表,我使用的ImpREC进行重建,运行程序加载脱出来的程序,点击IAT AutoSearch->Get Imports->Fix Dump

点击fix Dump打开被修复的程序,会生成一个新的chunjiekuaile2_.exe

9.这时再把我们保存的chunjiekuaile2_.exe拖入PEID中,检查是否已经把壳脱掉,结果可发现已经没有了壳,此时我们就可以大胆得开始调试程序了

10.将脱完壳的程序拖入od中,F9运行起来,现在就开始猜密码了,随便输几个数字,发现会提示“长度错误”

11.按照老套路,右键选择“中文搜索引擎”->“智能搜索”

12.可以发现,运气很好,搜索到了相关字符,双击跳转至该处

13.向上看到这行,发现这里有一个获取字符串长度的操作,然后接下来就是一个cmp指令,那我们基本可以猜测这里就是校验字符串长度的地方。由于是和十六进制0x10进行比较,也就是十进制的16,所以我们可以尝试使用十六位的字符进行测试

14.这时我们可以发现,已经通过了长度的校验,提示变成了“内容错误”

15.还是之前的套路,我们继续搜索字符串,发现也可以找到相关的字符串,双击转到该处,F2下一个断点

16.我们再往上看,发现有惊喜,发现了“正确”的字样,那么我们可以猜测最终校验密码的代码就在附近

由于之前基本确定在00401288那行应该就是最终成功的提示,所以我们可以做出推断,往这行指令之后的跳转,基本都要避免,比如00401281的这个jnz。那么接下来任务就是要看再怎样的条件才可使指令最终一步一步执行到这里

17.大胆猜想一下,上面的flag应该是进行了一些变换所以才和正真的flag有差别,那现在我们暂定分析范围在,之上的疑似flag那,到正确提示之间。于是先在004011FF那下个断点进行调试

18.按照我们的猜想,字符串一定是经过与正确的字符串进行比较才能完成校验,于是我们可以着重关注一下如cmp之类的比较类的指令。我们一步步单步来跟,发现在经过004010E0 => call chunjiek.004010E0,之后ESI和EDI之中的分别为我们的测试字符串"TESTbNhzYhdu2019"和另一串长度相同的字符串。而且接下来的各类比较都是围绕着这两个寄存器来展开的,所以我们可猜测EDI中的字符就是要找的flag。最快速的方法就是使用这个字符串再测试一下,发现通过了校验,正是我们要找的flag。

吾爱破解 Happy_New_Year_2019_Challenge 第二题的更多相关文章

  1. 吾爱破解脱壳练习第五期------upx壳

    内存镜像法: 载入OD:

  2. 修复吾爱OD数据窗口双击不出现偏移问题

    吾爱破解专用版OD其实一直有一个小BUG,就是双击数据窗口不出现下图的偏移:<ignore_js_op> 我一直苦苦寻找解决办法,曾见小生怕怕在另一个贴说这是看雪那边OD改了什么东西引起的 ...

  3. 常见面试第二题之什么是Context

    今天的面试题,也就是我们常见面试题系列的第二题,我们来讲一讲android中的context.我相信大家android开发者一定对于这个context非常熟悉,肯定都有使用过,肯定没有没使用过的.但是 ...

  4. 05:统计单词数【NOIP2011复赛普及组第二题】

    05:统计单词数 总时间限制:  1000ms 内存限制:  65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...

  5. 《学习OpenCV》练习题第五章第二题abc

    代码: #include <stdio.h> #include <opencv/highgui.h> #include <opencv/cv.h> #include ...

  6. 《学习OpenCV》练习题第四章第二题

    #include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...

  7. CSDN挑战编程——《金色十月线上编程比赛第二题:解密》

    金色十月线上编程比赛第二题:解密 题目详情: 小强是一名学生, 同一时候他也是一个黑客. 考试结束后不久.他吃惊的发现自己的高等数学科目竟然挂了,于是他果断入侵了学校教务部站点. 在入侵的过程中.他发 ...

  8. NOIP2005-普及组复赛-第二题-校门外的树

    题目描述 Description 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...

  9. 【gdoi2018 day2】第二题 滑稽子图(subgraph)(性质DP+多项式)

    题目大意 [gdoi2018 day2]第二题 滑稽子图(subgraph) 给你一颗树\(T\),以及一个常数\(K\),对于\(T\)的点集\(V\)的子集\(S\). 定义\(f(S)\)为点集 ...

随机推荐

  1. 【GStreamer开发】GStreamer基础教程04——时间管理

    目标 本教程主要讲述一些和时间相关的内容.主要包括: 1. 如何问pipeline查询到流的总时间和当前播放的时间 2. 如何在流内部实现跳转功能 介绍 GstQuery是向一个element或者pa ...

  2. 查看cpu核的相关信息

    查看CPU信息(型号) cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 80 Intel(R) Xeon(R) CPU E7-4820 v3 ...

  3. Linux 脚本语言入门

    0.脚本编写初步介绍 (1)脚本第一行以 #!/bin/sh 开始,也可以用 #!/bin/bash 开始,但是第一行必须以这种方式开始. (2)脚本名需要以.sh结尾 (3)#开头的句子表示注释 ( ...

  4. [SourceTree] - 使用内置 PuTTY 克隆项目出现 fatal: early EOF 问题之解决

    背景 使用 PuTTY 克隆 Asp.Net Core 项目失败. 错误 git -c filter.lfs.smudge= -c filter.lfs.required=false -c diff. ...

  5. MyBatis逆向工程生成配置 generator (生成pojo、mapper.xml、mapper.java)

    MyBatis逆向工程生成 mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java.mapper.xml ...

  6. (十七)springMvc 对表单提交的日期以及JSON中的日期的参数绑定

    文章目录 前言 `Ajax`提交表单数据 `Ajax`提交`JSON` 格式数据 解决输出JSON乱码的问题 控制JSON输出日期格式 小记 前言 springMVC 提供强大的参数绑定功能,使得我们 ...

  7. C++ 计算定积分、不定积分、蒙特卡洛积分法

    封装成了一个类,头文件和源文件如下: integral.h #pragma once //Microsoft Visual Studio 2015 Enterprise #include <io ...

  8. 剑指offer33:求按从小到大的顺序的第N个丑数。

    1 题目描述 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 2 ...

  9. nginx 二级目录高级写法

    nginx二级目录高级配置: location ~ .*\.(html)$ { expires 1m; error_page 404 = /test/index.html; access_log /d ...

  10. 【自学系列一】HTML5大前端学习路线+视频教程(完整版)

    今年,本公司全新发布了囊括Java.HTML5前端.大数据.Python爬虫.全链UI设计.软件测试.Unity 3D.Go语言等多个技术方向的全套视频. 面对这么多的知识点,有的盆友就麻爪了…… 我 ...