能力值:
( LV4,RANK:50 )
3 楼
如果你的静态分析不熟悉,那么比较原始的办法就是从socket函数开始动态跟踪,看什么时候接收到你的数据,然后看看数据怎么处理的。
不过有可能是恶梦,永远都转不出来
能力值:
( LV2,RANK:10 )
4 楼
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文件,怎么调试?
能力值:
( LV15,RANK:500 )
6 楼
是说找不到dll? 可能是释放到某处了,
先用filemon条件过滤吧, 搞到dll再说.
如果说可以找到dll, 那么在LoadModule后F7进去, 然后尝试attach或者下断, 是看moudle是当作什么方式执行了. 不过应该是当作exe的.
从楼主贴出的片段来看, 很像是用apache搭的一个免安装webserver.
能力值:
( LV2,RANK:10 )
7 楼
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
能力值:
( LV2,RANK:10 )
11 楼
谢谢各位的支持,一直没有过搞dll的经验,.exe文件还会用OD进行跟踪,一边跟一边学习,但dll就不行了,所以一碰到Dll文件就无从下手了。
不过,我没有放弃,我还在努力,只有有目标时,进步才是最快的!
能力值:
( LV2,RANK:10 )
13 楼
有朋友熟悉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
能力值:
( LV2,RANK:10 )
14 楼
下面这段好象是日期比较,软件是试用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 "
能力值:
( LV2,RANK:10 )
15 楼
上面是从关键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
能力值:
( LV2,RANK:10 )
17 楼
改关键跳是不行的,因为注册码在服务端生成,你改客户端的跳转没有用。而在服务端只有生成注册码,却又没有关键跳,因为只要你输入一个,不管正确与否,都会返回一个注册码!
程序用的base64编码,如果返回是错误的,则在注册那段全是8个0