吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 6582|回复: 121

[原创逆向图文] 什么?原来函数钓鱼竟然这般强大?随意山寨破解任意网络验证

  [复制链接]
马保国 发表于 2023-9-3 21:19 | 显示全部楼层 |阅读模式

免责声明:本文所提供的逆向分析技术和相关信息仅供学习和研究使用。任何人使用这些技术和信息所造成的后果和责任将完全由使用者自行承担。
学术研究目的:本文所分享的逆向分析文章仅用于学术研究和知识交流,目的是为了促进软件安全和漏洞修复的发展。
合法用途:请注意,任何非法使用逆向分析技术所导致的行为,包括但不限于软件盗版、破解软件、非法入侵等,均严格禁止。本文作者不承担任何与非法使用相关的责任。
遵守法律法规:请在使用逆向分析技术时遵守当地的法律法规。本文作者不对任何违法行为承担责任,并强烈呼吁读者遵守相关法律法规。
自行评估风险:使用本文所提供的逆向分析技术时,请自行评估风险并采取适当的措施。本文作者不对任何因使用这些技术所导致的损失或损害承担责任。0x0知识科普(废话比较多,懒得看,可以直接跳到主题):
PS:科普资料完全是AI自主生成,我看它说的头头是道就复制了下面,也许内容有出入本人不做任何保证,请根据自己的理解吸收知识!
什么是函数钓鱼?
函数钓鱼(Function Hooking)是一种技术,用于修改或拦截已存在的函数的行为。它通常用于动态修改程序的行为,以满足特定需求或实现特定功能。
函数钓鱼的概念是通过在目标函数的执行前后插入自定义的代码,来改变函数的行为或获取函数的执行信息。这可以用于调试、性能分析、安全检测等方面。通过函数钓鱼,开发者可以在不修改原始代码的情况下,对函数的输入、输出或执行过程进行监控、修改或扩展。
函数钓鱼通常涉及以下步骤:
定位目标函数:确定要钓鱼的目标函数,通常通过函数名、地址或其他标识来定位。
插入钓鱼代码:在目标函数的执行前后,插入自定义的代码,以实现所需的功能。
修改函数行为:钓鱼代码可以修改函数的输入参数、返回值或执行流程,以达到特定的目的。
恢复原始函数:在完成钓鱼操作后,通常需要恢复目标函数的原始行为,以确保程序的正常运行。
需要注意的是,函数钓鱼是一种高级技术,需要对目标程序的内部结构和运行机制有一定的了解。同时,函数钓鱼也可能涉及到一些安全和合法性的问题,因此在使用函数钓鱼技术时需要谨慎操作,并遵守相关法律和规定。
函数钓鱼与HOOK函数的关系?
函数钓鱼(Function Hooking)和HOOK是相似的概念。HOOK是一种技术,用于拦截和修改程序的行为,包括函数的行为。函数钓鱼可以看作是HOOK的一种具体实现方式,它通过在目标函数的执行前后插入自定义的代码,来改变函数的行为或获取函数的执行信息。
函数钓鱼和HOOK技术在实现上可能有一些细微的差别,但它们的目标都是相同的:修改或拦截函数的行为。函数钓鱼通常用于动态修改程序的行为,而HOOK技术可以用于各种场景,包括调试、性能优化、安全检测等。
总的来说,函数钓鱼可以看作是HOOK技术的一种具体应用,用于修改和拦截函数的行为。
函数钓鱼的具体应用是什么?(PS:这里是笔者问AI的问题)
a函数在调用前就会把参数(提前推入堆栈中)然后才调用函数的起始内存地址,然后正常走 mov ebp,esp   sub esp,8 这两句是把参数显示在堆栈中,或者赋值给局部变量分配内存空间。
如果我想读取a函数的参数的话可以这样,找到a函数的真实内存起始地址,jmp到我构造的b函数的真实内存地址,假设a函数地址是:401000,b函数地址是:405000,那么就是jmp 405000  跳转到b函数之后 b函数的起始地址刚好是push ebp (弥补了a函数的起始汇编硬编码的占用)然后b函数继续执行  mov ebp,esp   sub esp,8  这样一来就能读取a函数的参数,包谷局部变量也能读取和返回对嘛!
那么b函数执行完了,给了一个返回rent 应该怎么样跳转回去呢?还是说不需要跳转回去了?b函数就能代替a函数被调用的一个过程? 这个是为什么?为什么b函数能代替a函数,能不能用另一种角度来理解,b函数算不算a函数的重载呢?这个算不算函数替换呢?
AI回答:
根据你的描述,你提到了一种函数替换的方法,其中将函数a替换为函数b来读取函数a的参数并执行相应的操作。这种方法可以实现一定的功能,但需要注意以下几点:
函数替换的原理:通过跳转到函数b的起始地址,可以绕过函数a的起始汇编代码,从而读取函数a的参数和执行相应的操作。这种方法可以在一定程度上实现函数a的功能,但需要确保函数b的实现与函数a的预期行为相符。
返回地址的处理:在函数b执行完毕后,需要正确处理返回地址,以确保程序能够跳转回原始的调用点。可以使用ret指令来实现返回,确保返回地址被正确设置。
函数替换与函数钓鱼的关系:函数替换可以看作是函数钓鱼的一种具体应用。通过替换函数,可以修改函数的行为或获取函数的执行信息。在这种情况下,函数b可以被视为对函数a的钓鱼操作,用于读取参数和执行相应的逻辑。
函数替换与函数重载的区别:函数替换和函数重载是不同的概念。函数重载是指在同一作用域内,根据函数的参数类型和个数的不同,定义多个同名函数。而函数替换是通过替换函数的实现代码来改变函数的行为,不涉及函数名和参数的变化。
需要注意的是,函数替换是一种高级技术,需要对程序的内部结构和运行机制有深入的了解。同时,函数替换也可能涉及到一些安全和合法性的问题,因此在使用函数替换技术时需要谨慎操作,并遵守相关法律和规定。
函数替换的流程(PS:这里是笔者问AI的问题)
a函数本来要执行了,结果被截胡让它跳转到b函数,b函数由于a函数已经提前把参数推入堆栈中,结果b函数巧妙的就可以根据堆栈指针读取a函数传入的参数,然后b函数重新架构了代码,相当于a函数是开头,被我们替换了,然后中间和结尾的代码部分我们可以自定义,然后最后返回的时候也是代替a函数返回给调用者,这样相当于利用了函数调用约定的漏洞???a函数只是作了一个开始,b函数代替a函数完成中间到结尾的代码执行部位,b函数就相当于a函数的子例程,b函数返回的内容是可以迷惑调用者的!
AI回答:
是的,你的理解基本上是正确的。通过函数替换,你可以截胡函数a的执行流程,将其跳转到函数b,并利用函数调用约定的漏洞来读取函数a传入的参数。函数b可以重新架构代码,执行自定义的逻辑,并在最后返回给调用者,以替代函数a的执行。
这种方法可以利用函数调用约定的特性,实现对函数a的拦截和修改。通过替换函数的执行流程,你可以自由地控制函数的行为,并根据需要进行自定义操作。这种技术在一些特定的场景下非常有用,比如调试、性能分析、安全检测等。
需要注意的是,函数替换是一种高级技术,需要对程序的内部结构和运行机制有深入的了解。同时,函数替换也可能涉及到一些安全和合法性的问题,因此在使用函数替换技术时需要谨慎操作,并遵守相关法律和规定。
函数替换的使用条件是什么?(PS:这里是笔者问AI的问题)
AI回答:
对于函数钓鱼,通常需要注入一个 DLL 来拦截目标函数的调用,而不是直接在进程中修改目标函数。这是因为直接修改进程中的目标函数可能会破坏程序的完整性和稳定性,而注入 DLL 则提供了更加灵活和安全的方式来实现函数钓鱼。
以下是一些原因解释为什么需要注入 DLL 来进行函数钓鱼:
隔离性和稳定性:通过注入 DLL,可以将自定义的代码与目标函数的调用隔离开来,避免直接修改进程中的代码。这样可以保持程序的稳定性,减少对原始代码的影响。
动态性:通过注入 DLL,可以在运行时动态地拦截和修改目标函数的调用。这使得我们可以根据需要灵活地修改参数、记录调用信息、返回自定义的结果等。
可扩展性:通过注入 DLL,可以在目标进程的地址空间中插入自定义的代码,而不仅限于修改单个函数。这使得我们可以实现更复杂的功能,如针对多个函数的拦截和修改。
跨进程操作:通过注入 DLL,可以在不同的进程中实现函数钓鱼。这对于需要跨进程操作的场景非常有用,如在一个进程中拦截另一个进程的函数调用。

需要注意的是,函数钓鱼是一种潜在的危险行为,滥用函数钓鱼技术可能会导致安全问题和不稳定性。因此,在实际应用中,应该遵循相关的法律法规和道德准则,避免滥用函数钓鱼技术。
游客,如果您要查看本帖隐藏内容请回复

fakename.png
fakename.png

评分

参与人数 12威望 +1 HB +27 THX +8 收起 理由
日天 + 1
消逝的过去 + 1
笑面虎 + 1
NOP + 2
富财財 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
暮雨烟然 + 1 + 1
longge188 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
旭日东升的太阳 + 1
居然有二点五年 + 1 + 1
Shark恒 + 1 + 20 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
29590 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!

查看全部评分

本帖被以下淘专辑推荐:

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
a307551273 发表于 2023-9-3 21:52 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
boot 发表于 2023-9-3 21:53 | 显示全部楼层

学习
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
superqiu 发表于 2023-9-3 22:01 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
superqiu 发表于 2023-9-3 22:13 | 显示全部楼层

没懂为什么要置入代码获取参数  函数接口有几个参数就在新函数上声明几个参数就是了  和HOOKAPI没什么区别
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
192939 发表于 2023-9-3 22:18 来自手机端 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
笑面虎 发表于 2023-9-3 22:25 | 显示全部楼层

我来学下是怎么技术
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
1987916 发表于 2023-9-3 22:33 | 显示全部楼层

感谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
lies 发表于 2023-9-3 23:03 | 显示全部楼层


谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
不愿意透露姓名 发表于 2023-9-3 23:13 | 显示全部楼层


学习学习
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表