首页
社区
课程
招聘
FlexLM保护的一段代码
发表于: 2004-12-3 13:01 5901

FlexLM保护的一段代码

2004-12-3 13:01
5901
望高手指点,请问下面代码是什么意思?
0069FC50   /$  8B4424 04                 mov eax,dword ptr ss:[esp+4]
0069FC54   |.  8BD0                      mov edx,eax
0069FC56   |.  8038 00                   cmp byte ptr ds:[eax],0
0069FC59   |.  0F84 97000000             je icm.0069FCF6
0069FC5F   |.  8B4424 08                 mov eax,dword ptr ss:[esp+8]
0069FC63   |>  0FBE0A                    /movsx ecx,byte ptr ds:[edx]
0069FC66   |.  83C1 BE                   |add ecx,-42                        ;  Switch (cases 42..58)
0069FC69   |.  83F9 16                   |cmp ecx,16
0069FC6C   |.  77 7C                     |ja short icm.0069FCEA
0069FC6E   |.  FF248D F8FC6900           |jmp dword ptr ds:[ecx*4+69FCF8]
0069FC75   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 42 ('B') of switch 0069FC66
0069FC77   |.  80CD 02                   |or ch,2
0069FC7A   |.  EB 6C                     |jmp short icm.0069FCE8
0069FC7C   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 43 ('C') of switch 0069FC66
0069FC7E   |.  80CD 10                   |or ch,10
0069FC81   |.  EB 65                     |jmp short icm.0069FCE8
0069FC83   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 44 ('D') of switch 0069FC66
0069FC85   |.  83C9 40                   |or ecx,40
0069FC88   |.  EB 5E                     |jmp short icm.0069FCE8
0069FC8A   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 45 ('E') of switch 0069FC66
0069FC8C   |.  83C9 02                   |or ecx,2
0069FC8F   |.  EB 57                     |jmp short icm.0069FCE8
0069FC91   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 46 ('F') of switch 0069FC66
0069FC93   |.  81C9 00000200             |or ecx,20000
0069FC99   |.  EB 4D                     |jmp short icm.0069FCE8
0069FC9B   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 47 ('G') of switch 0069FC66
0069FC9D   |.  83C9 04                   |or ecx,4
0069FCA0   |.  EB 46                     |jmp short icm.0069FCE8
0069FCA2   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 48 ('H') of switch 0069FC66
0069FCA4   |.  80CD 04                   |or ch,4
0069FCA7   |.  EB 3F                     |jmp short icm.0069FCE8
0069FCA9   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 4C ('L') of switch 0069FC66
0069FCAB   |.  81C9 00000400             |or ecx,40000
0069FCB1   |.  EB 35                     |jmp short icm.0069FCE8
0069FCB3   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 50 ('P') of switch 0069FC66
0069FCB5   |.  80C9 80                   |or cl,80
0069FCB8   |.  EB 2E                     |jmp short icm.0069FCE8
0069FCBA   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 51 ('Q') of switch 0069FC66
0069FCBC   |.  81C9 00000800             |or ecx,80000
0069FCC2   |.  EB 24                     |jmp short icm.0069FCE8
0069FCC4   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 52 ('R') of switch 0069FC66
0069FCC6   |.  83C9 08                   |or ecx,8
0069FCC9   |.  EB 1D                     |jmp short icm.0069FCE8
0069FCCB   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 54 ('T') of switch 0069FC66
0069FCCD   |.  81C9 00000100             |or ecx,10000
0069FCD3   |.  EB 13                     |jmp short icm.0069FCE8
0069FCD5   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 58 ('X') of switch 0069FC66
0069FCD7   |.  83C9 10                   |or ecx,10
0069FCDA   |.  EB 0C                     |jmp short icm.0069FCE8
0069FCDC   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 55 ('U') of switch 0069FC66
0069FCDE   |.  83C9 20                   |or ecx,20
0069FCE1   |.  EB 05                     |jmp short icm.0069FCE8
0069FCE3   |>  8B08                      |mov ecx,dword ptr ds:[eax]         ;  Case 56 ('V') of switch 0069FC66
0069FCE5   |.  80CD 08                   |or ch,8
0069FCE8   |>  8908                      |mov dword ptr ds:[eax],ecx
0069FCEA   |>  8A4A 01                   |mov cl,byte ptr ds:[edx+1]         ;  Default case of switch 0069FC66
0069FCED   |.  42                        |inc edx
0069FCEE   |.  84C9                      |test cl,cl
0069FCF0   |.^ 0F85 6DFFFFFF             \jnz icm.0069FC63
0069FCF6   \>  C3                        retn

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
2
这一段不动态调试,谁能知道啊?
估计是Vendor计算验证过程的一部分.
2004-12-3 16:38
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
无法调试啊,用ollydbg调试不过去啊
2004-12-4 15:31
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
4
你这是FlexLM的哪个版本 ? 我见过8.3版本的关键DLL加壳了,无法动态调试 的.
2004-12-4 21:42
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我的是flexlm7.2d的。
2004-12-7 12:54
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
6
flexlm7.2d的反汇编主程序查找“7648B98E”,一般有1,2处,其中
是个CAll如下:
push ebp    ====先在这个地方下断
mov ebp, esp
sub esp, 00000030
mov [ebp-10], 7648B98E  
...............
此时 d ebp或者d [ebp],你会看到vendor和feature
接着下去一个
call dword ptr [00xxxxxx] ====在这个地方下断,之后就是我们要的!
..........参看我的破文《 制作AUTOcad2002中文版网络版的Flexlm license》
一般7.2f以下的都是这样
2004-12-7 15:40
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢laoqian的无私帮助!!!
2004-12-10 10:21
0
游客
登录 | 注册 方可回帖
返回
//