能力值:
(RANK:350 )
2 楼
你是说GetWindowText与GetWindowTextA吧?原因见:
Q:为何同一函数有几种形式,如MessageBoxA(W)? A:MessageBoxA(W)是MessageBoxA,MessageBoxW两种形式缩写,Windows函数是区分字符集的:A表示ANSI,W表示Wide,即Unicode (Wide character-set),前者就是通常使用的单字节方式,而后者是双字节方式,方便处理双字节字符。Win98基本是使用ANSI字符串来进行内部操作的,但它仍可处理少数Unicode字串符函数,如MessageBoxW、MessageBoxExW等。而Win2000/XP所有核心函数都是Unicode字串符。
另外,你可以用Ollydbg来代替SoftICE,具体见:
http://bbs.pediy.com/showthread.php?s=&threadid=31840
能力值:
( LV2,RANK:10 )
3 楼
谢谢您的关注,我的问题不是ansi与unicode函数之间区别的问题。traceme程序的源代码中用的是GetDlgItemText函数,但对这个函数设断点softice却拦截不到,而对GetWindowText函数(而源代码中没有出现对该函数的调用),所以我感到非常的费解。另外,当我对GetWindowText设断点并截获以后,按F12后,控制权便交还给traceme程序,而我认为应该还是在softice中才对,这我也不是很懂!请赐教
能力值:
(RANK:350 )
4 楼
你用OllyDBG试试,用GetDlgItemTextA 设断能拦住,另外,GetDlgItemTextA 里也是调用GetWindowTextA实现的:
77D6AC1E USER32.GetDlgItemTextA 8BFF mov edi, edi ; USER32.GetDlgItemTextA
77D6AC20 55 push ebp
77D6AC21 8BEC mov ebp, esp
77D6AC23 FF75 0C push dword ptr [ebp+C]
77D6AC26 FF75 08 push dword ptr [ebp+8]
77D6AC29 E8 E89BFBFF call GetDlgItem
77D6AC2E 85C0 test eax, eax
77D6AC30 74 0E je short 77D6AC40
77D6AC32 FF75 14 push dword ptr [ebp+14]
77D6AC35 FF75 10 push dword ptr [ebp+10]
77D6AC38 50 push eax
77D6AC39 E8 FE74FCFF call GetWindowTextA
77D6AC3E EB 0E jmp short 77D6AC4E
77D6AC40 837D 14 00 cmp dword ptr [ebp+14], 0
77D6AC44 74 06 je short 77D6AC4C
77D6AC46 8B45 10 mov eax, dword ptr [ebp+10]
77D6AC49 C600 00 mov byte ptr [eax], 0
77D6AC4C 33C0 xor eax, eax
77D6AC4E 5D pop ebp
77D6AC4F C2 1000 retn 10
能力值:
( LV2,RANK:10 )
5 楼
多谢kanxue,问题已经解决了,应该是我用的这个driversuit2.7有问题,换了一个softice 4.27精简版,就可以了!另外你给我的那个解密基础知识入门帖我也看到了,十分好,谢谢!
能力值:
( LV2,RANK:10 )
6 楼
你好,能把softice 4.27精简版发给我吗?
能力值:
( LV2,RANK:10 )
7 楼
我的邮箱是lmdetective@tom.com,谢谢了!!