|
发表于 2019-5-23 10:24:05
|
显示全部楼层
福建省福州市
本帖最后由 cf2006a 于 2019-5-23 10:42 编辑
mov ecx, dword [ebp+0x0C] 开始查找位置
mov edx, dword [ebp+0x08] 文本操作地址
mov edx, dword [edx] 文本操作地址
xor ax, ax 初始化清零
mov al, byte [edx+ecx] 取出一个字节
cmp al, 0x80 这里x80也就是128 要把x80转换成二进制 10000000 这里jc进位跳转 两个都是1进位这里只有第一个是1也就是大于127的编码可以满足条件
jc Label1 满足条件跳转
sub ax, 0x00000100 这里100是字节256 进位了减去一个进位输出
Label1:
pop ebp 弹出堆栈
retn 0x0008 这里有两个参数所以retn8 记住一个参数4字节两个就是8 如果点可空再加4
研究了下 双字节返回负数 如(从)字 编码应该是180,211 而你这个返回-76 ,-45 开始没懂 怎么换算的 后来把它换成16进制
变成 FFFFFFFFFFFFFFB4 FFFFFFFFFFFFFFD3 去掉f转成十进制就是180,211 学习了!收下了
|
|