当前位置: 首页 > backend >正文

逆向学习笔记1

Acid burn

1.Acid burn

查壳发现是32位系统编译的

使用ida32位的打开此文件,点击ok

破解目标,去掉软件启动时的这个弹窗

尝试查找main函数,发现没有main,因为它的语言是delphi哈哈

依次选择这三个选项,查找字符串

发现这行kill所在的位置

双击这一行,然后在箭头所指处按x,查看哪里用到了它。

点击ok,跳转到这样一个界面

按一下或者两下空格,来到这里

push 0 是这个功能的开头,鼠标放在push 0 这一行,右键单击,选择这个assemble

发现push对应的指令是6a,而return对应的指令是c3

我们处理的思路,就是将这个6A这个地址直接改成C3,开头直接return

还是在这一行,右键,patching,changebytes

然后这样操作

可以观察一下函数发生的变化

再次右键,patching,apply patchs to

然后

会出现这么一个问题,看下面的解决办法

在任务管理器这边,结束掉就行,

重新执行伤处apply patchs操作,重新打开程序就行了

2.serial number逆向

想办法让这个check it baby,过掉这个incorect

通过shift+f12定位关键字符串

查看伪代码

按空格切换视图

发现jnz后面有2种可能,先下断点吧,观察zf寄存器中的值,此时zf=0

此时如果我将zf改成0x01,那么程序就会跳转到正确的逻辑中,但这个操作和set ip是一样的。仅仅能临时修改这一次,需要真正的修改,还是需要改掉源代码,才可以

这里涉及到一个知识点,jz和jnz。这里我们直接改jnz成jz即可。这两个函数的判断方式是相反的。所以,当jz 或者 jnz 默认跳转到a结果,而我们想要的是b结果时,我们就能直接给他改成另一个函数,就达到了实现目标。

右键,asemmble

改成如下图所示,然后按一下回车

会变成这样

再保存一下

点击apply patches即可。成功

3.序列号逆向

目标就是过掉try again

第一步还是先定位字符串

双击进去,ctrl+x交叉引用定位到这里,按空格,tab切换视图

选中这一行,f2按下断点,然后点击上方绿色小箭头运行程序

会发现这条箭头一直闪缩,代表程序要往这里跳转。跟进我们上一节学到的,jn和jnz的相反性。直接改函数就行

右箭asemmble改成jz,按一下回车

结束程序运行,右键打上 apply patch即可破解此程序

http://www.xdnf.cn/news/8012.html

相关文章:

  • 【性能提升300%】Function Calling高并发实践:gRPC优化+缓存策略+容错设计​
  • 2024正式版企业级在线客服系统源码+语音定位+快捷回复+图片视频传输+安装教程
  • id分页遍历数据漏行问题
  • 猎板PCB如何以高可靠方案护航大国重器?
  • 发布Chrome浏览器插件的几种方法
  • C++进阶--C++11
  • C++ stack对象创建、入栈、获取栈顶
  • MySQL高可用实战:PXC集群原理与部署全解析,让数据库永不宕机
  • vue页面实现table动态拆分列功能
  • 江科大TIM定时器hal库实现
  • 自定义属性面板开发指南:公开属性声明、监听回调与基础类型配置
  • Linux:缓冲区
  • BigFoot (DBM) Deadly Boss Mods
  • DL00988-稀疏增强数据transformer船舶AIS轨迹预测含完整数据集
  • 腾讯文档怎么设置多列筛选条件
  • 固定翼无人机抛投技术分析!
  • 从零基础到最佳实践:Vue.js 系列(5/10):《状态管理》
  • 11-帮助中心
  • cmd如何从C盘默认路径切换到D盘某指定目录
  • 前端之vue3创建基本工程,基本登录、注册等功能的完整过程
  • 【IC验证】systemverilog_包
  • 自由开发者计划 001:创建一个用于查看 Jupyter Notebook 的谷歌浏览器插件 Jupyter Peek
  • 常见的LLM
  • 从零基础到最佳实践:Vue.js 系列(2/10):《模板语法与数据绑定》
  • 对抗学习(AL),生成对抗网络(GAN),强化学习,RLHF
  • 【差异分析】t-test
  • React中 lazy与 Suspense懒加载的组件
  • 26、AI 预测性维护 (燃气轮机轴承) - /安全与维护组件/ai-predictive-maintenance-turbine
  • 鸿蒙电脑系统和统信UOS都是自主可控的系统吗
  • 从零开始:Python语言基础之条件语句(if-elif-else)