能力值:
( LV2,RANK:10 )
|
-
-
2 楼
如果按通常从 1970-01-01 00:00:00 为时间原点,0x53C3F7EA 按格林尼治时间累计秒数折算为日期的话,这一天应该是北京时间(东8区)的 2014-07-14 23:31:54 ,而楼主怀疑的东8区 2014-01-01 00:00:00 如果折算成累计秒数的话,这个值应该是 0x52C2EA00。
你这是32位Windows PE程序,用OllyDBG加载这个exe文件,找到地址 004342D3,用汇编功能,把指令"jbe 00432E73" 直接改为"jmp 000432E73",然后用"复制到可执行文件"功能,把修改过的代码写回执行文件,这个关节就算过了。如果没有其他检查和校验的话,程序就不会再过期了。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
往回跳的,具体看代码,公布各软件下载地址吧
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这是软件的下载地址
http://web.mit.edu/fbml/cmr/griffin-group/SPINEVOLUTION/Download.htm
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
按您的建议试了,确实不会提示出错信息,但是程序不会运行下去。
可能作者在其它地方还有时间检验。如果是这样的话,有没有检测或搜索的办法?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
cmp eax, 53C3F7EA 有没有可能是对比当前时间和设定的过期时间(2014.01.01) 的对比?
53C3F7EA的具体内容是什么?
----------------------------------------------------
这个软件先后有几个版本,都有cmp eax , XXXXXXXX的行,
到期时间是 2014.01.01 XXXXXXXX为: 52C3F7EA
到期时间是 2013.09.01 XXXXXXXX为: 52230AAF
到期时间是 2012.09.01 XXXXXXXX为: 5041CDD9
经算: 52230AAF - 5041CDD9 = 31538390 秒 ~ 365.027天
因作者生于19 71年,所以这个可能是他的时间原点
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
0x52230AAF 2013-09-01 17:36:47
0x5041CDD9 2012-09-01 16:56:57
0x52C3F7EA 2014-01-01 19:11:38
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
谢谢您的回复!
现在的问题是,我如果把时间0x52230AAF加大,确实可以跳过提示,但程序仍然不运行,可能作者还在别的地方埋了坑。
作者在软件中4次用到了gettimeofday,不知道是否有关联?
1. gettimeofday
004080F1 . E8 92D41A00 call <jmp.&cygwin1.gettimeofday>
004080F6 . 8B75 DC mov esi,dword ptr ss:[ebp-0x24]
004080F9 . 891C24 mov dword ptr ss:[esp],ebx
004080FC . E8 FFA90300 call spinev_4.00442B00
00408101 . 8B15 44EC6D00 mov edx,dword ptr ds:[0x6DEC44]
00408107 . 8B45 A0 mov eax,dword ptr ss:[ebp-0x60]
0040810A . 39D0 cmp eax,edx
0040810C . 73 02 jnb Xspinev_4.00408110
0040810E . 89D0 mov eax,edx
00408110 > 39F0 cmp eax,esi
00408112 . 73 02 jnb Xspinev_4.00408116
00408114 . 89F0 mov eax,esi
00408116 > 8945 A0 mov dword ptr ss:[ebp-0x60],eax
00408119 . 8B45 A4 mov eax,dword ptr ss:[ebp-0x5C]
0040811C . 39C6 cmp esi,eax
2. gettimeofday
00408E40 . E8 43C71A00 call <jmp.&cygwin1.gettimeofday>
00408E45 . 8B9424 241400>mov edx,dword ptr ss:[esp+0x1424]
00408E4C . 8B9C24 201400>mov ebx,dword ptr ss:[esp+0x1420]
00408E53 . 8915 D0AC1301 mov dword ptr ds:[0x113ACD0],edx
00408E59 . 891D A4B79000 mov dword ptr ds:[0x90B7A4],ebx
00408E5F . 891424 mov dword ptr ss:[esp],edx
00408E62 . E8 99C71A00 call <jmp.&cygwin1.srandom>
00408E67 . 8B3D ACED6D00 mov edi,dword ptr ds:[0x6DEDAC]
00408E6D . 85FF test edi,edi
00408E6F . 0F85 B6030000 jnz spinev_4.0040922B
00408E75 . C705 800A8C00>mov dword ptr ds:[0x8C0A80],0x0
00408E7F . C78424 9C2900>mov dword ptr ss:[esp+0x299C],0x0
00408E8A > 31DB xor ebx,ebx
00408E8C . 8D7426 00 lea esi,dword ptr ds:[esi]
3. gettimeofday
0040904A . E8 39C51A00 call <jmp.&cygwin1.gettimeofday>
0040904F . 8B9C24 201400>mov ebx,dword ptr ss:[esp+0x1420]
00409056 . 893424 mov dword ptr ss:[esp],esi
00409059 . E8 A29A0300 call spinev_4.00442B00
0040905E . 8B15 44EC6D00 mov edx,dword ptr ds:[0x6DEC44]
00409064 . 8B8424 980000>mov eax,dword ptr ss:[esp+0x98]
0040906B . 39D0 cmp eax,edx
0040906D . 0F82 50020000 jb spinev_4.004092C3
00409073 > 39D8 cmp eax,ebx
00409075 . 0F82 41020000 jb spinev_4.004092BC
0040907B > 898424 980000>mov dword ptr ss:[esp+0x98],eax
00409082 . 8B8424 9C0000>mov eax,dword ptr ss:[esp+0x9C]
00409089 . 39C3 cmp ebx,eax
0040908B . 73 09 jnb Xspinev_4.00409096
4. gettimeofday
0040A0C2 . E8 C1B41A00 call <jmp.&cygwin1.gettimeofday>
0040A0C7 . 8B8424 241400>mov eax,dword ptr ss:[esp+0x1424]
0040A0CE . 890424 mov dword ptr ss:[esp],eax
0040A0D1 . E8 2AB51A00 call <jmp.&cygwin1.srandom>
0040A0D6 . 85F6 test esi,esi
0040A0D8 . 0F8E 51030000 jle spinev_4.0040A42F
0040A0DE . 8B1D 14F46200 mov ebx,dword ptr ds:[0x62F414]
0040A0E4 . 8D7E FF lea edi,dword ptr ds:[esi-0x1]
0040A0E7 . E8 3CB41A00 call <jmp.&cygwin1.random>
0040A0EC . 31D2 xor edx,edx
0040A0EE . 83E7 03 and edi,0x3
0040A0F1 . 899424 840000>mov dword ptr ss:[esp+0x84],edx
0040A0F8 . 898424 800000>mov dword ptr ss:[esp+0x80],eax
0040A0FF . DFAC24 800000>fild qword ptr ss:[esp+0x80]
|