小编Ale*_*nze的帖子

在Linux中存储秘密

对不起,如果这里有人问过并回答过,那么简单的搜索并没有给我太多帮助.随意更正标签,并提供以下问题的链接或主题的讨论.另外,我在某种程度上了解Windows,而不是Linux,因此这些问题可能显得微不足道.


一些Windows应用程序使用注册表和其他一些不起眼的地方来存储他们的激活数据,试用期还剩下几天,只是软件已经安装在这个操作系统上.

Linux中有类似的地方吗?

如果有,那么数据是多么容易被发现,因为你不仅拥有root访问权限,而且几乎所有的源代码都可以调整内核并强制获取内容?

如果没有办法在Linux中保护这些数据,所有其他条件相同,它对Linux商业软件的可用性有多大影响?

linux security

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

从浮点数转换为自定义数字类型

我已经创建了自己的固定类型整数类型,并且该库适用于许多编译器和平台,唯一需要解决的问题是从内置浮点类型转换为我的类型.

该浮点类型可有小尾数但随着指数沿着它可能有很大的价值,如果我选择投float,double或者long doublelong longunsigned long long可能发生截断.

如果编译器使用IEEE-754规范,那么提取尾数和指数很容易,但如果编译器使用其他格式则会怎样.

所以,我的问题是:是否有任何通用算法允许我仅使用语言功能从浮点数中提取完整值?

谢谢

c++ floating-point type-conversion

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

C51编译器 - 写入xdata

在XC888微控制器上编程,我想为外部存储器中的某些数据保存缓冲区xdata.

我这样做(只是一个例子,我摆脱了不必要的代码):

Header.h

extern ubyte xdata rec_buffer[32];
Run Code Online (Sandbox Code Playgroud)

Function.c

ubyte xdata rec_buffer[32] = {0};

void foo()
{
    //Option 1
    rec_buffer[0] = 0xFF;    // Doesn't work

    //Option 2
    ubyte xdata *ptr_buf = rec_buffer;
    ptr_buf[0] = 0xFF        // Doesn't work
}
Run Code Online (Sandbox Code Playgroud)

所以我无法弄清楚我在这里缺少什么.在这两种情况下,都没有数据写入缓冲区.(使用调试器检查).我还检查了指针指向它的地址 - >它实际上指向外部存储器(地址0x000000,但应该没有任何问题).

当我这样做而没有定义缓冲区时,xdata它的工作完全正常.我究竟做错了什么?有什么特别的方法我必须写入xdata吗?

c embedded microcontroller 8051

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

汇编代码中的返回地址

汇编代码如下:

  call next
next:
  popl %eax
Run Code Online (Sandbox Code Playgroud)

我想过call next,返回地址会被推到堆栈上,对吧?但是在上面的代码中,返回地址是什么?

x86 assembly call

3
推荐指数
1
解决办法
1405
查看次数

如何在不分支的情况下舍入为整数?

如何在装配中将整数四舍五入到最接近的整数?此处不允许使用分支。

例如195 * .85 = 165.75。通常,我将195与比例因子(100)相乘,然后相乘,然后除以比例因子。这将给我165。如何获得166?

如果这是一个可怕的问题,对不起,我是新来的!谢谢。

assembly

3
推荐指数
1
解决办法
2630
查看次数

汇编程序64b分区

我需要一些简单的方法来在x86的汇编程序中划分64b无符号整数.我的号码保存在两个32b寄存器EDX:EAX中,我需要将结果返回给EDX:EAX.因子是32b整数.请问一些代码?

64-bit x86 assembly numbers division

3
推荐指数
1
解决办法
5109
查看次数

操作码FF350E204000有什么作用?

我有32位操作码:FF 35 0E 20 40 00.有人知道一个好的OpCode表给出了答案吗?(我知道我可以使用反汇编程序,但我想知道,如何使用操作码表来确定它).我找到了这个网页,但有7个不同的解决方案FF.我没有得到它.

x86 assembly opcode

3
推荐指数
2
解决办法
1927
查看次数

在Nasm中调用汇编函数

我正在从头开始构建一个简单的操作系统,所以我正在测试一些启动扇区代码,我正在使用Qemu进行模拟.

我的启动扇区代码应该在操作系统启动时打印"A".

这是引导扇区代码的第一个版本(没有使用函数调用)

[org 0x7c00]

mov al,'A'
mov ah,0x0e  ; int 10/ ah = 0eh -> scrolling teletype BIOS routine
int 0x10

jmp $

times 510 -( $ - $$ ) db 0
dw 0xaa55
Run Code Online (Sandbox Code Playgroud)

执行nasm生成的二进制文件后使用:

qemu-system-i386 test.bin
Run Code Online (Sandbox Code Playgroud)

结果是正确的,字符'A'出现在它应该的位置

但是,在尝试使用打印存储在al中的字符的功能后,屏幕上不会打印任何内容

这是test.asm文件的第二个版本(这次包括函数调用)

[org 0x7c00]

mov al,'A'

call my_print_function

jmp $

times 510 -( $ - $$ ) db 0
dw 0xaa55


my_print_function:
    pusha  ; push all registers

    ; same code as the first version to print a character stored in al …
Run Code Online (Sandbox Code Playgroud)

x86 assembly function bios nasm

3
推荐指数
1
解决办法
3222
查看次数

为什么不使用VAL的补码代替(-VAL -1)

我正在从https://github.com/antirez/redis上阅读redis的源代码.

我在src/ziplist.c中看到过这样的宏

#define INT24_MAX 0x7fffff

#define INT24_MIN (-INT24_MAX - 1)
Run Code Online (Sandbox Code Playgroud)

为什么不这样做呢?

#define INT24_MIN (~INT24_MAX)
Run Code Online (Sandbox Code Playgroud)

c

3
推荐指数
2
解决办法
130
查看次数

很难理解汇编语言

假设以下值存储在指定的存储器地址和寄存器中:

Address    Value            Register     Value
0x100      0xFF             %eax         0x100
0x104      0xAB             %ecx         0x1
0x108      0x13             %edx         0x3
0x10C      0x11


Fill in the following table showing the values for the indicated operands:

Operand           Value    //Solutions at the end of the chapter
%eax              _____    //0x100
0x104             _____    //0xAB
$0x108            _____    //0x108
(%eax)            _____    //0xFF
4(%eax)           _____    //0xAB
9(%eax, %edx)     _____    //0x11
260(%ecx, %edx)   _____    //0x13
0xFC(,%ecx,4)     _____    //0xFF
(%eax, %edx,4)    _____    //0x11
Run Code Online (Sandbox Code Playgroud)

有人可以用外行的话向我解释如何做到这一点.这不是hmwk(在某些阅读中有练习问题,在本章末尾有答案),我只是不理解阅读.

syntax x86 assembly

2
推荐指数
2
解决办法
3664
查看次数