最后一篇,解除Comments窗口的限制和恢复User defined URL link窗口的功能 (4千字)
7. 解除Comments窗口的限制和恢复User defined URL link窗口的功能代码在Audconv.dll中
1> 解除Comments窗口的限制
这里是用DialogBoxParamA来显示每个tag的对话框的
:10013757 6A00 push 00000000
* Possible StringData Ref from Code Obj ->"VWh"
|
:10013759 68A2970010 push 100097A2
:1001375E FF742410 push [esp+10]
:10013762 68D2000000 push 000000D2 ;<--第一个tag(Comments)的资源号
:10013767 50 push eax
* Reference To: USER32.DialogBoxParamA, Ord:0095h
|
:10013768 FF157C430710 Call dword ptr [1007437C]
要激活窗口,就要跟进10013768的call USER32.DialogBoxParamA. 你会发现有下面一段代码:
* Reference To: USER32.SetWindowTextA, Ord:0263h
|
:1000FB3D FF1590430710 Call dword ptr [10074390]
* Reference To: USER32.SendDlgItemMessageA, Ord:0213h
|
:1000FB43 8B2D84440710 mov ebp, dword ptr [10074484]
:1000FB49 53 push ebx
:1000FB4A 6A01 push 00000001
:1000FB4C 68CF000000 push 000000CF
:1000FB51 68F0030000 push 000003F0 ;<--Description下面的Edit的ID号
:1000FB56 FF36 push dword ptr [esi]
:1000FB58 FFD5 call ebp
* Reference To: USER32.GetDlgItem, Ord:0105h
|
:1000FB5A 8B1DB4430710 mov ebx, dword ptr [100743B4]
:1000FB60 680B040000 push 0000040B ;<--Language下面的ComboBox的ID号
:1000FB65 FF36 push dword ptr [esi]
:1000FB67 FFD3 call ebx
:1000FB69 6A00 push 00000000 ;<--改为01才能激活ComboBox
:1000FB6B 50 push eax
* Reference To: USER32.EnableWindow, Ord:00B9h
|
:1000FB6C FF152C440710 Call dword ptr [1007442C]
:1000FB72 6A00 push 00000000
:1000FB74 6A01 push 00000001
:1000FB76 68CF000000 push 000000CF
:1000FB7B 68E9030000 push 000003E9 ;<--Text下面的Edit的ID号
:1000FB80 FF36 push dword ptr [esi]
:1000FB82 FFD5 call ebp
:1000FB84 680D040000 push 0000040D ;<--右下角的Static的ID号
:1000FB89 FF36 push dword ptr [esi]
:1000FB8B FFD3 call ebx
:1000FB8D 6A05 push 00000005
:1000FB8F 50 push eax
* Reference To: USER32.ShowWindow, Ord:026Fh
|
:1000FB90 FF1590440710 Call dword ptr [10074490]
:1000FB96 68ED030000 push 000003ED ;<--未知控件ID号
:1000FB9B FF36 push dword ptr [esi]
:1000FB9D FFD3 call ebx
:1000FB9F 6A00 push 00000000
:1000FBA1 50 push eax
* Reference To: USER32.EnableWindow, Ord:00B9h
|
:1000FBA2 FF152C440710 Call dword ptr [1007442C]
:1000FBA8 8B8740080000 mov eax, dword ptr [edi+00000840]
:1000FBAE 8DAF3C080000 lea ebp, dword ptr [edi+0000083C]
:1000FBB4 85C0 test eax, eax
:1000FBB6 7505 jne 1000FBBD
:1000FBB8 B820500710 mov eax, 10075020
所以,将Audconv.dll中的
:1000FB4C 68CF000000 =>68FF000000 (激活Description下面的Edit)
:1000FB69 6A00 =>6A01 (激活Language下面的ComboBox)
:1000FB76 68CF000000 =>68FF000000 (激活Text下面的Edit)
:1000FB84 680D040000 =>EB10909090 (除去右下角的Static)
(:1000FB9F 6A00 =>6A01)
2> 恢复User defined URL link窗口的功能
在Audconv.dll的10013DBD比较EAX是否为4A,是,则弹出"This frame can only be edited in the licensed version."对话框.
:10013DB8 E813D00000 call 10020DD0
:10013DBD 83F84A cmp eax, 0000004A
:10013DC0 7430 je 10013DF2 ;<--一跳就没戏了
:10013DC2 8D4604 lea eax, dword ptr [esi+04]
....
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10013DC0(C)
|
:10013DF2 6A40 push 00000040
* Possible StringData Ref from Data Obj ->"Audio Converter"
|
:10013DF4 6800530810 push 10085300
* Possible StringData Ref from Data Obj ->"This frame can only be edited "
->"in the licensed version."
|
:10013DF9 68E0890810 push 100889E0
:10013DFE FF742414 push [esp+14]
* Reference To: USER32.MessageBoxA, Ord:01C3h
|
:10013E02 FF15E0430710 Call dword ptr [100743E0]
所以,将Audconv.dll中的
:10013DC0 7430 =>9090
呵呵...打完收工啰! 应该是没问题了.
另:在Metadata窗口中点击Save按钮(特别是连续几次"打开Metadata窗口、Save"的时候),有时候会清空所有Tag! 不知道你们有没有碰到这种情况.
