首页
社区
课程
招聘
[求助]这样的dll文件怎么调试?
2007-2-14 17:50 11040

[求助]这样的dll文件怎么调试?

2007-2-14 17:50
11040
这样的dll文件怎么调试?
1、一个服务端.exe使用LoadModule LicenceService_module "modules/LicenceService.dll"   调用dll文件
#ServerRoot "\"
PidFile logs/httpd.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
Listen 5870
LoadModule LicenceService_module "modules/LicenceService.dll"   
<Location /LicenceService.asp>
  SetHandler LicenceService-handler
</Location>

2、客户端文件.exe也是通过http://localhost:5870/LicenceService.asp?cmd=1003&KEY=24110接收返回的一段代码如下(Key的值每次都不一样):
HgEEBwoNcHNgeXx/YmVoa25HVFdaXUBDRklaUrOjuLu+oaSnqq2GlICPmJ2E9IiWioTy8Prg6JHkn+zy26Pfrt/XxMfKzTAzNjkqPiIzKCsuERQXGh0WAwYJDA9ydXhtfGFkYHdtUU5UUUpeVA==&a9a0c838907be00f

3、在客户端文件中根本没有注册码比较,估计只是把假码送入到服务端,通过服务端返回错误了。

难题:用OD加载服务端.exe也是没有LicenceService.dll,直接在dll文件下断,

原帖由 pan88168 于 2007-1-12 04:27 发表
od直接加载DLL,并在关键处下断,F9。 关了OD

然后再用OD调试EXE,会自动中断在DLL文件下断处的。 这样的方法也中断不下来

该如何调试呢?

下面是该系统中主要的LicenceService.dll,有空的朋友指点一下,也可以加我QQ:1670968

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

上传的附件:
收藏
免费 0
打赏
分享
最新回复 (18)
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
water201 2007-2-15 09:28
2
0
怎么就没有一位好心大哥帮帮呢?
雪    币: 221
活跃值: (20)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
江湖无赖 1 2007-2-15 10:17
3
0
如果你的静态分析不熟悉,那么比较原始的办法就是从socket函数开始动态跟踪,看什么时候接收到你的数据,然后看看数据怎么处理的。
不过有可能是恶梦,永远都转不出来
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
water201 2007-2-15 10:31
4
0
0012F2DC   01A561D4  ASCII "00000000&00000000&00000000&-1&00000000&7&&426A0-4E670-8B2F0-9F7E1&00000000&10&00000000&00000000&2007-01-28&1&"

0012EBB0   01A574F4  ASCII "00000000&00000000&00000000&00000000&00000000&00000000&00000000&00000000&00000000&00000000&00000000&00000000&1990-01-01&00000000&"

第一行是传回机器码和用户数,以及安装时间
第二行估计假码经过服务端计算是传回的
我想关键可能要从计算注册码服务的LicenceService.dll入手了,我已经在客户端转3天了,没有收获。

但关键服务端.exe程序的LicenceService.dll是用load载入的,用OD分析根本没有这个dll文件,怎么调试?
雪    币: 238
活跃值: (230)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
okpj 2 2007-2-15 13:20
5
0
什么软件,提供下载,不然也没办法帮助你的,呵
雪    币: 3758
活跃值: (3232)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
曾半仙 12 2007-2-15 17:41
6
0
是说找不到dll? 可能是释放到某处了,
先用filemon条件过滤吧, 搞到dll再说.

如果说可以找到dll, 那么在LoadModule后F7进去, 然后尝试attach或者下断, 是看moudle是当作什么方式执行了. 不过应该是当作exe的.

从楼主贴出的片段来看, 很像是用apache搭的一个免安装webserver.
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
water201 2007-2-15 20:42
7
0
0067A3F3  |.  85C0             test    eax, eax
0067A3F5  |.  7E 0E            jle     short 0067A405
0067A3F7  |>  8BD7             /mov     edx, edi
0067A3F9  |.  3213             |xor     dl, byte ptr [ebx]
0067A3FB  |.  8816             |mov     byte ptr [esi], dl
0067A3FD  |.  83C7 03          |add     edi, 3
0067A400  |.  46               |inc     esi
0067A401  |.  43               |inc     ebx
0067A402  |.  48               |dec     eax
0067A403  |.^ 75 F2            \jnz     short 0067A3F7
0067A405  |>  5D               pop     ebp
0067A406  |.  5F               pop     edi
0067A407  |.  5E               pop     esi
0067A408  |.  5B               pop     ebx
0067A409  \.  C3               retn

主要是程序太大,一下找不到上传的空间,这段代码帮忙看看
尤其不明白这2句
0067A3F9  |.  3213             |xor     dl, byte ptr [ebx]
0067A3FB  |.  8816             |mov     byte ptr [esi], dl
雪    币: 176
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
larblue 2 2007-2-16 15:43
8
0
丛表面上来看是apache的模块文件
静态分析可能好点吧
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
water201 2007-2-20 11:03
9
0
哪里有好一点的IDA教程?
雪    币: 439
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Pan88168 2007-2-20 12:33
10
0
实在不行,就用softice
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
water201 2007-2-20 15:34
11
0
谢谢各位的支持,一直没有过搞dll的经验,.exe文件还会用OD进行跟踪,一边跟一边学习,但dll就不行了,所以一碰到Dll文件就无从下手了。

不过,我没有放弃,我还在努力,只有有目标时,进步才是最快的!
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
愤怒菜板 2007-2-21 14:20
12
0
用IDA静态分析一点点啃 没什么好办法
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
water201 2007-2-22 09:23
13
0
有朋友熟悉asprotect的算法吧?
-------------------------------------------------------
        PYgt/87koSvbYPluc+/crrilfWI+ssZSU7UhgCLmK3D1C+x+
        EX9n7ukwM5sKmI+nsH66V7L28BFTziNz5DOPLRHAqnI11wN5
        Nd/dm0Esw20mm66V7L28BFTziNz55DOP4kzt+bie/rW4grgG
        +e8/hsIuotMqUXguWKBnOXsoQ89Kg92T0MkB4FCZYuZQo=
返回来的注册码就是这个样子的。

参考:
http://bbs.pediy.com/showthread.php?s=&threadid=35163&highlight=base64
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
water201 2007-2-22 16:06
14
0
下面这段好象是日期比较,软件是试用7天的,可以直接修改成7年吗?把day改year

* Possible StringData Ref from Code Obj ->"select DATE_add(:InstallDate,INTERVAL "
                                        ->":days day) as newday,now() as "
                                        ->"today"
                                  |
:004C880B BA10894C00              mov edx, 004C8910
:004C8810 8B08                    mov ecx, dword ptr [eax]
:004C8812 FF5138                  call [ecx+38]
:004C8815 FF75EC                  push [ebp-14]
:004C8818 FF75E8                  push [ebp-18]

* Possible StringData Ref from Code Obj ->"InstallDate"
                                  |
:004C881B BA64894C00              mov edx, 004C8964
:004C8820 8B45F4                  mov eax, dword ptr [ebp-0C]
:004C8823 E89CB7FFFF              call 004C3FC4
:004C8828 E84BC0FCFF              call 00494878

* Possible StringData Ref from Code Obj ->"days"
                                  |
:004C882D BA78894C00              mov edx, 004C8978
:004C8832 8B45F4                  mov eax, dword ptr [ebp-0C]
:004C8835 E88AB7FFFF              call 004C3FC4
:004C883A 8BD3                    mov edx, ebx
:004C883C E83FBEFCFF              call 00494680
:004C8841 8B45F4                  mov eax, dword ptr [ebp-0C]
:004C8844 E83BCDFCFF              call 00495584

* Possible StringData Ref from Code Obj ->"today"
                                  |
:004C8849 BA88894C00              mov edx, 004C8988
:004C884E 8B45F4                  mov eax, dword ptr [ebp-0C]
:004C8851 E816DFFCFF              call 0049676C
:004C8856 8B10                    mov edx, dword ptr [eax]
:004C8858 FF5250                  call [edx+50]
:004C885B DD5DE0                  fstp qword ptr [ebp-20]
:004C885E 9B                      wait

* Possible StringData Ref from Code Obj ->"newday"
                                  |
:004C885F BA98894C00              mov edx, 004C8998
:004C8864 8B45F4                  mov eax, dword ptr [ebp-0C]
:004C8867 E800DFFCFF              call 0049676C
:004C886C 8B10                    mov edx, dword ptr [eax]
:004C886E FF5250                  call [edx+50]
:004C8871 DD5DD8                  fstp qword ptr [ebp-28]
:004C8874 9B                      wait
:004C8875 DD45E0                  fld qword ptr [ebp-20]
:004C8878 DC5DD8                  fcomp qword ptr [ebp-28]
:004C887B DFE0                    fstsw ax
:004C887D 9E                      sahf
:004C887E 7718                    ja 004C8898
:004C8880 DD45E8                  fld qword ptr [ebp-18]
:004C8883 DC5DE0                  fcomp qword ptr [ebp-20]
:004C8886 DFE0                    fstsw ax
:004C8888 9E                      sahf
:004C8889 770D                    ja 004C8898
:004C888B C645FB01                mov [ebp-05], 01
:004C888F B001                    mov al, 01
:004C8891 E8BEE3FFFF              call 004C6C54
:004C8896 EB07                    jmp 004C889F

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004C887E(C), :004C8889(C)
|
:004C8898 33C0                    xor eax, eax
:004C889A E8B5E3FFFF              call 004C6C54

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C8896(U)
|
:004C889F 33C0                    xor eax, eax
:004C88A1 5A                      pop edx
:004C88A2 59                      pop ecx
:004C88A3 59                      pop ecx
:004C88A4 648910                  mov dword ptr fs:[eax], edx
:004C88A7 68C4884C00              push 004C88C4

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C88C2(U)
|
:004C88AC 8B45F4                  mov eax, dword ptr [ebp-0C]
:004C88AF E8E8CCFCFF              call 0049559C
:004C88B4 8B45F4                  mov eax, dword ptr [ebp-0C]
:004C88B7 E86CB0F3FF              call 00403928
:004C88BC C3                      ret

:004C88BD E9E2B7F3FF              jmp 004040A4
:004C88C2 EBE8                    jmp 004C88AC

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C8785(C)
|
:004C88C4 33C0                    xor eax, eax
:004C88C6 5A                      pop edx
:004C88C7 59                      pop ecx
:004C88C8 59                      pop ecx
:004C88C9 648910                  mov dword ptr fs:[eax], edx
:004C88CC 68E9884C00              push 004C88E9

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C88E7(U)
|
:004C88D1 8D45D4                  lea eax, dword ptr [ebp-2C]
:004C88D4 E8F3BEF3FF              call 004047CC
:004C88D9 8D45FC                  lea eax, dword ptr [ebp-04]
:004C88DC E8EBBEF3FF              call 004047CC
:004C88E1 C3                      ret

:004C88E2 E9BDB7F3FF              jmp 004040A4
:004C88E7 EBE8                    jmp 004C88D1
:004C88E9 8A45FB                  mov al, byte ptr [ebp-05]
:004C88EC 5B                      pop ebx
:004C88ED 8BE5                    mov esp, ebp
:004C88EF 5D                      pop ebp
:004C88F0 C3                      ret

:004C88F1 000000                  BYTE  3 DUP(0)

:004C88F4 FFFFFFFF                BYTE  4 DUP(0ffh)

:004C88F8 0A00                    or al, byte ptr [eax]
:004C88FA 0000                    add byte ptr [eax], al
:004C88FC 7979                    jns 004C8977
:004C88FE 7979                    jns 004C8979
:004C8900 2D4D4D2D64              sub eax, 642D4D4D
:004C8905 64                      BYTE 064h

:004C8906 0000                    add byte ptr [eax], al
:004C8908 FFFFFFFF                BYTE  4 DUP(0ffh)

:004C890C 49                      dec ecx
:004C890D 000000                  BYTE  3 DUP(0)

:004C8910 7365                    jnb 004C8977
:004C8912 6C                      insb
:004C8913 6563742044              arpl dword ptr gs:[eax+44], esi
:004C8918 41                      inc ecx
:004C8919 54                      push esp
:004C891A 45                      inc ebp
:004C891B 5F                      pop edi
:004C891C 61                      popad
:004C891D 64                      BYTE 064h

:004C891E 64283A                  sub byte ptr fs:[edx], bh
:004C8921 49                      dec ecx
:004C8922 6E                      outsb
:004C8923 7374                    jnb 004C8999
:004C8925 61                      popad
:004C8926 6C                      insb
:004C8927 6C                      insb
:004C8928 44                      inc esp
:004C8929 61                      popad
:004C892A 7465                    je 004C8991
:004C892C 2C49                    sub al, 49
:004C892E 4E                      dec esi
:004C892F 54                      push esp
:004C8930 45                      inc ebp
:004C8931 52                      push edx
:004C8932 56                      push esi
:004C8933 41                      inc ecx
:004C8934 4C                      dec esp
:004C8935 203A                    and byte ptr [edx], bh
:004C8937 64                      BYTE 064h

:004C8938 61                      popad
:004C8939 7973                    jns 004C89AE
:004C893B 20646179                and byte ptr [ecx+79], ah
:004C893F 2920                    sub dword ptr [eax], esp
:004C8941 61                      popad
:004C8942 7320                    jnb 004C8964
:004C8944 6E                      outsb
:004C8945 65                      BYTE 065h

:004C8946 7764                    ja 004C89AC
:004C8948 61                      popad
:004C8949 792C                    jns 004C8977
:004C894B 6E                      outsb
:004C894C 6F                      outsd
:004C894D 7728                    ja 004C8977
:004C894F 2920                    sub dword ptr [eax], esp
:004C8951 61                      popad
:004C8952 7320                    jnb 004C8974
:004C8954 746F                    je 004C89C5
:004C8956 64                      BYTE 064h

:004C8957 61                      popad
:004C8958 7900                    jns 004C895A

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C8958(C)
|
:004C895A 0000                    add byte ptr [eax], al
:004C895C FFFFFFFF                BYTE  4 DUP(0ffh)

:004C8960 0B00                    or eax, dword ptr [eax]
:004C8962 0000                    add byte ptr [eax], al

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C8942(C)
|
:004C8964 49                      dec ecx
:004C8965 6E                      outsb
:004C8966 7374                    jnb 004C89DC
:004C8968 61                      popad
:004C8969 6C                      insb
:004C896A 6C                      insb
:004C896B 44                      inc esp
:004C896C 61                      popad
:004C896D 7465                    je 004C89D4
:004C896F 00FF                    add bh, bh
:004C8971 FFFFFF                  BYTE  3 DUP(0ffh)

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C8952(C)
|
:004C8974 0400                    add al, 00
:004C8976 0000                    add byte ptr [eax], al
:004C8978 64                      BYTE 064h

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C88FE(C)
|
:004C8979 61                      popad
:004C897A 7973                    jns 004C89EF
:004C897C 00000000                BYTE  4 DUP(0)

:004C8980 FFFFFFFF                BYTE  4 DUP(0ffh)

:004C8984 0500000074              add eax, 74000000
:004C8989 6F                      outsd
:004C898A 64                      BYTE 064h

:004C898B 61                      popad
:004C898C 7900                    jns 004C898E

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C898C(C)
|
:004C898E 0000                    add byte ptr [eax], al
:004C8990 FFFFFFFF                BYTE  4 DUP(0ffh)

:004C8994 06                      push es
:004C8995 000000                  BYTE  3 DUP(0)

:004C8998 6E                      outsb

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C8923(C)
|
:004C8999 65                      BYTE 065h
:004C899A 7764                    ja 004C8A00
:004C899C 61                      popad
:004C899D 7900                    jns 004C899F

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C899D(C)
|
:004C899F 00                      BYTE 0

* Referenced by a CALL at Address:
|:004C7277   
|
:004C89A0 55                      push ebp
:004C89A1 8BEC                    mov ebp, esp
:004C89A3 83C4F4                  add esp, FFFFFFF4
:004C89A6 53                      push ebx
:004C89A7 8955FC                  mov dword ptr [ebp-04], edx
:004C89AA 8BD8                    mov ebx, eax

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C8946(C)
|
:004C89AC 8B45FC                  mov eax, dword ptr [ebp-04]
:004C89AF E8C8C2F3FF              call 00404C7C
:004C89B4 33C0                    xor eax, eax
:004C89B6 55                      push ebp
:004C89B7 68F28A4C00              push 004C8AF2
:004C89BC 64FF30                  push dword ptr fs:[eax]
:004C89BF 648920                  mov dword ptr fs:[eax], esp
:004C89C2 C645FB00                mov [ebp-05], 00
:004C89C6 8B55FC                  mov edx, dword ptr [ebp-04]
:004C89C9 8BC3                    mov eax, ebx
:004C89CB E838F8FFFF              call 004C8208
:004C89D0 40                      inc eax
:004C89D1 0F8405010000            je 004C8ADC
:004C89D7 33C0                    xor eax, eax
:004C89D9 55                      push ebp
:004C89DA 68D58A4C00              push 004C8AD5
:004C89DF 64FF30                  push dword ptr fs:[eax]
:004C89E2 648920                  mov dword ptr fs:[eax], esp
:004C89E5 33C9                    xor ecx, ecx
:004C89E7 B201                    mov dl, 01

* Possible StringData Ref from Code Obj ->"0B"
                                  |
:004C89E9 A100E24B00              mov eax, dword ptr [004BE200]
:004C89EE E899ABFFFF              call 004C358C
:004C89F3 8945F4                  mov dword ptr [ebp-0C], eax
:004C89F6 8B93A4000000            mov edx, dword ptr [ebx+000000A4]
:004C89FC 8B45F4                  mov eax, dword ptr [ebp-0C]
:004C89FF E804A8FFFF              call 004C3208
:004C8A04 8B45F4                  mov eax, dword ptr [ebp-0C]
:004C8A07 E82CAEFFFF              call 004C3838
:004C8A0C 8B10                    mov edx, dword ptr [eax]
:004C8A0E FF5244                  call [edx+44]
:004C8A11 8B45F4                  mov eax, dword ptr [ebp-0C]
:004C8A14 E81FAEFFFF              call 004C3838

* Possible StringData Ref from Code Obj ->"update farm set value= :value "
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
water201 2007-2-23 08:21
15
0
上面是从关键dll里面取出来的,按我的分析,应该改了
Possible StringData Ref from Code Obj ->"select DATE_add(:InstallDate,INTERVAL "
                                        ->":days day) as newday,now() as "
                                        ->"today"
上面语句是mysq的日期比较,本来试用7天,改成7年,应该可以长斯试用啦,但我不能在dll文件里面用OD直接改
year比day多一个字符呀!l
雪    币: 277
活跃值: (312)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
wangshq397 8 2007-2-23 09:07
16
0
找到比较7天的地方,改成永远小于7天。
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
water201 2007-2-25 10:51
17
0
改关键跳是不行的,因为注册码在服务端生成,你改客户端的跳转没有用。而在服务端只有生成注册码,却又没有关键跳,因为只要你输入一个,不管正确与否,都会返回一个注册码!

程序用的base64编码,如果返回是错误的,则在注册那段全是8个0
雪    币: 238
活跃值: (230)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
okpj 2 2007-2-25 11:33
18
0
最好将整个程序发上来
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
windfeatue 2007-5-18 16:10
19
0
顶一下。。我也需要这个程序。。谁帮忙看一下
游客
登录 | 注册 方可回帖
返回