ShareKing 发表于 2022-2-10 00:51

选股软件去除时间暗桩

要达到目的:解决过期恢复正常功能这个软件有时间限制,去年脱壳时我是不知道的,脱完壳后一切功能正常,今天拿出来想用一下,没想到不能用了,是悄悄的不能用了。



上面原版界面,加的是VMProtect v3.00 - 3.5.0壳
打开Tdxw.exe,

趋势为王2处一片空白,指标失灵了。我的印象中去年脱完壳后一切正常的,今天的现象说明软件还有时间暗桩。OD加载Tdxw.exe正常运行,内存中找到QSWW.dll,去QSWW.dll的IAT看看有哪些与时间相关的函数,如果能找到GetLocalTime、Time等函数就简单了。
把带点时间日期相关的函数一一下硬件访问断点,找到下面几处:
592D590A- FF25 1C303059   jmp dword ptr ds:[<&kernel32.GetSystemTimeAsFileTime>]      ; kernel32.GetSystemTimeAsFileTime
592D59DC- FF25 A8303059   jmp dword ptr ds:[<&kernel32.GetDateFormatW>]               ; kernel32.GetDateFormatW
592D59E2- FF25 AC303059   jmp dword ptr ds:[<&kernel32.GetTimeFormatW>]               ; kernel32.GetTimeFormatW
打开软件日k线界面,上面所下断点都没有反应。看来软件作者不想让人轻松找到这个时间暗桩,如果程序IAT中没有GetLocalTime、Time这些函数,建议别下GetLocalTime函数断点,玩通达信的都知道,这种实时软件,通达信中的程序对GetLocalTime函数调用太频繁了,会把人搞崩溃。要让QSWW.dll在OD中断下来,看看QSWW.dll实时在调用哪些程序。Od中查找所有模块间的调用,全部下断点。



换看K线图,OD没反应,一个断点也没断下来。有点神奇了,不把QSWW.dll断到OD来分析,那就不好下手。ctrl+M,到程序代码段去下内存访问断点,

通达信中继续换看K线图,OD终于有反应了,断在,
59249BE9   /E9 62470000   jmp qsww.5924E350
删除内存访问断点,F7跟踪,看能不能跟踪出它是如何实时读取时间的,能找到实时取时间的地方那么软件里的时间暗桩也就能解了。









592A334C    FF15 1C303059   call dword ptr ds:[<&kernel32.GetSystemTimeAsFileTime>]       ; kernel32.GetSystemTimeAsFileTime
看到调用GetSystemTimeAsFileTime函数,但前面对这个函数下断点的时候,这个函数没有断下来。难道脱壳不完整?还能把软硬断点给屏蔽了?来分析一下这段代码:

592A332E   /74 18             je short qsww.592A3348
才能跳到
592A334C    FF15 1C303059   call dword ptr ds:[<&kernel32.GetSystemTimeAsFileTime>]       ; kernel32.GetSystemTimeAsFileTime
没有访问GetSystemTimeAsFileTime函数,可能592A332E   /74 18             je short qsww.592A3348条件不成立,那么
592A3343    FF55 F4         call dword ptr ss:
这个call要调用什么?F8


592A3343    FF55 F4         call dword ptr ss:                                 ; KernelBa.GetSystemTimePreciseAsFileTime
调用GetSystemTimePreciseAsFileTime,这个函数从堆栈 ss:=76AA5D60 (KernelBa.GetSystemTimePreciseAsFileTime)来,根本不在QSWW.dll的IAT中,难怪前面找不到。下面一路F8,跟踪到
59262768    8945 E8         mov dword ptr ss:,eax                               ; //eax=60B8FB02,时间戳{2021年6月3日}
5926276B    8955 EC         mov dword ptr ss:,edx
5926276E    6A 00             push 0x0
59262770    68 80969800       push 0x989680
59262775    8B55 F4         mov edx,dword ptr ss:
59262778    52                push edx
59262779    8B45 F0         mov eax,dword ptr ss:

5924FA2B   /7C 14             jl short qsww.5924FA41
5924FA2D   |7F 0E             jg short qsww.5924FA3D
5924FA2F   |8B85 2CFFFFFF   mov eax,dword ptr ss:                         ; //dword ptr ss:实时时间戳60B8FB02
5924FA35   |3B85 24FFFFFF   cmp eax,dword ptr ss:                         ; //dword ptr ss:预置时间戳5F74AA8B{2020年09月30日}
5924FA3B   |76 04             jbe short qsww.5924FA41
打开程序文件QSWW.dll来验证一下5F74AA8B是不是预置时间戳,程序文件QSWW.dll中查找:

找到一处,改成8B AA 74 6F,保存文件,退出OD,重新打开Tdxw.exe

时间暗桩拔除,程序恢复正常功能。

JbV140 发表于 2022-2-10 00:54

感谢楼主

oIUCxRZ85960 发表于 2022-2-10 01:48

支持一波~~

UpjaxeJ67380 发表于 2022-2-10 03:30

不知道来晚了没有

mfleB 发表于 2022-2-10 06:50

感谢楼主

king51999 发表于 2022-2-10 07:01

学习永不停歇 感谢分享

NVFpaWQXA 发表于 2022-2-10 07:01

谢谢分享

hVGxCk 发表于 2022-2-10 07:01

谢谢分享

king51999 发表于 2022-2-10 07:53

感谢分享,学习了

bsrBw 发表于 2022-2-10 07:53

谢谢分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 选股软件去除时间暗桩