破解一个程序的时候我们可以通过搜索字符串的方式来寻找关键点,那么假如我们在编写一个程序的时候,怎么提防这种简单的暴破方式呢?
上一篇文章中已经提到过od里面实现搜索字符串功能是一个插件,视频中的作者给我们展示了一下这个插件的源码,下图是插件的核心函数:




可以看出,该函数显示读取整个模块的内存,然后开始寻找push,mov,lea指令,并读取他们的操作数,当他读到’\0’的时候就认为这是一个字符串,但是问题也来了,如下图

我们可以看到,上图的push ebp中的ebp是以\0结尾的,但是很明显,这并不是一个字符串,而是一个结构体。但是他却读到’\0’的时候就停止了并判定这是一个字符串,这样就导致了真正的字符串并没有读取,只读取了\0就结束了。而ida则是直接通过搜索pe文件的。

说了这么多,那么我们到底该如何防止搜索字符串呢?我们新建一个vs windows控制台程序,然后在od中的地址栏中右键修改二进制

然后输入注册失败,接着修改它的值,将14中的1改为0,

然后将字符串的二进制复制下来。(点击二进制,然后赋值二进制)粘贴在刚刚新建的vs中(说的这么麻烦,其实就是修改一下字符串的值,添加了一个\0,然后将十六进制复制到了我们写的的VS中)

写好了,接下来找到生成的exe拖入od中,再次搜索,芜湖,查找失败,用ida试一下,芜湖,也是查找失败。其实,废话这么多,原理很简单,因为我们是以十六进制的方式输入的字符串,od当然就查找不到了。。。。(主要记一下操作步骤)。
但是,当我们将str[]定义成全局变量时,却发现又可以查找出来了。
为什么呢?老师没有讲,而是当作思考题留了下来,说实话我想不出来T^T,以后有思路了再来更新吧。

字符串查完了又牵扯出了昨天的一个遗留问题,关于多线程的问题,什么是多线程呢?个人理解就是每个计算机程序都是一个进程,而每个进程都由一个或多个线程组成。(这里有个文章讲的很详细https://blog.csdn.net/beidaol/article/details/89135277)言归正传,我们之前分析的都是一个单线程的exe,可当我们碰到多线程的时候就会出现这种情况。如下图:


我们会卡到reet这里无法执行,遇到这种情况直接点击t窗口右键回复所有线程就可以了,我们接着往下单步执行,过了一会儿,我们发现地址怎么一下子变得这么大,直接由004变为了7开头。我们看一下上面那个标题,发现我们现在在kernal模块里,这明显不对啊,我们按-号退回一步,

退回一步以后:

出现了这种代码,这里我们一定要记住这种样子的代码,这种代码就是多线程的代码。也是e语言里面典型的线程特征。那么我们来看一下e语言如何写多线程exe。

既然知道这是多线程了,那我们怎么找到我们想要进的线程呢?

然后选择绿色的,红色的是我们当前cpu所在的的位置

然后就能轻松找到关键点了。

接下来就该使用破解补丁工具了
当我们在破解一个程序时,如果遇到这种情况的话,就该使用到我们的补丁破解工具了。


我们记住要修改的内存地址

然后打开xh补丁制作工具。

输入地址和我们想要修改成的内容,然后把目标文件拖拽进去。ok,生成成功。

第二个工具是pyg官方补丁工具,操作过程都一样,但是这个工具却给我们生成了一个dll文件。啊这,怎么运行嘞?我们先把生成的dll文件拖到我们破解的exe文件的路径下,然后就发现exe文件破解成功了,为什么呢?是因为每一个程序在运行的时候都会加载很多的dll文件,而我们把生成的dll文件放到exe文件的路径下的话,exe文件就会优先加载我们放入的dll文件,而而不是继续去系统里面寻找dll文件,这种方法也叫dll劫持。

nck课程笔记:破解补丁工具的使用相关推荐

  1. DC课程笔记-数字逻辑综合工具-DC Synthesis Optimization Techniques

    文章目录 课程内容笔记00:00开始至 本节视频来源于DC视频教程,本节主要约束环境 课程内容笔记00:00开始至 芯片的输出端口要驱动一个负载,如何在DC综合时候就模仿在流片回来后的输出管脚的负载, ...

  2. DC课程笔记-数字逻辑综合工具-DC Environment Attributes

    文章目录 课程内容笔记46:57开始至末尾 本节来源网络视频笔记 主要介绍DC的时序timing约束 课程内容笔记46:57开始至末尾 移除设计 remove_design -hierarchy 查看 ...

  3. SimLab Composer 9 for Mac(3D场景制作渲染工具)附破解补丁

    SimLab Composer 9 for Mac是Mac平台上一款功能十分强大,模型重多的3D场景制作渲染工具.可以轻松构建出完美的室内模型,以帮助您在电脑上设计模型,你需要的模型都可以在这款软件上 ...

  4. EasyChm 3.84正版工具破解补丁

    EasyChm 3.84正版工具破解补丁(含正版安装包):http://115.com/file/dp8nx3kn

  5. 这份深度学习课程笔记获吴恩达点赞

    来源:机器之心 本文共7470字,建议阅读8分钟. 通过本文用优美的信息图为大家解读深度学习课程的知识与亮点~ 吴恩达在推特上展示了一份由 TessFerrandez 完成的深度学习专项课程信息图,这 ...

  6. 超级干货丨优美的课程笔记,吴恩达点赞的深度学习课程信息图

    吴恩达在推特上展示了一份由 TessFerrandez 完成的深度学习专项课程信息图,这套信息图优美地记录了深度学习课程的知识与亮点.因此它不仅仅适合初学者了解深度学习,还适合机器学习从业者和研究者复 ...

  7. Deeplearning.ai深度学习课程笔记-在线版

    注意:请点击阅读原文 课程概述 课程视频离线版本可以到github:https://github.com/fengdu78/deeplearning_ai_books 查找下载. 课程地址:https ...

  8. 吴恩达老师的机器学习和深度学习课程笔记打印版

    注意:下载笔记.视频.代码:请点击"阅读原文" 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在github上,下载后可以打印. 公布了深度学习笔记的word和ma ...

  9. 跟我学《JavaScript高程3》第一讲,视频课程,课程笔记

    跟我学<JavaScript高程3> 第一讲:第1~3章 课程制作:bling,兴哥,5年Java,3年前端 课程知识:JavaScript.Html.Css 课程目标:前端体系课程,逐步 ...

最新文章

  1. (一)Android Studio 安装部署 华丽躲坑
  2. Arduino可穿戴教程之第一个程序——选择端口(三)
  3. git bash命令_?你可能不太会用的10个Git命令
  4. 利用文件头判断文件类型
  5. Math.random()
  6. Java-二叉树算法
  7. jquerymobile从index.html跳转到另外一个xxxx.html文件,js不执行的解决
  8. python树的实现_Python实现简单字典树的方法
  9. 使用jquery插件报错:TypeError:$.browser is undefined的解决方法
  10. 贪心算法(Greedy Algorithm)之霍夫曼编码
  11. [20161128]关于Little Enddian.txt
  12. Linux系统修改远程连接22端口
  13. paip..net c# 调用JS JAVASCRIPT变量与方法
  14. 清华EMBA课程系列思考之二 -- 清华探究及信息战略与管理
  15. Java多态实例主人和狗狗企鹅玩游戏
  16. gcc编译-m32、-mx32有什么区别
  17. Incorrect table definition; there can be only one auto column and it must be defined as a key
  18. 2023全国特种作业操作证高处安装、维护、拆除模拟考试试卷一[安考星]
  19. C#Ref与Out的区别
  20. window10 vmware centos8 搭建docker学习环境 部署spring web应用

热门文章

  1. SecureCRT连接及配置
  2. Qt Clion使用飞扬青云的自定义控件
  3. 【Python】【技能树评测】技巧实例-说明改进和实践【02】 - 类的初始化和初始化参数
  4. 感光法制作PCB(手工制板)
  5. ENFI下载器 v2.0.3免费版
  6. 转:医院网络营销存在的弊端
  7. php 顿号,一字一顿用逗号、顿号、破折号还是省略号?
  8. Tomcat 多实例安装 发布3个java项目: 8080 8081 8082
  9. HR看到个华为 21级程序员的简历,月薪27w,那是什么概念!
  10. oracle 日期改字符格式_Oracle时间转换成字符串