吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5949|回复: 106
上一主题 下一主题
收起左侧

[原创] 闲谈集——破解基础思维之二

    [复制链接]
跳转到指定楼层
楼主
yyhd 发表于 2022-11-22 11:39 回帖奖励
本帖最后由 yyhd 于 2022-11-22 11:47 编辑

之所以命名为闲谈集,就是因为所讲内容均为闲谈,没有技术含量,也不精准,或许还错误百出,
但唯一的好处就是通俗易懂,便于新人们理解。


感谢大家对第一集的支持,废话不说了,我接着继续以下的闲话,希望新人朋友们继续有收获。

今天,我们就聊聊软件的运行机制。


一、用户如何能够操作软件的运行?

我们这里只谈windows系统下的exe格式的文件。
我们玩破解,破的就是exe文件,对吧?
exe文件也叫做可执行文件。
首先我们要明白,什么叫做可执行文件。
你可能笑了,这还要问吗?
可执行文件就是扩展名为exe的文件,当然还有com、bat等格式,我们这里只谈exe格式。
如果你的答案就是这个,那还真需要继续看下去。
所谓可执行文件,是指用户用鼠标双击后直接可以运行的文件,它不需要先启动其他的软件。
比如计算器这个小软件,我们双击就直接打开了,对吧。
但是,如果你写了一篇wps文档,比如《关于吾爱破解论坛的现状和发展路径》,那么这个文档是可执行文件吗?
呵呵,当然不是,你会说这个文档的扩展名不是exe。
之所以说它不是可执行文件,不在于扩展名,而在于这个文件的打开必须依赖于先打开wps这个软件。
我们可以总结一下:
exe文件是可执行文件,它的启动不依赖其他软件。
不可执行文件,它的启动必须依赖其他软件。
那么,你可能要问了,区分是不是可执行文件有什么意义吗?
当然有,意义重大。
你先想一想,为什么有些文件可以是可执行文件,有些文件是不可执行文件?
显然,这两类文件一定是有区别的。
这个区别就在于可执行文件有专门的文件结构。我们把可执行文件简称为PE文件。
凡是PE文件,必须有以下图示的结构:



看到吗?熟悉吗?还记得我在上一集说的内存分区吗?
当我们双击一个PE文件,操作系统就会按照PE文件的结构把相应的数据拷贝到内存的不同区域中。尤其是text这节区,里面存放着软件执行的程序代码。
如果是非PE文件,就不是上面的结构。
现在问题来了,我们的操作系统把PE文件相关的数据已经放在内存中了,那么接下来怎么执行代码呢?
答案就是,操作系统会根据PE文件结构,找到这个程序的第一句代码的位置,这个位置就是main函数的位置,还记得main函数吗?上一集也说过。这个位置也叫做程序入口点,或者叫OEP。
一般而言,正常PE程序的入口点大多在401000这个起始地址以后的text区段内。
下面给大家直观的看一下:
我用易语言编写了一个最简单的程序。





我们现在用OD打开,然后看一下分区:





看到吗?text代码区是从401000开始的。
如果我们进一步用易语言分析工具来看,





401006这个地址就是刚才写的易语言程序的入口点,或者叫OEP,我们自写的代码是从OEP以后才真正开始执行的。
那你可能会继续问,既然软件代码是在OEP以后才真正开始执行,那为什么我用OD打开软件后,显示的第一句代码不是OEP的位置?
比如,还是这个软件,如果你用OD直接打开,会出现下图:





明明第一句的代码地址是0045DBE5。
这是因为程序在执行你写的代码之前,还要做一些初始化的相关工作,或者说要先执行一些基础性的、准备性的代码,这些代码是系统自动生成的。
等执行完这些基础性的工作后,才会转到OEP那里,开始执行你自己写的代码。
你应该基本懂了,但是你还会继续问,我知道这些有什么意义呢?
意义就在于,你要清楚破解破的是软件作者自写的代码,而这些代码的位置一定是在真正的OEP之后。
比如易语言编写的软件,为什么我们要用FF25去找易语言体,就是因为这个位置区域就是OEP所在的位置





这下更清楚一些了吧。


我们再接着分析。
当可执行文件被双击后,它的相关数据都存放到了不同分区,也找到了OEP,那么程序是不是就一句一句的顺序执行?
当然不是。
假设这个程序作者写了1000行代码,我们假定从1开始编号,第一句代码的地址是1,第二句是2,最后一句是1000。
那么,程序在运行过程中,会先停到地址1这个位置。
然后等待用户对这个软件的操作。
假定,我们有如下图的一个软件





这个软件很简单,有两个按钮,分别是按钮1和按钮2,用户点击按钮1会弹出一个“欢迎您光临”的对话框,点击按钮2会弹出一个窗口。
那么当用户点击按钮1时,代码怎么执行呢?
首先你要明白,代码现在都在内存里,决定执行哪个地址的代码是操作系统来负责的,用户只是做了一个点击按钮的动作。
或者这么说,
用户点击了按钮1——操作系统看到了用户的动作——操作系统选择执行某个地址的代码
可见,程序的代码不是从OEP开始顺序执行的,而是由操作系统选择不同的地址进行执行。
那么,操作系统怎么看到用户的动作呢?又怎么知道该执行哪一句代码呢?
如果你是操作系统的开发者,你会想出什么办法解决这个问题呢?
呵呵,你先休息一下,因为有NB的人已经想到了最好的解决办法。
这个解决办法就是引入操作系统的“消息机制”。
简单来说,就是通过消息通知来完成。
软件被设计成窗口软件,操作系统监控所有的窗口。
每个窗口软件在执行的时候,操作系统都建立了一个专门的消息通道。
这里需要有几个前提:
第一,用户对窗口的任何操作,都会产生一个窗口消息,操作系统会捕获到这个消息,比如用户点击按钮1,操作系统会接收到一个窗口消息,这个消息的内容就是“用户点击了按钮1”。
第二,软件作者在编写软件时,要在编程中有专门的消息处理函数,这个消息处理函数针对不同的消息会执行不同的代码,产生不同的事件,
比如点击按钮1,产生的消息值是1,作者编程时就要写上如果消息值是1,那么就执行弹出对话框的这段代码。
比如点击按钮2,产生的消息值是2,作者编程时就要写上如果消息值是2,那么就执行弹出窗口的那段代码。


这样一来,操作系统只要找到软件作者编写的消息处理函数的地址,然后程序就可以根据不同的消息值来执行不同的代码段。


你基本能理解到这里,也就差不多了。
还是举易语言的例子,易语言编写的程序里的消息派发函数是很容易找到的,就是通过搜索特征码FF55FC5F5E来定位。看下图:





004172BD这个地址上的CALL函数就是易语言编写程序的消息派发函数,所有的按钮点击的操作都会通过这个CALL后面的地址去执行不同的代码段,
所以在这个地址上设置断点,你就可以很快的找到不同的按钮点击后要执行的关键代码。


以上的内容已经不少了,大家先消化一下,以后接着说。


如果您觉得确实有帮助,请给支持,我会继续努力写下去,谢谢!

免费评分

参与人数 91吾爱币 +96 热心值 +84 收起 理由
tianxin520 + 1 + 1 谢谢@Thanks!
zwd88571539 + 1 + 1 我很赞同!
yt13299374849 + 1 + 1 热心回复!
teachet + 1 + 1 我很赞同!
w981476510 + 1 + 1 我很赞同!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kiloleo2 + 1 + 1 谢谢@Thanks!
开心的毛毛 + 1 + 1 我很赞同!
zmgh188 + 1 用心讨论,共获提升!
voa258 + 1 + 1 谢谢@Thanks!
人间值得 + 1 + 1 我很赞同!
yuridexiaoyu + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
bullshit + 1 + 1 谢谢@Thanks!
xxxxx777xxxx + 1 + 1 谢谢@Thanks!
nexuslee + 1 + 1 对新手很友好。
hopeallen + 1 谢谢@Thanks!
七夕的乌鸦 + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
wwhtm + 1 + 1 谢谢@Thanks!
csutd + 1 + 1 我很赞同!
ppa18874366 + 1 谢谢@Thanks!
Hxie + 1 我很赞同!
Joms + 1 + 1 用心讨论,共获提升!
huskysir13 + 1 + 1 用心讨论,共获提升!
Cions + 1 我很赞同!
wogeshange + 2 + 1 我很赞同!
LittleFlyDragon + 1 + 1 用心讨论,共获提升!
hx924923235 + 1 + 1 我很赞同!
mduim + 1 + 1 谢谢@Thanks!
丿颠覆灬虎哥 + 1 + 1 谢谢@Thanks!
hbsbzb + 1 + 1 谢谢@Thanks!
yyyao2008 + 1 + 1 真正的通俗易懂。点赞
ydjhome + 1 + 1 我很赞同!
VeryFar + 1 我很赞同!
DaiTian + 1 + 1 谢谢 @Thanks!
chizha + 1 + 1 我很赞同!
935 + 1 + 1 谢谢@Thanks!
snowcatflyer + 1 + 1 用心讨论,共获提升!
zuohaoda + 1 + 1 追更
wbzb + 1 + 1 热心回复!
allenzhu + 1 + 1 用心讨论,共获提升!
wangfs111 + 1 + 1 谢谢@Thanks!
about583110662 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!有爱的大神!
huihua + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
aa20221101 + 1 + 1 小白,追更
lwqlwql + 1 + 1 我很赞同!
流泪的小白 + 1 + 1 我很赞同!
Wire0 + 1 + 1 用心讨论,共获提升!
冷杉 + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
ciker_li + 2 + 1 谢谢@Thanks!
Xingyemao + 1 + 1 谢谢@Thanks!
红烧排骨 + 1 热心回复!
wangmw + 1 + 1 热心回复!
LuckyClover + 1 + 1 我很赞同!
wqx520 + 1 谢谢@Thanks!
lho + 1 谢谢@Thanks!
FAFA + 1 + 1 我很赞同!
juan365 + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
My_v + 1 + 1 用心讨论,共获提升!
dadaliya + 1 + 1 用心讨论,共获提升!
4238500 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
葫芦小金刚 + 1 + 1 加油,持续关注中
andaytom + 1 谢谢@Thanks!
NotTouchFish + 1 + 1 我很赞同!
tyz1234 + 1 + 1 我很赞同!
kogisune + 1 + 1 谢谢@Thanks!
阿诗玛奶茶 + 1 + 1 谢谢@Thanks!
蓝色木木鱼 + 1 + 1 我很赞同!
gxsky + 1 + 1 闲谈吧,必须收听你!!!
china-ray + 1 感谢分享,会持续关注的。谢谢
并非如此 + 1 + 1 我很赞同!
smakasa + 1 + 1 谢谢@Thanks!
余晖TOT + 1 + 1 我很赞同!
abszqd + 1 + 1 我很赞同!小白也能跟着缕清思路,谢谢大佬,期待更新
giibbc + 1 + 1 我很赞同!
HanMou + 1 + 1 用心讨论,共获提升!
jafck + 1 + 1 谢谢@Thanks!
ip99999 + 1 + 1 谢谢@Thanks!
飞翔的花子 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
weikun444 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
WolfAvenue + 1 + 1 热心回复!
vethenc + 1 + 1 高产似母猪的大佬!
癫疯灬博 + 1 + 1 我很赞同!
Triflingmat + 1 + 1 我很赞同!
rsice + 1 + 1 谢谢@Thanks!
aag + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
weimeicn + 1 + 1 谢谢@Thanks!
wuboxun + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
小勇 + 1 + 1 我很赞同!
234128288 + 1 + 1 前来膜拜!!!
理想的海洋 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
aag 发表于 2022-11-22 12:06
有没有一些俄文英文的教程可以学习的?很多老毛子pj的用起来都很顺手啊
推荐
小勇 发表于 2022-11-22 11:49
理想的海洋 发表于 2022-11-22 11:42
就是大佬的视频 让我逐渐入门的  谢谢一直更新   小白的福音

这个大佬只有“图文教程”,哪里来的“视频”啊???
沙发
理想的海洋 发表于 2022-11-22 11:41
大佬有没有办法解决飘零网络验证   或者是怎么查看飘零的版本  
3#
理想的海洋 发表于 2022-11-22 11:42
本帖最后由 理想的海洋 于 2022-11-22 12:01 编辑

就是大佬的教程 让我逐渐入门的  谢谢一直更新   小白的福音
4#
supernox 发表于 2022-11-22 11:47
浅显易懂,深入浅出,博大精深,佩服佩服~~~~~~
6#
wuboxun 发表于 2022-11-22 11:57
谢谢大佬的教程,通俗易懂
7#
faith9527 发表于 2022-11-22 12:00
大佬就是大佬,学到了
8#
曙光牛 发表于 2022-11-22 12:03
有没有工具详解,怎么用的都不知道,还有断点 什么的专有名词
10#
rsice 发表于 2022-11-22 12:12
希望楼主坚持更新下去!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 08:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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