本帖最后由 梦寻简单 于 2022-10-7 14:13 编辑
修改自精易模块。
如果真 (参_内容 = “”)返回 (“”)局_缓存区 = 取空白文本 (取文本长度 (参_内容))取指针文本_ (参_内容 )置入代码 ({ 96, 139, 240, 139, 125, 252, 51, 192, 51, 219, 51, 201, 172, 60, 0, 116, 82, 60, 13, 116, 68, 60, 10, 116, 68, 138, 224, 131, 249, 1, 117, 45, 102, 131, 251, 1, 117, 3, 176, 13, 170, 102, 129, 251, 0, 1, 117, 3, 176, 10, 170, 102, 129, 251, 1, 1, 117, 6, 176, 10, 170, 176, 13, 170, 102, 129, 251, 1, 2, 117, 6, 176, 13, 170, 176, 10, 170, 138, 196, 170, 185, 1, 0, 0, 0, 51, 219, 235, 179, 179, 1, 235, 175, 138, 251, 254, 199, 235, 169, 170, 97 })返回 (局_缓存区 )置入代码 ({ 139, 69, 8, 139, 0, 201, 194, 4, 0 }) 返回 (0 )
[Asm] 纯文本查看 复制代码 pushad
// 字符串来源
mov esi, eax
// 返回结果
mov edi, [ebp-0x4]
// 初始化环境
xor eax,eax
xor ebx,ebx
xor ecx,ecx
// 开始处理
label_start:
// 加载1个字节
lodsb
// 00:判断是否到字符串结尾
cmp al,00
// 是:跳转到结束
je label_exit
// \r:判断是否为换行符中的\r
cmp al,0DH
je label_handle_0D
// \n:判断是否为换行符中的\n
cmp al,0AH
je label_handle_0A
// 其他字符
// AL需要用来处理换行符,先备份一下AL的值
mov ah,al
// 判断起始字符是否为其他字符
cmp ecx,1
// 如果不是其他字符,则不处理换行符。如:0D 0A 31 32 33 00 ===> 31 32 33 00【当前正在处理0x31】
jne label_handle_other
// 只有0D。如:31 0D 32 33 00 ==> 31 0D 32 33 00【当前正在处理0x32】
cmp bx,0001H
jne label_handle_0100H
// 填充0D
mov al,0DH
stosb
label_handle_0100H:
// 只有0A。如:31 0A 32 33 00 ==> 31 0A 32 33 00【当前正在处理0x32】
cmp bx,0100H
jne label_handle_0101H
// 填充0A
mov al,0AH
stosb
label_handle_0101H:
// 0A 0D。如:31 0A 0D 32 33 00 ==> 31 32 0A 0D 00【当前正在处理0x32】
cmp bx,0101H
jne label_handle_0201H
// 0A0D可以通过stosw一次完成,纯属是不想再整一个寄存器。
// 填充0A
mov al, 0AH
stosb
// 填充0D
mov al, 0DH
stosb
label_handle_0201H:
// 0D 0A。如:31 0D 0A 32 33 00 ==> 31 32 0D 0A 00【当前正在处理0x32】
cmp bx,0201H
jne label_handle_other
// 填充0D
mov al, 0DH
stosb
// 填充0A
mov al, 0AH
stosb
label_handle_other:
// 填充其他字符,AL在上面用于处理换行符了,从备份的AH中取值。
mov al,ah
stosb
// 标记起始字符为其他字符
mov ecx,1
// 重置0A 0D
xor ebx,ebx
jmp label_start
// 处理0D
label_handle_0D:
// 仅仅是记录一下0D的存在,方便后面进行填充
mov bl,01
jmp label_start
// 处理0A
label_handle_0A:
// 仅仅是记录一下0A的存在,方便后面进行填充
// bh = bl + 1
mov bh,bl
inc bh
jmp label_start
label_exit:
// 字符串末尾的0
stosb
popad
|