去水印的方法 (2千字)
下面的call 004C8D04就是用来调用DrawTextA( )来把“Trial Version”的水印加到图片上的。1、第1处加水印的地方:
* Possible StringData Ref from Code Obj ->"%o&i瞫#r|e$v& l[ai}r#|T$" //Trial Version的密文
|
:004C9CE1 B8509F4C00 mov eax, 004C9F50
:004C9CE6 E89DE9FFFF call 004C8688 //对字符串进行解密
:004C9CEB A148D04D00 mov eax, dword ptr [004DD048]
:004C9CF0 8B00 mov eax, dword ptr [eax]
:004C9CF2 8B8064070000 mov eax, dword ptr [eax+00000764]
:004C9CF8 803800 cmp byte ptr [eax], 00
:004C9CFB 753E jne 004C9D3B
:004C9CFD A16CEF4D00 mov eax, dword ptr [004DEF6C]
:004C9D02 8B4078 mov eax, dword ptr [eax+78]
* Possible StringData Ref from Code Obj ->"Twister"
|
:004C9D05 BA749F4C00 mov edx, 004C9F74
:004C9D0A E805A2F3FF call 00403F14
:004C9D0F 742A je 004C9D3B
:004C9D11 55 push ebp
:004C9D12 8D4DBC lea ecx, dword ptr [ebp-44]
:004C9D15 8B55CC mov edx, dword ptr [ebp-34]
:004C9D18 8B45F8 mov eax, dword ptr [ebp-08]
:004C9D1B E8E4EFFFFF call 004C8D04 //加水印
2、第2处:
* Possible StringData Ref from Code Obj ->"漬鹢嗺i醩鹯觘搗 駆堨a坕苧矐T?
|
:004C9E07 B8889F4C00 mov eax, 004C9F88
:004C9E0C E843E9FFFF call 004C8754
:004C9E11 8B9558FFFFFF mov edx, dword ptr [ebp+FFFFFF58]
:004C9E17 8D4DBC lea ecx, dword ptr [ebp-44]
:004C9E1A 8B45F8 mov eax, dword ptr [ebp-08]
:004C9E1D E8E2EEFFFF call 004C8D04
:004C9E22 59 pop ecx
:004C9D20 59 pop ecx
总之用DrawTextA是可以全拦下来的。004C8D04处的函数没有入口参数,也没有占用资源,所以只要把其函数体整个改成一条ret指令即可去除水印(前面发的帖子说错了,水印不是用位图资源做的)。
