小甲鱼 OllyDbg 教程系列 (十三) : 把代码和变量注入程序 以及 硬件断点

 

小甲鱼 OllyDbg 视频教程:https://www.bilibili.com/video/av6889190?p=21

程序下载地址:https://pan.baidu.com/s/1A4-BDgbdUgy-cmI4IMMzYw    提取码:jsdv

 

 

开始,按照惯例,首先用 PEiD 打开,看下是什么语言编写的程序:

可以看到是 VC6.0 。载入程序,然后运行程序,当出现 neg 窗口时,暂停程序,然后查看调用堆栈:

对应代码位置打上断点:

重新载入程序,运行,发现程序断点到断点位置,按 F9 运行,neg 窗口出现,等一会消失,发现程序运行到断点位置的下一行,说明断点位置正确,这个就是出现 neg 窗口的位置。

现在既然找到断点位置,常规做法是 直接 nop 掉这个call 调用,现在可以 nop掉保存程序,然后运行,发现不是想要的结果,说明不能直接 nop。

再重新载入原来的程序,按 F9 发现程序的三个窗口都是通过这个 call 调用来显示的,然后往上看,发现一个 je 跳转,这个可以控制 call 调用是不是显示窗口,所以就相当于一个 if else ,这里要显示最后一个窗口 所以就相当于等于 2 时跳转,

可以找一块程序自身不用的内存空间来写入内联补丁。点击 m ,查看程序的 PE 映射:

双击 data 段,进入 data 段,找到没有使用位置,下一个硬件写入断点,测试要是用的位置在程序运行时有没有使用,如果在程序运行 的时候使用的那个位置,就按上面方法再找一个位置。然后继续测试,直到找到程序在运行时不会使用的位置:

下完 硬件写入断点后,重新载入程序,测试要写入数据的位置是否可用( 也就是程序在运行的时候不会往这个位置写入数据 ),这个示例中程序不会写入数据,这个位置可用。

找到要写入 内联补丁的位置:

在要写入的位置添加书签,方便通过 右键 -> 书签 直接跳转:

在 je 位置添加书签:

以前是通过手动跳来跳去直接改汇编代码,现在可以通过插件 NonaWrite 来写 内联补丁的 汇编代码:

开始写 内联补丁的汇编代码:

完成后,内联汇编 代码:

现在开始 改 je 跳转:

保存所有修改。然后运行修改后的程序,发现已经成功,只有 第二个 neg 窗口:

原程序运行后有3 个 neg 窗口

至此,逆向成功。

可以载入修改后的程序,按 F8 单步调试追踪修改后的程序执行流程

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Guava入门~CacheBuilderSpec

示例 package bbejeck.guava.chapter6.cache;import bbejeck.guava.common.model.TradeAccount; import bbejeck.guava.common.service.BookServiceImpl; import bbejeck.guava.common.service.TradeAccountService; import com.google.common.base.Ticker; import com.google…

初识C#

Timer转载于:https://www.cnblogs.com/changweihua/archive/2011/03/07/1974171.html

小甲鱼 OllyDbg 教程系列 (十四) : 模态对话框 和 非模态对话框 之 URlegal 和 movgear

小甲鱼 OD 使用教程:https://www.bilibili.com/video/av6889190?p22 exeScope 下载:https://pan.baidu.com/s/1dSWapltdQsX9ttl_lSoq_g 提取码:yz2p URlegal 下载:https://pan.baidu.com/s/1Ljbvsnk_1Ps0e-cp7a1F9A 提取码…

这两年的人工智能淘金热 真正赚钱的公司是这几家

编译:网易智能人工智能已经成为人们热捧的对象,正在我们中间掀起一股“淘金热”,但真正从中获得经济利益的人是谁呢?是那些争相成为淘金者的大多数创业公司吗?是那些广泛从事“掘金业务”的公司吗?还是那些…

Swiftfox:极速的冲浪体验

Toy Posted in Apps将 Firefox 针对特定的处置惩罚器进行优化之后,便成了 Swiftfox。行使 Swiftfox,无论是启动次第本人,还是阅读网站内容,都能让你觉取得一股强烈的极速之风。更爽的是,你之前所用的 Firefox 设置、主…

小甲鱼 OllyDbg 教程系列 (十五) : 逆向注册机简单算法

小甲鱼 OD 教程: https://www.bilibili.com/video/av6889190?p24 KeygenMe 下载地址:https://pan.baidu.com/s/1gXAscM3WCNpIqxIm5t1rrQ 提取码:z5in 前言 用 OD 打开程序 输入框 常用 API,当不知道是哪个时,可…

以大自然为师,可上天入地的11款仿生机器人

来源:资本实验室尽管人类已经借助科技的力量改造了世界,但许多技能仍然为人类所不拥有,很多恶劣的环境仍然是人类的禁区。而经过大自然的“公平选择”,使得某些生物具有我们所不具备的独特“技能”“,也适合在人类难以…

Guava入门~CacheStats

构建缓存对象时调用recordStats()&#xff0c;指定可以做缓存统计 LoadingCache<String,TradeAccount> tradeAccountCache CacheBuilder.newBuilder().recordStats() 获取缓存统计结果 CacheStats cacheStats cache.stats(); 示例 package bbejeck.guava.chapter6…

Linux下细碎温度等的监控与调整

作者: zhania 出自: http://www.linuxdiyf.com 装tp-fancontrol&#xff0c;限制一下gpu的温度ubuntuCPU的温度cat /proc/cpuinfo显卡温度 有个sensor applet&#xff0c;装了都能透露表现在终端里运转cpufreq-info检察CPU信息 sudo cpufreq-selector -c cpu号梗概 sudo cpufr…

深度分析:区块链技术未来发展的 8 个趋势

来源&#xff1a;36氪CB Insigh日前发表了一份关于区块链技术的研究报告&#xff0c;结合区块链目前的发展现状&#xff0c;提出了区块链技术未来发展的8个趋势。虽然加密货币和加密资产的价格已从2017年的峰值回落&#xff0c;但区块链创业公司的股权投资&#xff0c;在2018年…

小甲鱼 OllyDbg 教程系列 (十六) : 简单病毒的逆向分析

小甲鱼 OD 教程&#xff08; 多态 和 变形 分析 &#xff09;&#xff1a; https://www.bilibili.com/video/av6889190?p25 https://www.bilibili.com/video/av6889190?p26 ReverseMe Tutorial.zip&#xff1a;https://pan.baidu.com/s/1xOUvXqX6lVdcCwQvpql…

Oracle 9i 在 Red Hat 7.1 和 7.2 上的装配

泉源&#xff1a;网海拾贝 本文是我在 Red Hat 7.1 &#xff08;内核版本&#xff1a;2.4.2-2 &#xff09;和 7.2&#xff08;内核版本&#xff1a;2.4.7-10&#xff09; 上装配 Oracle 9i (9.0.1) 数据库的总结&#xff0c;要是需求更多的信息请参考 Oracle 的文档&#xff1…

Guava入门~RemovalListener

RemovalNotification 实现Map.Entry接口 getCause()获取RemovalCause 1.COLLECTED: key或value被垃圾回收&#xff1b; 2.EXPIRED:已过期&#xff1b; 3.EXPLICIT:手动移除&#xff1b; 4.REPLACED:被替换&#xff1b; 5.SIZE:超过了最大限制数量。 package bbejeck.gu…

反调试技术揭秘(转)

在调试一些病毒程序的时候&#xff0c;可能会碰到一些反调试技术&#xff0c;也就是说&#xff0c;被调试的程序可以检测到自己是否被调试器附加了&#xff0c;如果探知自己正在被调试&#xff0c;肯定是有人试图反汇编之类的方法破解自己。为了了解如何破解反调试技术&#xf…

全文解析:面向基于区块链的「机器人经济学」概念中,如何验证自主智能体的行为?...

原文来源&#xff1a;arXiv作者&#xff1a;Konstantin Danilov、Ruslan Rezin、Alexander Kolotov、 Ilya Afanasyev「雷克世界」编译&#xff1a;嗯~是阿童木呀、KABUDA、EVA随着AI技术的发展&#xff0c;自主智能体在速度和精确度方面有了很大的提升&#xff0c;变得更加智能…

Ajax--让网站与时俱进

一。加载数据1.追加Html$(#dictionary).load(a.html);2.操作JavaScript$.getJSON(b.json,function(){});3.加载XML文档$.get(d.xml,function(data){});二。选择数据格式&#xff1a;Html:不需要与其它程序共享数据的情况下&#xff0c;以HTML片段提供外部数据。JSON:数据可重用…

小甲鱼 OllyDbg 教程系列 (十七) : 反调试

小甲鱼 OD 教程&#xff1a;https://www.bilibili.com/video/av6889190?p27 ReverseMe.A.B.C.D 下载地址&#xff1a;https://pan.baidu.com/s/1_aVUa6aDATSpE6bQgc6hLA 提取码&#xff1a;ebo2 [调试篇] 调试篇 - 第二十二讲 - OD使用教程22&#xff08;视频课件试验程序…

一张图看懂微软人工智能

来源&#xff1a;微软科技摘要&#xff1a;对于微软人工智能&#xff0c;你了解多少&#xff1f;是Cortana&#xff1f;是小冰&#xff1f;还是机器翻译&#xff1f;看完下面这张信息图&#xff0c;你会发现你所了解的&#xff0c;很可能只是冰山一角。看完你是否想要立刻参加微…

php中isset() , unnset(), empty()函数

isset()函数 , unnset()函数, empty() 函数是一个语言结构而非函数&#xff0c;因此它无法被变量函数调用。 isset()、empty() 只检测变量&#xff0c;检测任何非变量的东西都将导致解析错误。 后边的语句是错误而且将不会起作用&#xff1a; empty(addslashes($name))。 若想检…

mov 和 lea 的区别有哪些?

From&#xff1a;https://www.zhihu.com/question/40720890?sortcreated 汇编中 mov 和 lea 的区别是什么 &#xff1f;&#xff1a;https://bbs.csdn.net/topics/320046644 lea 是“load effective address”的缩写&#xff0c; 简单的说&#xff0c; lea指令可以用来将一个…