首页
社区
课程
招聘
[求助]bt指令的奇特用法谁能解释一下?
发表于: 2007-12-20 15:06 4731

[求助]bt指令的奇特用法谁能解释一下?

2007-12-20 15:06
4731
居然我的第一次提问会是...

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指令加跳转居然把不同的字符分开了,也就是说过滤了
一些特殊的字符!!       这个功能是怎么实现的啊,那为大虾能解释下.

这个功能具体过滤了那些字符呢?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 371
活跃值: (18)
能力值: ( 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指令加跳转居然把不同的字符分开了,也就是说过滤了
一些特殊的字符!!       这个功能是怎么实现的啊,那为大虾能解释下.

这个功能具体过滤了那些字符呢?
2007-12-21 00:21
0
雪    币: 371
活跃值: (18)
能力值: ( 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
2007-12-21 00:30
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
4
BT是位检查指令
2007-12-21 09:36
0
游客
登录 | 注册 方可回帖
返回
//