知识点:
1、汇编语言,看一遍题没有思路的,请查下下面几个汇编语言的作用,含义,不然看了别人的解题思路,也不会真的明白。
ZF标志位;
TEST EAX,EAX ;
REPNE SCAS BYTE PTR ES:[EDI];
NOT ECX;
DEC ECX;
2、做到这的应该前面三个都做了,那就不需要其他知识点了。这里还用不上消息断点、内存断点。
分析思路:
DTDEBUG技巧说明:
L:不知道干嘛的
E:dll基址、大小、入口、名称、文件版本、文件路径等信息。
M:下内存断点时可用;可看PE中每个模块的地址、size、owner、section、type、access、initial access、mapped as
T:不知道干嘛的
W:可下消息断点;所有窗口信息、包含handle、title、parent、winproc、id、style、extstyle、thread、clsproc(系统消息循环处理函数地址)、class( 内置类名&& 自定义类名)
H:貌似存放的句柄表信息、不确定干嘛的
C:大屏展示CPU运算逻辑也就是汇编代码
K:不知道干嘛的
B:所有断点信息
R:不知道干嘛的
做题真实感受:
当时分析的时候满脑袋想的都是账号密码应该存到某一个地方了,之后来判断如果跟账号密码字符串相等,那么就正确了。
结果就是找了半天存放账号密码的地方,什么消息断点、内存断点都下了,也找不到。最后冷静下来,看有几个汇编代码还不是很了解,很少见过不知道有什么用,查了之后,继续跟了几遍代码就明白到底是咋回事了。
这些东西一定要自己查,去看书也好,问AI也好,一定要整明白是干嘛的,积少成多,加油。
TEST 的作用:
测试某个位是否被设置、基于位的设置情况来决定程序的流程。
ZF: 按位与的结果全为0,则ZF被设置为1;否则ZF设置为0;
SF:如果最高符号位为1,则SF被设置为1;否则,SF被设置为0;
XOR的作用:
位翻转,和数据清0、加密解密、CRC校验数据传输中的错误;相同为0,不同为1.
XOR EAX,EAX; 清零
XOR EBX,1; 数据翻转
REPNE SCAS BYTE PTR ES:[EDI]
REPNE:REPeate if Not Equal :如果不相等则重复;
重复执行接下来字符串的操作指令,直到CF和ZF位同时被清除(即CF=0,ZF=0),意味着比较操作没有产生相等的结果。