java-jna-内联汇编-ASM-5


	public void _MOV_EDX_DWORD_PTR_EBX() {
		_ASM_CODE.append("8B13");
	}

	public void _MOV_EDX_DWORD_PTR_EBX_ADD(final int address) {
		if (address <= 0xff) {
			_ASM_CODE.append("8B53");
			_ASM_CODE.append(ASM.getIntToHex(address, 2));
		} else {
			_ASM_CODE.append("8B93");
			_ASM_CODE.append(ASM.getIntToHex(address, 8));
		}
		_REGISTER._EDX = address;
	}

	public void _MOV_EDX_DWORD_PTR_ECX() {
		_ASM_CODE.append("8B11");
	}

	public void _MOV_EDX_DWORD_PTR_ECX_ADD(final int address) {
		if (address <= 0xff) {
			_ASM_CODE.append("8B51");
			_ASM_CODE.append(ASM.getIntToHex(address, 2));
		} else {
			_ASM_CODE.append("8B91");
			_ASM_CODE.append(ASM.getIntToHex(address, 8));
		}
		_REGISTER._EDX = address;
	}

	public void _MOV_EDX_DWORD_PTR_EDI() {
		_ASM_CODE.append("8B17");
	}

	public void _MOV_EDX_DWORD_PTR_EDI_ADD(final int address) {
		if (address <= 0xff) {
			_ASM_CODE.append("8B57");
			_ASM_CODE.append(ASM.getIntToHex(address, 2));
		} else {
			_ASM_CODE.append("8B97");
			_ASM_CODE.append(ASM.getIntToHex(address, 8));
		}
		_REGISTER._EDX = address;
	}

	public void _MOV_EDX_DWORD_PTR_EDX() {
		_ASM_CODE.append("8B12");
	}

	public void _MOV_EDX_DWORD_PTR_EDX_ADD(final int address) {
		if (address <= 0xff) {
			_ASM_CODE.append("8B52");
			_ASM_CODE.append(ASM.getIntToHex(address, 2));
		} else {
			_ASM_CODE.append("8B92");
			_ASM_CODE.append(ASM.getIntToHex(address, 8));
		}
		_REGISTER._EDX = address;
	}

	public void _MOV_EDX_DWORD_PTR_ESI() {
		_ASM_CODE.append("8B16");
	}

	public void _MOV_EDX_DWORD_PTR_ESI_ADD(final int address) {
		if (address <= 0xff) {
			_ASM_CODE.append("8B56");
			_ASM_CODE.append(ASM.getIntToHex(address, 2));
		} else {
			_ASM_CODE.append("8B96");
			_ASM_CODE.append(ASM.getIntToHex(address, 8));
		}
		_REGISTER._EDX = address;
	}

	public void _MOV_EDX_DWORD_PTR_ESP() {
		_ASM_CODE.append("8B1424");
	}

	public void _MOV_EDX_DWORD_PTR_ESP_ADD(final int address) {
		if (address <= 0xff) {
			_ASM_CODE.append("8B5424");
			_ASM_CODE.append(ASM.getIntToHex(address, 2));
		} else {
			_ASM_CODE.append("8B9424");
			_ASM_CODE.append(ASM.getIntToHex(address, 8));
		}
		_REGISTER._EDX = address;
	}

	public void _MOV_EDX_EAX() {
		_ASM_CODE.append("8BD0");
	}

	public void _MOV_EDX_EBP() {
		_ASM_CODE.append("8BD5");
	}

	public void _MOV_EDX_EBX() {
		_ASM_CODE.append("8BD3");
	}

	public void _MOV_EDX_ECX() {
		_ASM_CODE.append("8BD1");
	}

	public void _MOV_EDX_EDI() {
		_ASM_CODE.append("8BD7");
	}

	public void _MOV_EDX_ESI() {
		_ASM_CODE.append("8BD6");
	}

	public void _MOV_EDX_ESP() {
		_ASM_CODE.append("8BD4");
	}

	public void _MOV_ESI(final int address) {
		_ASM_CODE.append("BE");
		_ASM_CODE.append(ASM.getIntToHex(address, 8));
		_REGISTER._ESI = address;
	}

	public void _MOV_ESI_DWORD_PTR(final int address) {
		_ASM_CODE.append("8B35");
		_ASM_CODE.append(ASM.getIntToHex(address, 8));
		_REGISTER._ESI = address;
	}

	public void _MOV_ESI_EAX() {
		_ASM_CODE.append("8BF0");
	}

	public void _MOV_ESI_EBP() {
		_ASM_CODE.append("8BF5");
	}

	public void _MOV_ESI_EBX() {
		_ASM_CODE.append("8BF3");
	}

	public void _MOV_ESI_ECX() {
		_ASM_CODE.append("8BF1");
	}

	public void _MOV_ESI_EDI() {
		_ASM_CODE.append("8BF7");
	}

	public void _MOV_ESI_EDX() {
		_ASM_CODE.append("8BF2");
	}

	public void _MOV_ESI_ESP() {
		_ASM_CODE.append("8BF4");
	}

	public void _MOV_ESP(final int address) {
		_ASM_CODE.append("BC");
		_ASM_CODE.append(ASM.getIntToHex(address, 8));
		_REGISTER._ESP = address;
	}

	public void _MOV_ESP_DWORD_PTR(final int address) {
		_ASM_CODE.append("8B25");
		_ASM_CODE.append(ASM.getIntToHex(address, 8));
		_REGISTER._ESP = address;
	}

	public void _MOV_ESP_EAX() {
		_ASM_CODE.append("8BE0");
	}

	public void _MOV_ESP_EBP() {
		_ASM_CODE.append("8BE5");
	}

	public void _MOV_ESP_EBX() {
		_ASM_CODE.append("8BE3");
	}

	public void _MOV_ESP_ECX() {
		_ASM_CODE.append("8BE1");
	}

	public void _MOV_ESP_EDI() {
		_ASM_CODE.append("8BE7");
	}

	public void _MOV_ESP_EDX() {
		_ASM_CODE.append("8BE2");
	}

	public void _MOV_ESP_ESI() {
		_ASM_CODE.append("8BE6");
	}

	public void _NOP() {
		_ASM_CODE.append("90");
	}

	public void _TEST_AL_AL() {
		_ASM_CODE.append("84C0");
	}

	public void _POP_EAX() {
		_ASM_CODE.append("58");
	}

	public void _POP_EBP() {
		_ASM_CODE.append("5D");
	}

	public void _POP_EBX() {
		_ASM_CODE.append("5B");
	}

	public void _POP_ECX() {
		_ASM_CODE.append("59");
	}

	public void _POP_EDI() {
		_ASM_CODE.append("5F");
	}

	public void _POP_EDX() {
		_ASM_CODE.append("5A");
	}

	public void _POP_ESI() {
		_ASM_CODE.append("5E");
	}

	public void _POP_ESP() {
		_ASM_CODE.append("5C");
	}

	public void _POPAD() {
		_ASM_CODE.append("61");
	}

	public void _PUSH(final int address) {
		_ASM_CODE.append("68");
		_ASM_CODE.append(ASM.getIntToHex(address, 8));
	}

	public void _PUSH_DWORD_PTR(final int address) {
		_ASM_CODE.append("FF35");
		_ASM_CODE.append(ASM.getIntToHex(address, 8));
	}

	public void _PUSH_EAX() {
		_ASM_CODE.append("50");
	}

	public void _PUSH_EBP() {
		_ASM_CODE.append("55");
	}

	public void _PUSH_EBX() {
		_ASM_CODE.append("53");
	}

	public void _PUSH_ECX() {
		_ASM_CODE.append("51");
	}

	public void _PUSH_EDI() {
		_ASM_CODE.append("57");
	}

	public void _PUSH_EDX() {
		_ASM_CODE.append("52");
	}

	public void _PUSH_ESI() {
		_ASM_CODE.append("56");
	}

	public void _PUSH_ESP() {
		_ASM_CODE.append("54");
	}

	public void _PUSHAD() {
		_ASM_CODE.append("60");
	}

	public void _RET() {
		_ASM_CODE.append("C3");
	}

	public void _RET_4() {
		_ASM_CODE.append("C20400");
	}

	public void _RET_10() {
		_ASM_CODE.append("C21000");
	}

	public void _RET_ADDRESS(final int address) {
		_ASM_CODE.append(ASM.getIntToHex(address, 4));
	}

	public String getASMCode() {
		return _ASM_CODE.toString();
	}

	public void clearASMCode() {
		_ASM_CODE.delete(0, _ASM_CODE.length());
		_REGISTER.FREE();
	}

	/**
	 * 将内联汇编注入指定进程
	 *
	 * @param pid
	 * @return
	 */
	public boolean doInject(final int pid) {
		byte[] asmBytes = ASM.getHexToBytes(this.getASMCode());
		boolean result = Kernel.doInject(pid, asmBytes);
		clearASMCode();
		return result;
	}

	/**
	 * 返回当前内联汇编执行结果
	 *
	 * @return
	 */
	public long doResult() {
		byte[] asmBytes = ASM.getHexToBytes(this.getASMCode());
		long result = Kernel.doResult(asmBytes);
		clearASMCode();
		return result;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值