从第一个crackme学习逆向

admin 2023年11月27日21:24:03评论16 views字数 1415阅读4分43秒阅读模式

首先我们准备一个简单的exe程序

准备程序:ida(到处都有,笔者用的ida7.8)patch(python3版本的)CRACKME.exeHOLA_REVERSER.exe

我们使用HxD看一下

从第一个crackme学习逆向

很明显,这就是32bit程序

如果是64bit则是

从第一个crackme学习逆向

我们可以通过这个很简单的区分到底是32bit还是64bit

我们通过PE文件头分析

从第一个crackme学习逆向

他是这样的

换成一个64bit的试试

从第一个crackme学习逆向

这就是区别,所以我们可以直接区分这个文件到底是32bit或者是64bit程序,现在,我们知道这个程序是32bit,我们现在使用ida_x86进行调试分析

好了,现在开始调试分析

从第一个crackme学习逆向

我们可以看到这个function name也就是函数名称

我们先从start函数看起

这儿就是他的主面板程序

从第一个crackme学习逆向

也就是这个

往下,他有两个选项,一个直接退出程序,另一个选项是一个循环,他一直跳到loc_4010F1这个函数里边儿

从第一个crackme学习逆向

如果选择选项loc_40111D直接ExitProcess,所以现在我们的主要功能点应该是在另一个点

我们无法从此处入手,所以我们先运行程序,看看这个程序是如何运行的

从第一个crackme学习逆向

我们输入字符之后点击ok,返回结果

我们可以根据这个提示消息去寻找,他的执行逻辑便是,输入之后去判断,判断之后去返回一个字符串到页面上

所以我们先去找到这个定义这个字符串的区域

从第一个crackme学习逆向

找到字符串

从第一个crackme学习逆向

我们双击一下

跳转字符串定义的点

从第一个crackme学习逆向

好的,我们看到了,这儿正好就有刚才我们注册失败返回值的变量aNoLuckThereMat,既然我们找到了这个地址空间,我们就去找找它在何处被引用,试着把它替换成Text或者干脆不显示出来

我们鼠标选中它,按下x

弹出引用点

从第一个crackme学习逆向

它共有两处引用

我们挨着点

这一处是它的子程序,也就是我们主业务逻辑判断注册失败时调用它

从第一个crackme学习逆向

双击一下

从第一个crackme学习逆向

我们给他重命名为

从第一个crackme学习逆向

添加颜色上去表示这是报错的页面

从第一个crackme学习逆向

现在,我们找一下,这个子程序在哪儿被调用的

x一下,看看调用点

从第一个crackme学习逆向

我分别给他添上了颜色

我们分析下他的这段汇编代码

cmp eax, ebxjz short loc_40124c

eax-ebx相减,结果保存在eax中,jz表示如果为0就跳转绿色的子程序,不然直接调用INF_ERROR

那么,我们直接给他改了

cmp eax,ebxjnz short loc_40124c

从第一个crackme学习逆向

我们保存一下Edit>patch program>apply patches to input file

我们会发现,它先弹出来一个这样的弹窗

从第一个crackme学习逆向

然后提示成功

从第一个crackme学习逆向

也就是说,它还存在一个判断

现在我们再去寻找这个判断点

我们对着这个字符串x一下

从第一个crackme学习逆向

跳转第二个链接

从第一个crackme学习逆向

现在这个更简单,我们想要让这个不跳转到loc_4013ac

cmp al,41hjb short loc_4013ac

那么我们修改为

cmp al,aljb short loc_4013ac

从第一个crackme学习逆向

修改完成,保存一下

从第一个crackme学习逆向

修改成功,它现在不会再弹出来一次noLuck

我们接下来再看另一个程序

从第一个crackme学习逆向

现在我们也是一样的方法,判断是32bit或者64bit

我们使用ida导入

从第一个crackme学习逆向

我们找到print的信息,找找它在哪个地方被引用

从第一个crackme学习逆向

从第一个crackme学习逆向

从第一个crackme学习逆向

我们分析下

jnz short loc_401094

跳转到输出错误信息,现在我们修改跳转输出成功信息

便是当结果为0则跳转

jz short loc_401094

只要结果不为0,那么就一直返回成功信息

保存一下,我们运行这个程序

从第一个crackme学习逆向

是⑧是很简单?

关注十八线安服崽,后台回复 idacrack ,获取patch python3插件和实验所用exe程序


原文始发于微信公众号(深夜笔记本):从第一个crackme学习逆向

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月27日21:24:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从第一个crackme学习逆向http://cn-sec.com/archives/2244581.html

发表评论

匿名网友 填写信息