求助分析别人的patch补丁是如何实现的?
很早之前从别处下载的,当时就有这个疑问了,现在用到了,求助各位大佬。1
软件安装后本来是delphi的无壳程序,用了patch补丁后,主程序竟然加aspack壳了,而且看区段名称还变了。
这么神奇吗?patch补丁还能对程序patch的过程中加壳?是如何实现的?
2
软件关于里面的个人信息,即:注册给某人,是从注册表里读取的,也就是说,在patch过程中,补丁向注册表里应该是写入了个人信息的,或是说,patch过程中提前先写入个人信息,再启动软件,
这样软件就能读取到注册表里关于个人信息的键值,所以显示正常。问:补丁还有向注册表写入的功能?
3
这个是否是dup2制作的补丁?如果是的话,我用dup2复制实现,请问要如何操作?
软件:
https://www.123pan.com/s/YL29-Uu6Oh.html
暂时没CB了,用我之前两个一共700CB的悬赏贴来结贴吧。
https://www.52pojie.cn/thread-1833863-1-1.html
https://www.52pojie.cn/thread-1826301-1-1.html
>软件安装后本来是delphi的无壳程序,用了patch补丁后,主程序竟然加aspack壳了,而且看区段名称还变了。
这么神奇吗?patch补丁还能对程序patch的过程中加壳?是如何实现的?
先说加壳的问题,因为它用的不是真正意义上的Patch,而是替换文件实现破解,理论上Patch过程中可以对程序进行任何操作,就要看你怎么去写Patch这个程序了
>软件关于里面的个人信息,即:注册给某人,是从注册表里读取的,也就是说,在patch过程中,补丁向注册表里应该是写入了个人信息的,或是说,patch过程中提前先写入个人信息,再启动软件,
这样软件就能读取到注册表里关于个人信息的键值,所以显示正常。问:补丁还有向注册表写入的功能?
就像之前说的,Patch实际上是一个exe,理论可以执行任何操作,像dup2也确实有写入注册表的功能,单纯看你给的例子,就是把编辑好的reg文件写入注册表,并没有其他操作。内容如下
```
Windows Registry Editor Version 5.00
"Enablefutula"=hex:c9,62,d7,65,3f,8f,e4,40
"LastSetModCon"=hex:c9,62,d7,65,3f,8f,e4,40
"RegDate"=hex:9a,b6,58,67,3f,8f,e4,40
"UserName"="Cracked By l0v3cr4ck"
"Rname"=""
"SoftRunTimes"=dword:00000001
```
> 这个是否是dup2制作的补丁?如果是的话,我用dup2复制实现,请问要如何操作?
据判断应该是dup2的补丁,复制就是增加两个模块,一个是额外文件模块,一个是注册表模块,把释放的加壳的exe和上面注册表内容导入就好了 云在天 发表于 2023-9-27 07:55
>软件安装后本来是delphi的无壳程序,用了patch补丁后,主程序竟然加aspack壳了,而且看区段名称还变了 ...
总结一下:1、导入了注册表 2、替换了主程序。 哈哈,还能这样结帖。。。{:1_921:} 1、应该是用加壳主程序替换了源程序文件;2、dup2补丁工具就支持导入注册表文件;3、你先要分析出patch数据,才能用dup2实现。 本帖最后由 朱朱你堕落了 于 2023-9-27 15:38 编辑
云在天 发表于 2023-9-27 07:55
>软件安装后本来是delphi的无壳程序,用了patch补丁后,主程序竟然加aspack壳了,而且看区段名称还变了 ...
感谢总版分析,就是这样子的。
1
他这个补丁还是有问题的,情况如下:
运行patch补丁,点patch按钮,之后再运行目标主程序“FolderEncrypt.exe”,OK,这时程序是“已注册”状态。现在关闭掉软件,再运行程序,
发现还是“未注册”状态,只能关闭掉,再次重新运行patch补丁,再点patch按钮,再运行FolderEncrypt.exe。
也就是说,每次都要先运行patch补丁,补丁后再运行软件才是“已注册”。按理说,应该是只在第一次patch成功后,之后只要运行程序就行了,
以后都不需要用到patch补丁了。所以我感觉这很不合理,也不合逻辑,什么原因引起的?有解决方案吗?
2
关于注册表的问题,就以此软件为例子,软件的注册信息是从注册表里读取的,这就需要我先向注册表里写入
一些数据,再启动软件。编辑好的reg文件直接导入也行,但是reg文件太明显了,而且还要手动双击一下导入,
显得不和谐还麻烦,有啥好办法解决这个问题,使用本例中dup2的注册表写入功能?而且很明显,只要第一次
写入注册表成功就行,后面根本就用不到dup2生成的补丁。有没有别的方案? 我只会文件对比,补丁加密了我就看不懂了 本帖最后由 cndml 于 2023-9-28 09:43 编辑
软件破解的有问题,原因是他的破解实际只修改了一处跳转,跳转地址jne改成je,这个跳转前面判断的是Rname是否为空。初始破解写入注册表里Rname键值为空的时候,会正确写入注册标志位。程序运行一次后,会写入Rname值,第二次运行时由于Rname值不为空,修改后的判断会走错误流程,自然显示未注册。正确的破解方式是把前面的标志位sete bl,改成move bl,1 ,紧接的判断语句改成jmp,注册表信息里的用户名,注册时间不写入也行,只不过注册时间为0,显示1899/12/31,应该不影响使用。具体代码地址如下:
mov edx,dword ptr ss:
pop eax
call <folderencrypt0.sub_407BE4>
sete bl
cmp dword ptr ss:,0
jne folderencrypt0.75234A
xor ebx,ebx
xor eax,eax
pop edx
pop ecx
pop ecx
wgz001 发表于 2023-9-27 15:58
我只会文件对比,补丁加密了我就看不懂了
那我比你还多会一招内存对比
那我把资源修改下,区块删除下。。。岂不变化大了还是对比不了?
页:
[1]