能力值:
( LV2,RANK:10 )
|
-
-
2 楼
恩恩,问的都是好问题。
本人现在也是新手,共同进步了。
回答你第四个问题。
TEST EAX EAX
TEST = AND
然后由后面的指令来判别是0跳还是不为 0跳.
|
能力值:
(RANK:410 )
|
-
-
3 楼
1. cmp ecx , 08
ja 415011
这是不是说,如果ecx > 08 就跳到415011 ?
应该是ecx >= 08 就跳到415011
2. hit调试一个程序时,我把int3和单步异常忽略都去掉了,怎么程序还说“单步调试”然后关闭 ,难道有些程序anti code能让hit不能工作?
没用过hit
3.有时中断的函数过程ret时会进入系统领空, 怎么会出现系统API call程序代码的事?
SEH、回调函数、CallWindowProc都是系统API call程序代码的
4.test 几乎相当于and吗?
那 test eax ,eax
test运算方式是and,但和and不同,and会返回一个值,而test只修改标志位。
一般是不是说不为0就跳?
跳不跳要看是jz指令还是jnz指令。
5.我刚开始学调试,
调试程序中跟踪关键数据位置及变化 重要还是 流程图更重要?
有什么技巧或要注意的吗?
如果你都掌握那自然比掌握其中一个要好。
6. swith (1..3)是不是msg=1-3 , 为什么同一个窗口会有很多相同的 swith(相同) ?
swith是条件判断语句,一个程序有时是有很多这样的的分支代码的,swith(1..3)意思是这个分支的条件在1―3之间
7.olldbg中能用符号代替某变量吗,如用Key代替[414578];
利用*.map文件应该可以实现(不过我没试过,不能保证可行)
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
谢谢小虾大大那么详细的讲解, 感动啊 ..
|
能力值:
( LV8,RANK:130 )
|
-
-
5 楼
1. cmp ecx , 08
ja 415011
ecx = 08 不跳的
|
能力值:
(RANK:410 )
|
-
-
6 楼
最初由 heXer 发布 1. cmp ecx , 08 ja 415011
ecx = 08 不跳的
测试了一下,确实,ja > 则跳,jae才是 >= 则跳。
谢谢heXer指正。
|
能力值:
( LV8,RANK:130 )
|
-
-
7 楼
swith?
是switch吧。
|
能力值:
( LV8,RANK:130 )
|
-
-
8 楼
jg xxxx //Jump short if greater (ZF=0 and SF=OF)
ja xxxx //Jump short if above (CF=0 and ZF=0)
jl xxxx //Jump short if less (SF<>OF)
jb xxxx //Jump short if below (CF=1)
这里我们要讨论的其实就是这几个英文单词的含义,如果你能正确的理解这些单词,对你今后的汇编开发和阅读会有很多好处。
首先我们看 greater 和 above,greater 是较大的意思,而 above 是在什么之上的意思,两者似乎非常类似,但从数学的角度看,却有着本质的区别。
greater 是指一个有符号数的大小,例如:
0x80000000 < 0x7FFFFFFF
而 above 是指一个无符号数的大小,例如:
0x80000000 > 0x7FFFFFFF
同理,less 较小,而 below 是在什么之下,有了这样清醒的认识,将来在阅读和使用是就不容易犯错误。
以上是引用的,也许有用。
|
|
|