网络安全 频道

不脱壳直接破解软件的方法

做好上述准备工作后,你就可以使用任一编程软件来编写你的补丁用程序了。

请注意我们所要做的工作:修改006083B0处的跳转;植入动态补丁代码和设置返回跳转,其余还应该考虑版本检测、原文件备份、提示帮助等问题。以下是我用 VB 编写的主要部分代码:

Open Fname For Binary As fhandle

'再次检验

'=============================================

'寻找软件版本的关键标志 

'VB中Get命令读数据指针从1开始,注意与hex编辑器中的地址

'的区别。即 偏移+1。

Get fhandle, &H935B0, data1 '为保险读取四个字节,也可多读

Get fhandle, &H935B1, data2

Get fhandle, &H935B2, data3

Get fhandle, &H935B3, data4

'=============================================

If (data1 <> &H61) And (data2 <> &H75) And (data3 <> &H8) _

And (data4 <> &HB8) Then MsgBox "请核对软件版本!", _

vbCritical + vbOKOnly, "文件错误:": Close fhandle: Exit Sub

&apos;修改全部要补丁的数据

&apos;==========================

&apos;壳的出口部分的修改

Put fhandle, &H935B1, &HE9

Put fhandle, &H935B2, &H5B

Put fhandle, &H935B3, &H1F

Put fhandle, &H935B4, &H0

Put fhandle, &H935B5, &H0

Put fhandle, &H935B6, &H90

Put fhandle, &H935B7, &H90

&apos;增加动态修改用代码

Put fhandle, &H95511, &H66

Put fhandle, &H95512, &H36

Put fhandle, &H95513, &HC7

Put fhandle, &H95514, &H5

Put fhandle, &H95515, &HFA

Put fhandle, &H95516, &H31

Put fhandle, &H95517, &H51

Put fhandle, &H95518, &H0

Put fhandle, &H95519, &HB0

Put fhandle, &H9551A, &H1

Put fhandle, &H9551B, &HC6

Put fhandle, &H9551C, &H5

Put fhandle, &H9551D, &HFC

Put fhandle, &H9551E, &H31

Put fhandle, &H9551F, &H51

Put fhandle, &H95520, &H0

Put fhandle, &H95521, &H90

Put fhandle, &H95522, &HC6

Put fhandle, &H95523, &H5

Put fhandle, &H95524, &H1E

Put fhandle, &H95525, &H32

Put fhandle, &H95526, &H52

Put fhandle, &H95527, &H0

Put fhandle, &H95528, &H74

Put fhandle, &H95529, &HC6

Put fhandle, &H9552A, &H5

Put fhandle, &H9552B, &H89

Put fhandle, &H9552C, &H3C

Put fhandle, &H9552D, &H53

Put fhandle, &H9552E, &H0

Put fhandle, &H9552F, &H75

Put fhandle, &H95530, &HE9

Put fhandle, &H95531, &H86

Put fhandle, &H95532, &HE0

Put fhandle, &H95533, &HFF

Put fhandle, &H95534, &HFF

Put fhandle, &H95535, &H90

Put fhandle, &H95536, &H90

Put fhandle, &H95537, &H90

&apos;完成写入,关闭它

Close fhandle

Icefire:细心的读者可能注意到,这两段代码中所使用的首地址比我们记录的首地址多1,这是因为VB的最小指针单位是1而不是0,而文本编辑器等的最小指针单位是0,所以在不同编程平台上编程时要多加注意。

编好补丁代码后,将其编译为可执行程序,然后试试你的东西,看能否将带壳的软件打补丁而且正常工作!如果一切正常,那你就大功告成了。

后记

有时,你可能想到要别出心裁的在软件中添加点属于自己有个性的东西,比如警示框等等。那也不难,只要你知道弹出对话框需要什么条件、用到哪些代码就可以做到的。例如:现在我想在软件启动前弹出一个对话框。

我们该如何做呢?这个问题当然要难一点。如果壳外有现成的对话框调用函数,就可以简单地进行调用。如果没有则需要添加较多的代码,这里就不讲了,免得有骗稿费之嫌。

总之,编写补丁如同编写一个软件,同样能实现自己的目的与愿望,展示自己的才华与智慧。个中乐趣只有亲自品尝之。

0
相关文章