小编120*_*arm的帖子

在Ia32中,jmp和ja有什么区别?

根据我的理解jmp,无条件跳转,而ja如果值无符号则跳转.我说得对吗?

一个例子将不胜感激.谢谢!

x86 assembly

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

使用 ProcessCmdKey 按住箭头键按下事件

只要按住箭头键,我就需要执行某种方法。现在,对于 Visual Studio 2012 中的常规箭头键按下,使用OnKeyDown不起作用,因此我需要使用ProcessCmdKey,这就像一个魅力。有没有一种方法可以用来ProcessCmdKey检测箭头何时被释放/被按住?


我采纳了马库斯和汉斯的建议,并将这两种想法结合起来。我使用了该ProcessKeyPreview方法,但仍然遇到一些问题。当我按住任何箭头键时,此方法不会检测到WM_KEYDOWN发生了这种情况......但是一旦我将手指从按键上松开,它实际上就会注意到WM_KEYUP发生了这种情况。

有趣的是,当我按住任何其他键(即字母“S”)时,它会正确识别何时按下并释放。我在下面发布了我的代码片段:

const int WM_KEYUP = 0x0101;
const int WM_KEYDOWN = 0x0100;

    protected override bool ProcessKeyPreview(ref Message m)
            {
                int msgVal = m.WParam.ToInt32();            
                if (m.Msg == WM_KEYDOWN)
                {
                    switch ((Keys)msgVal) {
                        case Keys.Down:
                            Console.WriteLine("down pressed"); //not detected
                            break;
                        case Keys.S:
                            Console.WriteLine("S pressed!"); //detected
                            break;
                    }
                }
                if (m.Msg == WM_KEYUP)
                {
                    switch ((Keys)msgVal)
                    {
                        case Keys.Down:
                            Console.WriteLine("down released"); //detected
                            break;
                        case Keys.S:
                            Console.WriteLine("s …
Run Code Online (Sandbox Code Playgroud)

c# keyboard events key

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

JMP rel16(而不是JMP rel32)

我需要为一个漏洞利用演示制作一个跳转操作码.

我需要在跳转指令后跳转到大约200个字节.这太过分了jmp short.

如果我使用常规跳转生成操作码,jmp $200我会得到:

e9 fb 01 00 00
Run Code Online (Sandbox Code Playgroud)

这里的问题是操作码包含00,当将字符串传递给程序时,它被解释为字符串的结尾(因此我不能将完整的shellcode传递给它).

我认为我的方法被搞砸了,但后来我检查了手册,在第二行显然有一个"近似跳跃"需要2个字节(还有另一个需要4个字节,我上面显示的那个).这两个跳转都以相同的字节开头e9.

我如何通过e9 fb 01只接受两个字节参数的近跳转?如何阻止操作系统查找后的四个字节e9,即:e9 fb 01 90 90

x86 assembly exploit opcode

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

大会中LONG和FAR跳跃之间有什么区别?

我正在查看一些用于汇编的练习代码,并且赋值基本上是用另一个跳转点替换.

原始jmp是SHORT jmp,使用此指令无法到达我需要接近的终点.

我现在有三个选项,我要么删除'SHORT',要么插入'LONG'或者我插入'FAR'.

如果有任何文件指出它们之间的差异,我还没有找到它.任何人都可以在这里帮助吗?

x86 assembly

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

程序集8086中的分支表

我尝试在程序集8086中执行分支表.

我写的:

    org 100h                       

    ; START THE PROGRAM

    mov si, 1
    jmp cs:table[si]

    table dw C1, C2, C3

C1:
    add bx, 1
    jmp EXIT

C2:
    add bx, 2
    jmp EXIT

C3:
    add bx, 3
    jmp EXIT
C4:  
    add bx, 4
    jmp EXIT

; EXIT PRORGRAM   
EXIT:
    mov ah, 0
    int 16h
    ret
Run Code Online (Sandbox Code Playgroud)

代码无效,它跳转到错误的标签.

有人可以给我示例或修复我的代码吗?

assembly x86-16

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

如何使用 Python Pandas 将 JMP *.jmp 文件读入 Pandas 数据帧

我正在努力将带有 Pandas函数的SAS JMP 文件read_csv入 Pandas 数据帧。有没有人有这种类型的数据文件的经验?最有效的方法是什么?

csv sas dataframe pandas sas-jmp

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

使用-mfma进行编译时的非法指令

我正在使用Intel SandyBridge E5-2670上的GCC 5.3.0进行编译.当我使用这些标志时-O3 -DEIGEN_NO_DEBUG -std=c++11 -Wall -Wextra -Werror -march=native -ffast-math,代码运行没有错误.当我加上-mfma我得到非法指令.

我认为使用-march=native永远不会产生非法指令.我跑的程序与gdbbt,但它显示了一个有效(至少对我来说)栈,所以我不认为-mfma暴露一个错误的指针或其他内存问题.

#0  0x000000000043a59c in ConvexHull::SortConvexHull() ()
#1  0x000000000043badd in ConvexHull::ConvexHull(Eigen::Matrix<double, -1, -1, 0, -1, -1>) ()
#2  0x000000000040b794 in Group::BuildCatElement() ()
#3  0x0000000000416b60 in SurfaceModel::ProcessGroups() ()
#4  0x00000000004435c6 in MainLoop(Inputs&, std::ostream&) ()
#5  0x000000000040494e in main ()
Run Code Online (Sandbox Code Playgroud)

然后我用debugging(-O0 -g)重新编译,所有其他选项都相同,然后gdb回来

0x00000000004140df in Eigen::internal::pmadd<double __vector(4)>(double __vector(4) const&, double __vector(4) const&, double __vector(4) const&) (a=..., b=..., …
Run Code Online (Sandbox Code Playgroud)

c++ gcc eigen

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

在for循环中使用引用作为迭代器

我正在阅读第五版c ++ Primer.我遇到了以下代码片段,对此我有疑问:

int num1=2;
int num2=3;
int &ref_num = num1  //Ok, ref_num is a non-constant int type reference to num1
int &ref_num = num2 //Error, as ref_num is already declared in prev statement
Run Code Online (Sandbox Code Playgroud)

因此,我们不能同时将引用变量绑定到多个对象.但它也说,我们可以使用引用控制变量来查看字符串文字.

string line("Hello");
for(auto &ref_var : line)
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,我的引用变量"ref_var"将绑定到字符串对象"line"的每个元素.怎么会?

c++ c++11

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

一对C++交换方法的优点是什么?

鉴于,

auto a = make_pair(1,"one");
auto b = make_pair(2,"two");
a.swap(b);
Run Code Online (Sandbox Code Playgroud)

a.swap(b)有一个更通用的std::swap(a,b)工作方式相同时,我真的需要使用什么时候.

c++ c++11

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

C++ GetDC 所有监视器

基本上,我正在制作一些模仿屏幕融化效果的东西,但我只能让它在我的主显示器上运行。我已经尽可能多地查找了,在 GetDC 上只有一个论坛适用于所有显示器,但它没有用,它所做的只是从我的主显示器到我的辅助显示器制作一个矩形,效果仍然只适用于我的主显示器。这是我读到的线程:GetDC(NULL) gets Primary Monitor or virtual screen?

LRESULT CALLBACK Melter(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) {
    switch (Message) {
        case WM_CREATE: {
            HDC Desktop = GetDC(HWND_DESKTOP);
            HDC Window = GetDC(hWnd);

            BitBlt(Window, 0, 0, ScreenWidth, ScreenHeight, Desktop, 0, 0, SRCCOPY);
            ReleaseDC(hWnd, Window);
            ReleaseDC(HWND_DESKTOP, Desktop);

            SetTimer(hWnd, 0, Interval, 0);
            ShowWindow(hWnd, SW_SHOW);

            break;
        }
        case WM_PAINT: {
            ValidateRect(hWnd, 0);
            break;
        }
        case WM_TIMER: {
            HDC Window = GetDC(hWnd);
            int uX = (rand() % ScreenWidth) - (150 / 2), …
Run Code Online (Sandbox Code Playgroud)

c++ multiple-monitors visual-studio visual-c++

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