小编Mic*_*tch的帖子

为什么objdump为这个汇编语言指令显示一个空操作码?

我有以下汇编代码:

global _start
section .text
_start:

add byte [eax], al
Run Code Online (Sandbox Code Playgroud)

编译和链接后,我尝试看到操作码:

$ objdump -d eax.o

eax.o:     file format elf32-i386


Disassembly of section .text:

00000000 <_start>:
        ...
$
Run Code Online (Sandbox Code Playgroud)

为什么我得到一个空操作码?

x86 assembly opcode objdump disassembly

4
推荐指数
1
解决办法
398
查看次数

x86_64:我可以更改EFLAGS寄存器中的VM标志吗?

我可以更改EFLAGS寄存器中的VM标志吗?如果是这样,怎么样?

请注意,我不能只使用pushf,操纵堆栈上的值,然后popf.根据英特尔手册:

第2卷,第4.3章PUSHF:

"将整个EFLAGS寄存器复制到堆栈时,不会复制VM和RF标志(位16和17);而是在存储在堆栈中的EFLAGS映像中清除这些标志的值."

第2卷,第4.3章POPF:

"在特权级别0(或实地址模式,相当于特权级别0)的受保护,兼容性或64位模式下运行时,EFLAGS寄存器中的所有非保留标志(RF1,VIP,VIF除外) ,VM可能会被修改.VIP,VIF和VM不受影响."

assembly x86-64 virtual-machine

4
推荐指数
1
解决办法
572
查看次数

BIOS磁盘 - 将扇区读入内存(int 0x13,ah = 0x02)阻塞

我正在编写MBR并使用QEMU进行测试.

当将读取扇区用于内存(int 0x13, ah=0x02)时,该int指令似乎阻止了我的程序的执行,并且它继续挂起.我已经用各种打印语句对此进行了测试,以确认这是特定的指令阻塞.

什么可以使中断阻止?我认为这只能通过cli指令完成,即使这样也不会阻止int指令.


对于上下文,这是导致阻塞中断的代码read_sectors_16:

        [bits 16]        
        [ORG 0x7C00]
        jmp 0x000:start_16      ; ensure cs == 0x0000

        reset_failure_str db 'error: boot disk reset', 13, 10, 0
        read_failure_str db 'error: boot disk read', 13, 10, 0
        boot_segaddr dw 0x7E00

        read_attempt_str db 'read attempt', 13, 10, 0
        end_read_attempt_str db 'end read attempt', 13, 10, 0

start_16:
        ;; Initialize segment registers
        mov ax, cs
        mov ds, ax
        mov es, …
Run Code Online (Sandbox Code Playgroud)

x86 mbr qemu osdev bootloader

4
推荐指数
1
解决办法
882
查看次数

如何在 Spring Security 过滤器之后添加自定义过滤器顺序?

我的过滤器如下:

@Component
@Order(1)
public class MDCFilter implements Filter {
.....
Run Code Online (Sandbox Code Playgroud)

和应用程序属性

security.filter-order=0
Run Code Online (Sandbox Code Playgroud)

在上面的设置中 - 我的过滤器首先出现,然后是安全过滤器。但我在 Spring Security 过滤器之后需要 mdcFilter 。

security spring filter spring-boot

4
推荐指数
1
解决办法
7469
查看次数

Spring Boot嵌入式tomcat应用程序会话不会失效

最近,我们将应用程序从在tomcat中运行的Web应用程序移植到了具有嵌入式tomcat的spring boot应用程序。

在运行该应用程序几天后,内存和CPU使用率已达到100%。在堆转储分析中,发现有一堆未删除的http会话对象。

我可以在调试中看到使用配置的超时值创建的会话(比如说5分钟)。但是在此时间之后,无效不会触发。仅当我在超时时间段后再次请求时才调用它。

我已经将此行为与在Tomcat中运行的应用进行了比较,并且可以看到会话无效是由ContainerBackgroungProcessor线程[StandardManager(ManagerBase).processExpires()]触发的

我在Spring Boot应用程序中看不到该后台线程。

根据发现的一些建议进行了什么操作:

  1. 在application.properties:server.session.timout = 300或EmbeddedServletContainerCustomizer @Bean中设置的会话超时:factory.setSessionTimout(5,TimeUnit.MINUTES)

  2. 添加了HttpSessionEventPublisher和SessionRegistry bean

没有任何帮助,会话不会在到期时失效。

关于这个的一些线索?

session spring tomcat spring-boot

4
推荐指数
1
解决办法
1239
查看次数

缺少授权类型错误

我只是想学习OAuth.我写了一些代码来测试它.当我提交请求时,我收到{"error":"invalid_request","error_description":"缺少授权类型"}

邮递员的错误.

import java.util.Optional;

//import static org.assertj.core.api.Assertions.tuple;

import java.util.stream.Stream;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.springframework.security.core.userdetails.User;

//import org.omg.PortableInterceptor.ACTIVE;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
import org.springframework.stereotype.Service;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@SpringBootApplication
public class SpringAuthServiceApplication {

    @Bean
    CommandLineRunner clr(AccountRepository accountRepository){
        return args -> {
            Stream.of("name1, password1", "name2, password2", "name3, password3", "name4, password4") …
Run Code Online (Sandbox Code Playgroud)

spring oauth-2.0 spring-boot

4
推荐指数
1
解决办法
9513
查看次数

带有Jboss eap 6.4的Spring boot 2.0.1

有没有人将Spring boot 2.0.1(带启动器)生成的战争部署到Jboss EAP 6.4?

我试着做一些调整,但没有成功.

有没有在这里发光?

谢谢!

jboss spring spring-boot

4
推荐指数
1
解决办法
3332
查看次数

在x86汇编中打印它们时,ANSI转义码无法正常工作?

我正在尝试制作一个简单的x86汇编程序(我使用NASM作为我的汇编程序),它使用ANSI代码将终端文本颜色更改为红色,然后打印一些将用红色前景打印的内容.代码如下:

; This macro is equivalent to printf(message)
%macro  print   1
        lea     rdi,    [rel %1]
        call    _printf
%endmacro
; Example call:
;   print    prompt
; Where prompt is something like:
;   prompt:
;       db      "Hiya dude! What's your name?", 0

; These are the terminal colors, they are ANSI codes that, when printed, will change the color of the text.
    section .data
COLOR_FORE_RED:
    db       "\033[31m",0 ; ANSI Fore Red code

%define  SetColor_FRed      print    COLOR_FORE_RED
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用以下内容时使用这些宏:

SetColorFRed ; Set text color …
Run Code Online (Sandbox Code Playgroud)

io x86 assembly printf nasm

4
推荐指数
1
解决办法
200
查看次数

Spring boot 应用程序优雅地捕获 SIGTERM 信号并调用 predestroy 方法

我有一个 Spring Boot 应用程序,当我们使用 kill pid 终止进程时,它需要清除或清理资源。@predestroy 带注释的方法不起作用,也没有被调用。请建议我们如何捕获 SIGTERM 并调用 predestroy 方法

spring spring-boot

4
推荐指数
2
解决办法
1万
查看次数

如何在MOV和LEA指令后确定AX中的结果

我想在下面的问题中了解AX寄存器的内容,我不明白我怎么知道示例中的[5000h]或[DI]是什么.

寄存器和存储器的状态定义为:

CS=3000 [53000]=BBBB [33000]=6666 [13000]=1111
DS=1000 [54000]=CCCC [34000]=7777 [14000]=2222
SS=5000 [55000]=DDDD [35000]=8888 [15000]=3333
DI=7000 [56000]=EEEE [36000]=9999 [16000]=4444
BP=4000 [57000]=FFFF [37000]=AAAA [17000]=5555
Run Code Online (Sandbox Code Playgroud)

AX中的每个指令的值是多少

  • MOV AX, [DI]
  • MOV AX, [5000h]
  • MOV AX, [BP+2000h]
  • LEA AX, [BP+1000h]

x86 assembly real-mode x86-16

4
推荐指数
1
解决办法
135
查看次数