标签: low-level

可可内存编辑检查

我如何使用Cocoa编辑其他应用程序的内存?我知道编辑必须以root身份完成,但我怎么能在第一时间完成呢?

memory macos cocoa low-level

0
推荐指数
1
解决办法
352
查看次数

用于访问无符号整数的字节/字的C++类

union LowLevelNumber
{
 unsigned int n;
 struct
 {
  unsigned int lowByte : 8;
  unsigned int highByte : 8;
  unsigned int upperLowByte : 8;
  unsigned int upperHighByte : 8;
 } bytes;
 struct
 {
  unsigned int lowWord : 16;
  unsigned int highWord : 16;
 } words;     
};
Run Code Online (Sandbox Code Playgroud)

这个联合允许我访问无符号整数字节或逐字.但是,代码看起来相当丑陋:

var.words.lowWord = 0x66;
Run Code Online (Sandbox Code Playgroud)

有没有办法可以让我编写这样的代码:

var.lowWord = 0x66;
Run Code Online (Sandbox Code Playgroud)

更新:
这实际上是关于编写短/漂亮的代码,如上例所示.联合解决方案本身确实有效,我只是每次访问lowWord或lowByte时都不想写.words或.bytes.

c++ low-level

0
推荐指数
1
解决办法
3367
查看次数

检查NULL时要忽略多少位?

以下使用seg-V崩溃:

// my code
int* ipt;
int bool set = false;
void Set(int* i) {
  ASSERT(i);
  ipt = i;
  set = true;
}

int Get() {
  return set ? *ipt : 0;
}

// code that I don't control.
struct S { int I, int J; }
int main() {
  S* ip = NULL;
  // code that, as a bug, forgets to set ip...
  Set(&ip->J);
  // gobs of code
  return Get();
}
Run Code Online (Sandbox Code Playgroud)

这是因为虽然i它不是NULL仍然无效.如果调用代码从NULL指针获取数组索引操作的地址,则会发生同样的问题.

对此的一个解决方案是修剪低阶位: …

c++ low-level segmentation-fault

0
推荐指数
1
解决办法
299
查看次数

汇编语言为C等价物

我试图找到与下面的汇编块相当的C语言:

        .section .text
        .globl mystery
        .type mystery, @function
    mystery:
        pushl %ebp
        movl %esp, %ebp
        xorl %eax, %eax
        xorl %exc, %ecx
        movl 8(%ebp), %edx

    begin:
        cmpl 12(%ebp), %ecx
        jge  done
        addl (%edx, %ecx, 4), %eax
        incl %ecx
        jump begin

    done:
        movl %ebp, %esp
        popl %ebp
        ret
Run Code Online (Sandbox Code Playgroud)

我得到了"开始"部分.它似乎是一个循环,从函数中获取参数并将其与%ecx中的任何内容进行比较.如果满足jge条件,则函数返回,否则它将%edx添加4%ecx,将其移至%eax,递增%ecx,并再次循环.

我真的不明白"神秘"的一部分.特别是xorls和movl语句.如果%eax或%ecx中没有任何内容可以启动,那么xorl正在做什么.我猜测的movl是从函数中取一个参数并将其移动到%edx?

任何见解都是有帮助和赞赏的.

c assembly low-level

0
推荐指数
1
解决办法
1235
查看次数

如何找到极低级编程的信息?

首先,关于这个问题的一些背景:今天,我正在寻找关于测试如何在装配中起作用的解释.不幸的是,我似乎无法在谷歌找到答案,因为"测试","汇编"等都是在其他情况下经常使用的常用词.最终我通过搜索"条件分支"找到了一些信息,这不是我想要的,但是它是一个很好的起点.

我的问题是,我在哪里可以获得有关低级计算机操作的信息?例如,如果我想知道分支语句如何工作,或者cpu缓存如何工作,或者在移位寄存器时多余的位会发生什么?我该如何搜索这些?

search assembly search-engine cpu-architecture low-level

0
推荐指数
1
解决办法
132
查看次数

为什么python是低级别的?

我有一个混乱的python生成

source code ->> byte code --> python virtual machine

c语言是否也生成字节码或直接编译?

如果c不生成字节代码,那么它被认为是低级语言的原因?因为Assembly也不生成字节代码,因为它直接在机器上执行,所以它的级别低.

c python assembly low-level

0
推荐指数
1
解决办法
2181
查看次数

如何识别内存中的汇编"调用"指令?

如何在进程的可执行存储器中区分组装"调用"指令(E8 [地址])与其他E8字节(例如,在另一条指令中间的那个)的操作码?(从C语言的角度来看,最好)

是否足以验证E8字节之后的四个字节是否引用有效地址,然后验证该区域(即被调用函数的开始)是否以对应于操作码"push ebp"和"mov ebp"的字节开头,esp"(大多数功能都使用这个序幕)?或者是否有更好的选择,例如检查从入口点到出口点的每个操作码?

顺便说一句,我对这个主题几乎没有经验,所以任何信息都值得赞赏.

谢谢!

debugging x86 assembly low-level disassembly

0
推荐指数
1
解决办法
134
查看次数

如何在不使用汇编的情况下为x86编写原始机器代码?

我希望能够编写原始机器代码,而无需汇编或任何其他种类的高级语言,而这些语言可以直接放在闪存驱动器上并运行。我已经知道要执行此操作,我需要将主引导记录标头(我已经设法手动完成)格式化到驱动器上。我已完成此操作,并成功使用代码所在驱动器的第一个扇区(在本例中为前512个字节)中的汇编代码,使一行文本显示在屏幕上。但是,我希望能够像在MBR格式化中那样将原始的十六进制代码写入驱动器,而无需诸如汇编之类的任何工具来帮助我。我知道有一种方法可以做到这一点,但是我真的找不到任何不涉及汇编的东西。在哪里可以找到有关此信息?汇编附带了谷歌搜索机器代码或x86编程,这不是我想要的。

x86 machine-code low-level

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

公共、私人和受保护的幕后

我尝试更深入地了解 Public | 之间的差异。私人 | 在 C++ 中从低级角度保护。

三者的差异在记忆中表现如何?

c++ oop object low-level private-members

0
推荐指数
1
解决办法
160
查看次数

8086汇编寄存器间接MOV指令

我只是想问:为什么我写的时候:

MOV DL, [BX] 
Run Code Online (Sandbox Code Playgroud)

它有效,但是当我写:

MOV DL, [AX]
Run Code Online (Sandbox Code Playgroud)

不是吗?

assembly low-level x86-16 emu8086

-1
推荐指数
1
解决办法
321
查看次数