首页
社区
课程
招聘
[求助]百思不得其解的DLL载入问题
发表于: 2018-1-2 10:52 2839

[求助]百思不得其解的DLL载入问题

2018-1-2 10:52
2839

本菜有十几年没涉及软件的逆向了,前几天朋友拿了一个古老的软件(十年前的,出品该软件的公司都已经不存在了)想迁移到新电脑上继续使用,该软件是一机一码方式注册的,因为软件公司已经找不到了,于是本菜赶鸭子上架,重操旧业,呵呵。重新下载了OD等一堆工具(感谢看雪,很快找齐了各种需要的工具,再次回来像回家一样亲切,谢谢!)。

 

注册算法很复杂,看了一下就没再费力气,还是采用省事的暴力,(其实是功力不够,呵呵)。

 

因为有原来机器上的一对机器码注册码,所以用替换机器码的办法完美爆破主程序。因为该软件的几个主要功能模块都各自对应着单独的DLL文件,DLL里面都有完整的注册认证代码,所以又照方抓药把几个DLL爆破了,按说应该大功告成,可是问题出现了!DLL有自校验!每次载入DLL时,该DLL被我改动的几行代码处有两个字节---被---改---动---了!!!

06DFBBAC    833D 04DEF606 00     cmp     dword ptr [6F6DE04], 0
06DFBBB3    74 08                            je      short 06DFBBBD
06DFBBB5    8B0D 04DEF606         mov     ecx, dword ptr [6F6DE04]
上面是DLL原来的代码

065FBBAC    B8 36204B84     mov     eax, 844B2036
065FBBB1    894424 10       mov     dword ptr [esp+10], eax
065FBBB5    8B0D 04DE7606   mov     ecx, dword ptr [676DE04]
下面是爆破后的代码

每次载入内存时,被莫名其妙修改的是爆破后代码第一行中的84和第二行中的89,固定的两个连续的字节。修改后的内容是随机的。

0688BBAC    B8 36204BC7     mov     eax, C74B2036        (这行里的84变成了C7)
0688BBB1    8F4424 10       pop     dword ptr [esp+10]         (这行里的89变成了8F)
0688BBB5    8B0D 04DE9F06   mov     ecx, dword ptr [69FDE04]



我的问题是:

1、找不到是在哪里校验的。校验代码是在主程序里吗?校验代码是用什么手段定位到我的爆破点的?

2、每次DLL载入内存时,只是我爆破的那两行代码中有固定位置的两个字节被莫名其妙的修改了,如何在OD里面跟踪是何时改动的?

 

请指教,不胜感激!谢谢!

 

 

 

 

 

 


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 97
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
断在系统断点,    下内存改写断点不就知道哪里改的了吗?
2018-1-2 10:59
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
LiDogEgg 断在系统断点, 下内存改写断点不就知道哪里改的了吗?
谢谢!我试试,现在手生的很,呵呵。
2018-1-2 11:01
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
LiDogEgg 断在系统断点, 下内存改写断点不就知道哪里改的了吗?
没办法,DLL载入之前不知道将被分配的内存地址,如何下内存访问断点?
2018-1-2 11:16
0
雪    币: 15947
活跃值: (7193)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这是手生还是没有基本常识?
cmp          dword  ptr  [6F6DE04],  0  这句也能随便修改?
DLL是需要重定位的,你修改的代码正好在重定位位置,这样你修改的代码会因为重定位而自动变化。你可能忘记[6F6DE04]这个地址是需要重定位的。
2018-1-2 11:19
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6



tDasm

这是手生还是没有基本常识?cmp          dword  ptr  ...
兄台,谢谢回复。
这句真的可以改,不会影响DLL重定位。因为下面那个跳转不会发生。
2018-1-2 11:27
0
雪    币: 14
活跃值: (54)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
别人说的没错吧,  [6F6DE04]  是变量位置,你重新加载的时候  这个地址需要重新定位的把,被修改不是因为检测到的,是因为这个变量地址被重新定位了...
2018-1-2 12:11
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
heone 别人说的没错吧, [6F6DE04] 是变量位置,你重新加载的时候 这个地址需要重新定位的把,被修改不是因为检测到的,是因为这个变量地址被重新定位了...
还真是这样,受教了,谢谢!
2018-1-2 13:03
0
雪    币: 15947
活跃值: (7193)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9


这句真的可以改,不会影响DLL重定位。因为下面那个跳转不会发生。


别人是一点即通,你是点都点不通,还说手生?
2018-1-2 15:51
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
tDasm 这句真的可以改,不会影响DLL重定位。因为下面那个跳转不会发生。 别人是一点即通,你是点都点不通,还说手生?
呵呵,已经搞定了,多谢!!!
2018-1-3 16:13
0
游客
登录 | 注册 方可回帖
返回