能力值:
( LV4,RANK:50 )
|
-
-
2 楼
1949 10 1
国庆的说
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
说说原理好吗?
|
能力值:
( LV6,RANK:90 )
|
-
-
4 楼
这个没有什么原理可说
学会用od可以少懂一些汇编代码,但基本的意思还是要记的
or是或运算,
xor是异或运算
cmp 是比较运算
xor dword ptr ds:[eax],eax
的意思是将地址eax里面的内容与eax做比较异或运算
至于这三种运算到底怎么算的我也记不清,你在od调试器里面看看结果就明白啦
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
呵呵 偶也不懂
也想知道 是什么意思
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
明白了.就是汇编语言太菜了...学习去..谢谢~
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
呵呵 偶也不懂
也想知道 是什么意思
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
可以这样理解
0B003D4E 0800 or byte ptr ds:[eax],al
0B003D50 3100 xor dword ptr ds:[eax],eax
0B003D52 3900 cmp dword ptr ds:[eax],eax;这一句没用
0B003D54 34 00 xor al,0;任何数与0异域都不变所以可以去掉该句
0B003D56 3900 cmp dword ptr ds:[eax],eax;这一句也没用
0B003D58 3100 xor dword ptr ds:[eax],eax
0B003D5A 3000 xor byte ptr ds:[eax],al
0B003D5C 3100 xor dword ptr ds:[eax],eax
0B003D5E 0000 add byte ptr ds:[eax],al
于是变成
0B003D4E 0800 or byte ptr ds:[eax],al
0B003D50 3100 xor dword ptr ds:[eax],eax;这两个语句是异域的
0B003D58 3100 xor dword ptr ds:[eax],eax;异域也没改变结果也可以去掉
0B003D5A 3000 xor byte ptr ds:[eax],al
0B003D5C 3100 xor dword ptr ds:[eax],eax
0B003D5E 0000 add byte ptr ds:[eax],al
变成
0B003D4E 0800 or byte ptr ds:[eax],al
0B003D5A 3000 xor byte ptr ds:[eax],al
0B003D5C 3100 xor dword ptr ds:[eax],eax
0B003D5E 0000 add byte ptr ds:[eax],al
程序的结果和EAX指向的地址有关
|
能力值:
( LV12,RANK:450 )
|
-
-
9 楼
堀北说的很明白了啊,这段不是汇编代码而是UNICODE字符串:
1949 10 1
楼主不会是跟大家开玩笑吧,瞧你给出的汇编代码,恰好是一个字符串,多整齐,呵呵.
08 00 31 00 39 00 34 00 39 00 31 00 30 00 31 00 00 00
'1' '9' '4' '9' '1' '0' '1'
|
能力值:
( LV6,RANK:90 )
|
-
-
10 楼
最初由 dreaman 发布 堀北说的很明白了啊,这段不是汇编代码而是UNICODE字符串: 1949 10 1
楼主不会是跟大家开玩笑吧,瞧你给出的汇编代码,恰好是一个字符串,多整齐,呵呵.
........
不懂,学习
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
任何的猜测都是不可取的,在没有上下文联系的情况下,我只能理解为程序
不然的话,所有的程序都失去了意义
理解的不同就会有不同的答案,关键是看答案的意义是否合理
|
能力值:
( LV13,RANK:380 )
|
-
-
12 楼
当做字符串来理解是一个Unicode字符串
前面两个字节刚好是字符串的长度8
当做代码来理解,keywords真是分析的好。原理如下:
(1)
xor eax, eax
结果为零
or eax, eax
结果不变 xor eax, 0
or eax, 0
任何数与0异或都是原来的数
任何数与0同或都是原来的数
(2)
一个不紧跟跳转语句的判断语句是没有多少意义的 (1) 移去cmp 0B003D4E 0800 or byte ptr ds:[eax],al
0B003D50 3100 xor dword ptr ds:[eax],eax
0B003D54 34 00 xor al,0
0B003D58 3100 xor dword ptr ds:[eax],eax
0B003D5A 3000 xor byte ptr ds:[eax],al
0B003D5C 3100 xor dword ptr ds:[eax],eax
0B003D5E 0000 add byte ptr ds:[eax],al (2) 移去xor al, 0 0B003D4E 0800 or byte ptr ds:[eax],al
0B003D50 3100 xor dword ptr ds:[eax],eax
0B003D58 3100 xor dword ptr ds:[eax],eax
0B003D5A 3000 xor byte ptr ds:[eax],al
0B003D5C 3100 xor dword ptr ds:[eax],eax
0B003D5E 0000 add byte ptr ds:[eax],al
(3) 移去重复和多余的
0B003D4E 0800 or byte ptr ds:[eax],al
0B003D50 3100 xor dword ptr ds:[eax],eax
0B003D5E 0000 add byte ptr ds:[eax],al 结果还是不知道是什么个怪东西。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
如果地址指向的是0040开头的数据可以用做大小写的变换,至于程序究竟用他来做什么,我也不知道
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
|
|
|