分析registerMe和基础程序1逆向

打开registerme.exe,跳出nag
分析registerMe和基础程序1逆向_第1张图片
点击确认跳出正式界面
分析registerMe和基础程序1逆向_第2张图片
关闭窗口
分析registerMe和基础程序1逆向_第3张图片
再次跳出nag
目标:将打开和关闭的nag去除,只留下正式的界面

OD打开exe
分析registerMe和基础程序1逆向_第4张图片
简单观察能得知存在两个messagebox控制着两个nag。
MessageA存在cmp指令比较和je指令跳转,可通过修改je指令为jmp达成跳过打开的nag
GetModuleHandle 是获取程序的句柄,就是获取程序的基址(程序call获取后的存放在eax寄存器中)。然后cmp比较eax是否为0,若为0,ZF=1,je跳转达成
或者修改语句
在这里插入图片描述
修改为push 1可跳过开头nag
Messagebox参数有
分析registerMe和基础程序1逆向_第5张图片
而push 0对应的参数hWnd,将push 0更改为push 1,1为不存在的值故整个消息没有显示。同理能修改结束的message。
也能使用nop填充两个nag的代码段

另一种方法为修改文件pe头
点击上方m的按钮进入内存分布图
分析registerMe和基础程序1逆向_第6张图片
可以看出4001000为文件头,双击4001000进入
分析registerMe和基础程序1逆向_第7张图片
可以看出这是dos文件头
向下寻找
分析registerMe和基础程序1逆向_第8张图片
出现双字节数据右边注释为标志pe文件头的开始,C0位偏移地址,基地址位最初开始GetModuleHandle获取的值,故寻找4000C0地址
分析registerMe和基础程序1逆向_第9张图片
得到PE文件头位置,向下寻找记录着EP的注释
分析registerMe和基础程序1逆向_第10张图片
得到4000E8数据位置记录着AEP=1000
也能从载入后看出
分析registerMe和基础程序1逆向_第11张图片
开始修改程序入口点
在数据部分搜索4000E8
在这里插入图片描述
将1000改为1024
保存
打开为正式窗口且关闭没有nag
分析registerMe和基础程序1逆向_第12张图片

实现未赋予的功能
软件未注册版本只允许实现4个联系人,3个组,现将其更改为不限个数
分析registerMe和基础程序1逆向_第13张图片

在od内打开发现不能与之前的小程序相比,完整的软件拥有更多与用户相互的功能
在od内打开exe
分析registerMe和基础程序1逆向_第14张图片
按F9让程序运行
继续操作增加一位联系人,同样跳出只允许四个的窗口
此时在od内暂停程序
分析registerMe和基础程序1逆向_第15张图片
在od内,左侧的位置表明程序此时正在使用dll动态链接库,而应该调整的代码段应该像刚开始载入的位置。

按下alt+F9,左上角显示返回到用户,在未使用alt+F9不能对程序进行操作
(这里涉及到系统领空和程序领空概念:
系统为每个正在运行的程序分配了一片独立的、私有的内存空间用于存储程序代码以及执行代码所需要的临时空间
每个程序都是互相独立 互不干涉的 互相不能访问对方的私有内存空间的
当使用调试工具逆向分析一个正在运行着的程序的时候,就需要能够访问这块私有的内存 也就是进入这个应用程序的领空
因为只有这样才能看到它的代码以及它的执行情况操作系统也是程序 他自然也有自己的内存空间,也有自己的领空)
分析registerMe和基础程序1逆向_第16张图片
此时点击程序窗口的确认,od显示返回到调用dll的代码

继续返回
分析registerMe和基础程序1逆向_第17张图片
发现call指令上方有将ASCII码形式的信息入栈,结合刚才return语句上方的messagebox,应该为messagebox调用了栈内ASCII码来输出字符,若直接寻找messagebox函数则可能出现错误位置。

观察上方代码段:存在cmp和jl,cmp指令将eax的值和4比较,若eax大于等于4,则跳转实现不出现提示。

将jl更改诚jmp强制完成跳转,保存文件并进行测试
分析registerMe和基础程序1逆向_第18张图片
测试成功
修改组的方法相似

查找相关字符串现在内存中寻找
按下od上方m按钮
在这里插入图片描述
CTRL+b或者右键查找
分析registerMe和基础程序1逆向_第19张图片
分析registerMe和基础程序1逆向_第20张图片
出现相关字符可在此更改
然后返回cpu保存
或者
在内存中寻找到数据位置在cpu数据中寻找
寻找到后选中字符右键查看参考
分析registerMe和基础程序1逆向_第21张图片
打开后
在这里插入图片描述
找出指令在的位置
双击指令即可找到代码段位置来进行修改,即可完成。
在这里插入图片描述

你可能感兴趣的:(分析registerMe和基础程序1逆向)