直接进入正题,本文学习了解计算机程序的执行原理,以及我们可以如何逆向程序修改程序的执行逻辑的基本原理。

本文从手写C的helloworld程序编译执行到逆向汇编该helloworld程序查看汇编执行,然后对相应的程序指令进行修改实现修改原有程序。

准备: 自行C语言的开发环境,MinGW 32或64位,x32dbg与x64dbg

编写程序hello.c

#include <stdio.h>
#include <stdlib.h>
void main()
{/* 我的第一个 C 程序 */printf("Hello, World! \n");system("pause");}

在当前目录打开控制台编译该程序 gcc hello.c -o hello.exe 得到 hello.exe

我们可以鼠标双击运行hello.exe,可以得到以下结果

这是一个伟大helloworld程序,那么接下来我们要做的是修改这个程序输出,比如修改为Hello,Pojie!

使用x32dbg与x64dbg打开hello.exe程序,如下图

接下来我们按F9或点击运行,可以观察程序当前模块在hello.exe程序中,那么开始我们的观察与学习

点击鼠标右键搜索字符串hello

点击搜索到的结果,可以发下如下汇编程序,(对汇编感兴趣的可以学习下8086汇编与win32汇编)

该段程序的逻辑是 lea 指令将 ds数据段地址+404000的字加载到rcx的寄存器中,然后call <JMP.&puts> 就是调用控制台输出程序,将helloworld输出打印在控制台窗口中

此刻重点来了,我们先查找下,ds:[404000]内存地址, 那么如果我们修改了ds:[404000]的数据,那么控制台打印的输出就将变化

鼠标直接可以点击修改内容,我们将world五个字符修改为Pojie,这里使用的是ASCII 需要修改的字母可以查表, 0x50  0x6A 0x69 0x65,修改后如下

然后我们将补丁保存,如下可以看见我们修改了四个字符,就是前面Pojie的16进制

点击修补文件保存得到hello1.exe

双击执行hello1.exe,结果如下

此时,我们已经逆向了hello.exe程序,且修改源程序的输出内容,下节我们将深入分析C程序的if else条件分支语句在逆向后的汇编指令,我们如何修改程序的逻辑指令

C程序逆向破解-入门学习(1)相关推荐

  1. C程序逆向破解-入门学习(2)

    阅读到此的同学相信对程序的逆向已经有了一定的了解了,如果没有那么可以参考我前面的那篇文章,传送门C程序逆向破解-入门学习(1) 直接进入正题,本文来分析C程序的if else条件分支语句在逆向后的汇编 ...

  2. 逆向破解_iOS_学习笔记_1

    监测工具 Reveal.snoop-it.introspy 反汇编工具IDA.Hopper 开发工具iOSOpenDev.Theos  OSX工具class-dump 然而出现了权限问题: cp: / ...

  3. 视频+图文+注册+机源码 | 160个CrackMe深度解析合集 | 逆向破解入门

    全部合集的获取请关注微信公众号:逆向驿站 回复:160 即可获得其余合集 以下是示例文章 160个CrackMe深度解析合集-001 提倡"刨根问底",拒绝"浅尝辄止&q ...

  4. 基于VueAxios制作音乐播放器(bilibili黑马程序员Vue入门学习记录)

    目录 使用Vue制作一个音乐播放器 前言 Vue Vue导入 Vue挂载 Vue指令 v-text v-html v-on v-show v-if v-bind v-for v-model axios ...

  5. u8 api开发报类型不匹配错误_小程序云开发入门学习,小程序支付功能常见错误汇总及解决方案...

    近期有比较多的同学反映,使用云开发调取微信支付时,老是提示订单不存在.今天就把这几天大家遇到的问题统一汇总到这里. 一,订单不存在的错误 如下图所示的错误. 通常看到这个错误时,最好去看下上面看下,有 ...

  6. 鱼油账号记录程序 - 零基础入门学习Delphi38

    鱼油账号记录程序 让编程改变世界 Change the world by program 鱼油账号记录程序V1.5 非常多的重要内容请看视频讲解 @_@ [caption id="attac ...

  7. 逆向入门学习路线及渠道

    关于逆向入门. 一.语言 1.汇编. 分Inte|和AT&T两种语法.win平台主要是Intel ,Linux反汇编默认是AT&T ,目前CTF里Intel汇编占据主导地位.入门推荐王 ...

  8. 逆向破解程序脱壳篇-压缩壳

    一.普及 What?壳 所谓"壳"就是专门压缩的工具. 这里的压缩并不是我们平时使用的RAR.ZIP这些工具的压缩,壳的压缩指的是针对exe.com.和dll等程序文件进行压缩,在 ...

  9. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

最新文章

  1. 基于大数据的Uber数据实时监控(Part 1:Spark机器学习)
  2. 2.3系列系统中不支持SimpleDateFormat作字段被序列化
  3. springmvc + mybatis + ehcache + redis 分布式架构
  4. 基于大中台小前台模式设计高并发电商架构
  5. 萌新的Python练习实例100例(二)根据企业的利润,计算企业的方法奖金
  6. MapInfo格式到ArcInfo格式的转换
  7. BZOJ3157/BZOJ3516 国王奇遇记(矩阵快速幂/数学)
  8. 【渝粤教育】国家开放大学2018年春季 0690-21T化工原理及实验 参考试题
  9. C#设计模式(11)-Composite Pattern
  10. Spring整合MyBatis之SqlSession对象的产生
  11. caffee安装 Windows10+vs2015+python3.7+CPU
  12. 测试进阶必备,这5款http接口自动化测试工具不要太香~
  13. 通俗易懂的 k-means 聚类算法原理及优化(附代码)
  14. JZOJ 2499. 东风谷早苗
  15. 记录:Base64编码步骤详解
  16. 如何安装微信解决小黑块问题(一定可以使用)
  17. 千万融资资金为何青睐edge这家公司?
  18. 抖音数据分析工具pc端_用于分析Windows PC上硬盘空间的四个最佳免费工具
  19. 模具怎么报价?快速报价的计算方法
  20. 【第48篇】MaxViT:多轴视觉转换器

热门文章

  1. mysql教材课后题答案玩具_使用sql分析玩具商品数据
  2. 2022年Frm 二级学习笔记
  3. 【Java中常用的集合类】
  4. 树莓派做便携式wifi热点 无线AP,用Ralink RT5370古董级芯片usb无线网卡的实施记录
  5. mac系统下Redis安装和使用步骤详解
  6. MySQL客户端的进阶操作
  7. 命名时取代基优先顺序_用《有机化合物命名原则2017》的取代基顺序由其英文名称首字母决定,4-乙基-3,4-二甲基庚烷对么?...
  8. keil中某个文件无法修改,不能输入
  9. android:强大的图片下载和缓存库Picasso
  10. 【生活随笔】珠海出发澳门行游记(团队签证可以自助过关)