逆向
文章平均质量分 63
再搭环境是狗
这个作者很懒,什么都没留下…
展开
-
BUU_re_[ACTF新生赛2020]usualCrypt
首先拖入ida中int __cdecl main(int argc, const char **argv, const char **envp){ int v3; // esi int result; // eax int v5[3]; // [esp+8h] [ebp-74h] BYREF __int16 v6; // [esp+14h] [ebp-68h] char v7; // [esp+16h] [ebp-66h] char v8[100]; // [esp+18h] [原创 2021-09-04 12:17:21 · 247 阅读 · 0 评论 -
crackme杂记
关于PDB文件和debug的关系,PDB文件中存储着程序的符号文件,因为只是debug是放不下那么多的。易语言按钮事件特征码:FF 55 FC 5F 5E,准确来说是易语言控件消息的必经之地,包括时钟调用都一定会经过这个特征码。寻找易语言的MFC按钮事件特征,我们已经知道了MFC按钮事件的特征码,并且再_AfxDispatchCmdMsg函数中第四个参数是按钮的函数,可是当我们在易语言程序中这样寻找时,却发现,没找到特征码,是因为易语言并不纯粹是MFC,还包含了一些其他的东西,实际上易语言的按钮事件是.原创 2021-08-31 22:46:54 · 316 阅读 · 0 评论 -
在MFC中快速定位按钮事件的新方式
我在上一篇文章《 如何在MFC中定位按钮事件 》采用了寻找虚函数表的方法来寻找按钮事件,但是用不同版本的VS编译器编译出来的MFC程序,在进入afxWinMain入口前做了非常多的工作,而且在不同版本中所做的内容是不尽相同的。下图左边是vs6.0的MFC的调用堆栈,右边是vs2010的MFC的调用堆栈。在MFC程序中,有且仅有一个继承自CWinApp的类,而且这个类是全局的,只有一个,程序运行的时候已经初始化了。1,原理:继承自CWinApp的类和窗口的类在内存中有 static const A转载 2021-08-31 11:20:55 · 828 阅读 · 0 评论 -
通过分析调用堆栈定位MFC按钮事件
1,逆向分析这个东西的前提是你得懂这个东西,例如,就像逆飞机一样,你连飞机是什么都不知道,当然你也就逆不出来,逆之前, 你得自己会造飞机,只是你没有别人造的好。分析过程中,不需要弄懂每个细节,只需关注重点部分和整体流程。学会根据经验猜测。2,原理:我们新建的MFC程序,界面上就放2个按钮,事件处理函数随便写。然后我们在按钮那里设置断点。程序运行起来后,我们点击button1,程序就断下来了,然后我们就查看它的调用堆栈,谁调用了这个按钮处理函数,找到事件分发函数。_AfxDispatchCmdMs转载 2021-08-31 11:13:10 · 673 阅读 · 0 评论 -
crackme杂记007
花指令的特征:遇到这种指令,可以立即判断出这是一个花指令,所以花指令较多的话,我们也可以通过搜索代码的方式快速去除如上图,我们已经知道 E8 01 00 00 00 ?? ?? ?? ?? ?? C3 是花指令,所以我们直接搜索这擦混代码一个一个nop就可以了。易语言中的特征码:想要搜索易语言程序的特征码,最好在程序的开始位置搜索,1.字符串比较函数的特征码: test edx,3执行到这里停住以后,注意观察ECX,EDX寄存器,比骄傲的字符串一定就在这两个寄存器里面,并且我们可以放根据找原创 2021-08-23 23:38:22 · 153 阅读 · 0 评论 -
crackme杂记 006
c语言中什么函数执行的最早?main函数吗?不是,还有更早执行的函数,比如初始化全局变量的构造函数。我们都知道,od在反汇编一个exe的时候会停止在oep的位置上,那么有比oep还要更早执行的函数吗?有的,比如TLS。既然tls比ebp都早,那么我们是否可以利用到它呢?比如反调试,如下图代码#include<iostream>#include<tchar.h>#include"ntdll/ntdll.h"#include<windows.h>DWORD i原创 2021-08-22 23:08:02 · 142 阅读 · 0 评论 -
crackme杂记 005
加壳的程序的断点技巧:creatwindowsEXA ,creatwindowsEXW这两个函数是创建窗口函数,可以让我们在壳之前下断点。两个函数有什么区别呢?W是unicode编码,而A是ascii编码。而我们程序在调用API的时候,一般都会从A调用到W,就比如32位的程序,在64位的操作系统中,最后都会调用64位的API一样。当然也有例外,所以我们在下断点的时候最好两个函数都下断点。IDA快捷键: x可以查看引用函数的位置。ida有时候字符串感觉有些怪异的话,比如特别短,可能是因为unicode编原创 2021-08-21 22:54:19 · 152 阅读 · 0 评论 -
crackme杂记 004
创建窗口函数: CreatWindowsExA,有时候想要找信息窗口找不到的话可以通过这个函数查找。花指令:花指令就是类似于jmp,call,ret的指令用来影响我们正常进行反汇编,比如使用花指令的话,IDA就无法正常编译汇编代码。举例:如上图,我们自己写了一个裸函数,可以看到,先写一个jmp Lable,跳转到下面的Lable函数,然后通过 _emit 0e8h 写入一个e8,但是我们知道,e8是call对应的硬编码,所以od就会认为这是一个call ,但是call后面都会跟着一个地址啊,所以od原创 2021-08-20 23:17:41 · 92 阅读 · 0 评论 -
crackme杂记 003
关于dll劫持的一些补充:如何寻找dll文件,dll文件储存在两个文件夹中,一个是system32文件夹,一个是SysWOW64文件夹,但是前者储存的却是64位程序运行的环境,后者则是32位程序运行的环境。如何知道想要劫持的dll是否为系统重点保护的,可以查看注册表里的键值,路径如下,里面的dll都是受系统保护的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\knowndlls当我们想要加载的是64位的dll,原创 2021-08-19 23:19:01 · 160 阅读 · 0 评论 -
crackme 杂记002
实现dll劫持:首先我们需要使用到工具:AheadLIB,这个工具可以帮我们生成dll文件的cpp代码。什么是dll劫持,就是利用程序运行时会通过搜索名字来运行dll文件的方式,自己生成一个同名的dll文件,并且放在程序的同目录下,从而使程序会使用我们自己生成的dll文件,当然程序仍会使用系统的dll文件,因为我们自己生成的dll文件有系统dll文件的入口,否则我们就需要将系统的dll文件的代码全部生成,那样工作量会非常大,所以dll劫持的意思就是先加载我们的同名dll文件然后继续运行系统的dll文件。原创 2021-08-18 21:07:54 · 238 阅读 · 0 评论 -
crackme 004
这道题是169道crackme 004先打开程序,程序如下图。根据同时下载好的txt文档可以知道,如果注册成功会出现朱茵的美图。好了,直接拖入od试一试。还是先试试中文搜索,可以发现有个注册成功字符串。那么我们直接双击进去,往上查找,可以看到一个jnz,但是是往上跳的,继续网上找,看到了一个关键跳 刚好跳过了注册成功,直接nop填充,破解成功。可以看到朱茵的美照。然后再试一试不用中文搜索的方法。查看一下api函数,emm…数不清有多少个,肯定搞不了了,还是算了,直接注册机吧。由于这个是del原创 2021-08-13 18:31:32 · 113 阅读 · 0 评论 -
nck课程笔记:破解补丁工具的使用
破解一个程序的时候我们可以通过搜索字符串的方式来寻找关键点,那么假如我们在编写一个程序的时候,怎么提防这种简单的暴破方式呢?上一篇文章中已经提到过od里面实现搜索字符串功能是一个插件,视频中的作者给我们展示了一下这个插件的源码,下图是插件的核心函数:可以看出,该函数显示读取整个模块的内存,然后开始寻找push,mov,lea指令,并读取他们的操作数,当他读到’\0’的时候就认为这是一个字符串,但是问题也来了,如下图我们可以看到,上图的push ebp中的ebp是以\0结尾的,但是很明显,这原创 2021-06-27 17:17:10 · 1685 阅读 · 2 评论 -
BUUCTF reverse 刮开有奖
每天一道ctf,能多不能少题目链接下载好以后双击点开发现是这么个玩意儿,但我们却没法对它进行操作,好吧,查一下壳,然后直接用ida打开,查看主函数,这里我发现主函数是这种的学识短浅的我只能去百度,大概了解了一下:windows支持两种应用程序,一种是一种是基于控制台用户界面的应用程序(Console User Interface,简称CUI),另一种是基于图形用户界面的程序(Graphic User Interface,简称GUI)。然后main函数和WinMain函数分别是这两种应用程序的主函原创 2021-06-18 23:43:58 · 192 阅读 · 2 评论 -
main函数和WinMain 函数
Windows支持两种类型的应用程序:一种是基于控制台用户界面的应用程序(Console User Interface,简称CUI),另一种是基于图形用户界面的程序(Graphic User Interface,简称GUI)。main函数和WinMain 函数是分别做为CUI和GUI的进入点函数被使用的。但请注意一点,OS 本身不会调用我们编写的进入点函数(main 或WinMain),它调用的是C/C++运行期启动函数。————————————————版权声明:本文为CSDN博主「jia原创 2021-06-18 16:18:27 · 587 阅读 · 0 评论 -
2021-06-14
esp定律脱壳————————————纯属个人理解,如有不对求大佬指正。看了好多关于esp定律脱壳的文章,都没看懂,o(≧口≦)o,可能是本人太笨了吧。所以就来浅谈一下自己对于esp脱壳的理解。个人对于esp脱壳的理解是先把壳跑完,此时的oep就是真正的程序入口。然后再将源程序通过工具dump出来为一个exe文件,再进行一些修复操作,就脱壳完毕了。接下来是实战操作 ┭┮﹏┭┮ ,我直接通过buuctf里的新年快乐题目来操作吧。查壳首先拖入ide中,我们会发现只有两个函数,是不是很可疑,所以我原创 2021-06-14 18:04:44 · 112 阅读 · 2 评论