online emulator compiler assembler assembly x86 shellcode

assembly - emulator - online assembler



Shellcode alfanumérico que garantiza saltos (1)

Puede usar "4444" para establecer CF en 0.

"44" es XOR AL, 0x34 .

2 XORs con el mismo valor no producen ningún cambio en AL .

Sin embargo, debe tenerse en cuenta que XOR afecta a casi todos los indicadores aritméticos (el efecto en AF no está definido). Entonces, no es completamente "NOP".

En el modo de 32 bits, puede usar "PhohohX7X" para configurar CF en 1.

"P" es PUSH EAX .
"hohoh" es PUSH 0x686F686F .
"X" es POP EAX .
"7" es AAA .
"X" es POP EAX .

También hay una advertencia con AAA . Su efecto en la mayoría de las banderas aritméticas no está definido (excepto CF y AF , se vuelven iguales). Por lo tanto, tampoco es completamente "NOP".

Estoy tratando de escribir algún código de shell que eventualmente será en forma de un párrafo en inglés. Esto significa que estoy limitado a instrucciones que tienen códigos de operación que evalúan caracteres alfanuméricos o signos de puntuación. Esto realmente me deja con muchas instrucciones de salto diferentes que incluyen: jo , jno , jb , jae , je , jne , jbe , ja , js , jns y jp (que corresponden a las letras pz ). Cada uno de estos saltos realiza una prueba antes de que decida saltar o no. En la mayoría de los casos, puedo combinar un salto más su inverso para garantizar que se produzca un salto en el jno (por ejemplo, usando jo , jno o je y jne ), pero no puedo hacerlo en el caso de jb . La prueba para jb es CF=1 .

Mi pregunta es, ¿hay alguna serie de instrucciones alfanuméricas que sea funcionalmente un NOP, pero que también asegure que CF=1 ? CF es la bandera de acarreo, por lo que cualquier operación que garantice establecer la bandera de acarreo sería suficiente.

También para asegurar un jae , ¿es de todos modos para asegurar que CF=0 ?