能力值:
( LV2,RANK:10 )
|
-
-
2 楼
[QUOTE=askmeasku;393881]居然我的第一次提问会是...
mov cl, [esi+edx] //esi是一个字符串的首地址,edx每次加一做循环变量.
and ecx, 0FFh
bt dword_4A6A90, ecx ...[/QUOTE]
mov cl, [esi+edx] //esi是一个字符串的首地址,edx每次加一做循环变量.
and ecx, 0FFh
bt dword_4A6A90, ecx // dword_4A6A90 dd 1
jb short loc_4A6A83 // 经过上面的bt执行 根据CF标志位跳转
......
反汇编了一断程序 发现了一个很奇怪的功能
cl中放不同的字符,经过BT指令加跳转居然把不同的字符分开了,也就是说过滤了
一些特殊的字符!! 这个功能是怎么实现的啊,那为大虾能解释下.
这个功能具体过滤了那些字符呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
[QUOTE=askmeasku;393881]居然我的第一次提问会是...
mov cl, [esi+edx] //esi是一个字符串的首地址,edx每次加一做循环变量.
and ecx, 0FFh
bt dword_4A6A90, ecx ...[/QUOTE]
实际调试发现个很奇怪很奇怪的功能!
字母 数字 00 通过会跳转
而0x27单引号了 0x29右括号 0x3B分号 .....
这些通过的时候不会跳转!
具体的过程谁能详细说清楚么 ,
//esi是一个字符串的首地址,edx每次加一做循环变量.
dword_4A6A90 dd 1
// 经过bt执行 根据CF标志位跳转
.nsp0:004A6A54 sub_4A6A54 proc near ; CODE XREF: sub_4A9590+F8p
.nsp0:004A6A54
.nsp0:004A6A54 var_1 = byte ptr -1
.nsp0:004A6A54
.nsp0:004A6A54 push esi
.nsp0:004A6A55 push ecx
.nsp0:004A6A56 mov [esp+1+var_1], 1
.nsp0:004A6A5A mov esi, eax
.nsp0:004A6A5C mov eax, edx
.nsp0:004A6A5E dec eax
.nsp0:004A6A5F test eax, eax
.nsp0:004A6A61 jl short loc_4A6A87
.nsp0:004A6A63 inc eax
.nsp0:004A6A64 xor edx, edx
.nsp0:004A6A66
.nsp0:004A6A66 loc_4A6A66: ; CODE XREF: sub_4A6A54+31j
.nsp0:004A6A66 mov cl, [esi+edx]
.nsp0:004A6A69 cmp cl, 7Fh
.nsp0:004A6A6C ja short loc_4A6A7B
.nsp0:004A6A6E and ecx, 0FFh
.nsp0:004A6A74 bt dword_4A6A90, ecx
.nsp0:004A6A7B
.nsp0:004A6A7B loc_4A6A7B: ; CODE XREF: sub_4A6A54+18j
.nsp0:004A6A7B jb short loc_4A6A83
.nsp0:004A6A7D mov [esp+1+var_1], 0
.nsp0:004A6A81 jmp short loc_4A6A87
.nsp0:004A6A83 ; ---------------------------------------------------------------------------
.nsp0:004A6A83
.nsp0:004A6A83 loc_4A6A83: ; CODE XREF: sub_4A6A54:loc_4A6A7Bj
.nsp0:004A6A83 inc edx
.nsp0:004A6A84 dec eax
.nsp0:004A6A85 jnz short loc_4A6A66
.nsp0:004A6A87
.nsp0:004A6A87 loc_4A6A87: ; CODE XREF: sub_4A6A54+Dj
.nsp0:004A6A87 ; sub_4A6A54+2Dj
.nsp0:004A6A87 mov al, [esp+1+var_1]
.nsp0:004A6A8A pop edx
.nsp0:004A6A8B pop esi
.nsp0:004A6A8C retn
.nsp0:004A6A8C sub_4A6A54 endp
.nsp0:004A6A8C
|
能力值:
(RANK:570 )
|
-
-
4 楼
BT是位检查指令
|
|
|