题目在这里面找

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. 分类:logistic回归

    import numpy as np import matplotlib.pyplot as plt x=np.linspace(-1,1,200) y=1/(1+np.exp(10*x-1)) pl ...

  2. Swift编码总结2

    1.swift如何隐藏在 iPad 上的 quicktype 键盘工具栏? let item = textField.inputAssistantItem item.leadingBarButtonG ...

  3. request.GET、request.POST、request.body(持续更新)

    1.request.GET: print(request.GET) # <QueryDict: {'page' : ['5'], 'id__gt' : ['4']}> print(requ ...

  4. Python:使用第三方库xlwt来写Excel

    继上一篇文章使用xlrd来读Excel之后,这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表示write x ...

  5. PHP中文名加密

    <?php function encryptName($name) { $encrypt_name = ''; //判断是否包含中文字符 if(preg_match("/[\x{4e0 ...

  6. vue之项目打包部署生产环境前需要注意的问题!

    我们在本地写好代码,然后打包上线前需要修改相关的配置文件,否则项目无法正常运行,主要是路径不对,找不到相关文件. 1.修改config > index.js(如下图) 2.在build > ...

  7. jupyter notebook选择conda环境

    需要安装: conda install ipykernel 使用:首先激活对应的conda环境 source activate 环境名称 将环境写入notebook的kernel中 python -m ...

  8. 用pytorch1.0搭建简单的神经网络:进行回归分析

    搭建简单的神经网络:进行回归分析 import torch import torch.nn.functional as F # 包含激励函数 import matplotlib.pyplot as p ...

  9. 【转帖】如果进入CPU的世界,时间会是怎样的?

    如果进入CPU的世界,时间会是怎样的? 2018-02-26 20:52:46 world6 阅读数 1295更多 分类专栏: 网络 缓存服务 架构   版权声明:本文为博主原创文章,遵循CC 4.0 ...

  10. HCIA SWITCHING&ROUTTING 笔记——第一章 TCP/IP基础知识(1)

    视频地址:https://ilearningx.huawei.com/courses/course-v1:HuaweiX+EBGTC00000336+Self-paced/courseware/abb ...