OD学习笔记(制作内存补丁)

    要破解的软件为天泽医院收费管理软件,图中可以看出这是一款未注册软件。这里破解的并不是登录,而是注册。

一、PIED查壳

    还是按照流程先查壳查它的编写语言,加载到PIED后发现软件并未加壳,同时我们也知晓了编写软件的语言为VB

二、载入OD

    破解这个软件的关键点就在于“未注册”这三个字上,将它加载到OD后使用搜索字符串“未注册”,得到了多个结果。

最后发现了已注册的字样,双击进入代码界面,在这里发现标注了已注册,可见这里便是破解注册项的关键。

一般来说类似这样的未注册软件都会有一个大跳转跳过了已注册,所以我们向上寻找所有的跳转,看是否为关键跳,在代码的上面我们找到了一个大跳转,而且也证实该跳转跳过了已注册。

我们将其NOP掉即可,但由于要制作内存补丁,我们取消掉这里的修改;

三、注册机编写器

打开注册机编写器,选择制作内存补丁

这里修改地址即关键跳的地址,修改长度即该处指令的长度,这里的指令是0F8489040000,两个数字为一个长度,这里12个数字为6个长度,原始指令即0F8489040000,修改指令填nop掉的指令,即909090909090。

添加好后点击生成,即可生成一个破解版的软件(这里有个骷髅头标志的即打好补丁的破解版,下面的即为正版),到此破解便成功了。

四、总结

打好的内存补丁一定得跟原来的软件在同一目录下,否则便不能用。

补丁的原理:在软件启动时需要将相应的代码加载到相应的内存地址中,补丁便是将要修改的内存地址中的代码改掉。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为OD机试:堆内存申请 在华为OD机试中,堆内存申请是其中一个重要的考点。堆内存是程序运行时动态分配的内存空间,用于存储程序运行中产生的数据。 在C/C++语言中,我们使用`malloc()`函数来申请堆内存。`malloc()`函数接受一个参数,表示要申请的内存空间大小(单位是字节),并返回一个指向申请到的堆内存的指针。 例如,我们可以使用以下代码申请一个大小为100字节的堆内存空间: ``` int* ptr = (int*)malloc(100); ``` 在申请堆内存后,我们可以通过指针`ptr`来访问和操作这段堆内存空间。还需要注意的是,申请到的堆内存空间在使用完毕后,需要使用`free()`函数来释放它,以防止内存泄漏: ``` free(ptr); ``` 另外,为了避免内存泄漏和悬挂指针等问题,我们还需要注意以下几点: 1. 在申请堆内存时,应该检查`malloc()`函数返回的指针是否为`NULL`,以确保内存申请成功。 2. 在使用完申请到的内存后,一定要记得使用`free()`函数来释放内存,避免内存泄漏。 3. 避免使用已经释放的内存,也就是悬挂指针的问题,这样的操作可能导致程序崩溃或非预期的行为。 总之,在华为OD机试中,对于堆内存申请的考察主要包括如何正确申请和释放堆内存、避免悬挂指针和内存泄漏的问题。在编写代码时,我们应该牢记这些原则,以确保程序的正确性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值