分析registerMe和基础程序1逆向

打开registerme.exe,跳出nag
在这里插入图片描述
点击确认跳出正式界面
在这里插入图片描述
关闭窗口
在这里插入图片描述
再次跳出nag
目标:将打开和关闭的nag去除,只留下正式的界面

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

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

实现未赋予的功能
软件未注册版本只允许实现4个联系人,3个组,现将其更改为不限个数
在这里插入图片描述

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

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

继续返回
在这里插入图片描述
发现call指令上方有将ASCII码形式的信息入栈,结合刚才return语句上方的messagebox,应该为messagebox调用了栈内ASCII码来输出字符,若直接寻找messagebox函数则可能出现错误位置。

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

将jl更改诚jmp强制完成跳转,保存文件并进行测试
在这里插入图片描述
测试成功
修改组的方法相似

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值