如何将一个函数从反汇编复制到Visual Studio并能够从C级调用它?

Krzysztof Bracha

我正在尝试为“ crackme”程序编写密钥生成程序。有一个很长的哈希函数,将它花费一些时间将其重写为C,所以我只想复制它并放在__asm大括号内。所以我的问题是最好的方法是什么?

我试图通过这种方式做到这一点:

void hashFunction(unsigned int * arg1,unsigned int * arg2, unsigned int arg3)
{
    __asm
    {
        // pure copy from disassembly
        PUSHAD
        MOV ESI,DWORD PTR [ESP+0x24] // accesses the first argument
        MOV DWORD PTR [ESI],0x67452301
        MOV DWORD PTR [ESI+0x4],0xEFCDAB89
        ... 
}

我在使用编译器选项,试图迫使VS省略创建框架堆栈并禁用优化的功能,但无法使其正常工作。VS产生以下代码:

PUSH EBP
MOV EBP,ESP
PUSH EBX
PUSH ESI
PUSH EDI
PUSHAD
MOV ESI,DWORD PTR [ESP+24]  // no longer accesses the first argument
MOV DWORD PTR [ESI],67452301
MOV DWORD PTR [ESI+4],EFCDAB89

VS创建一个帧堆栈,还将一些寄存器压入堆栈,这在这种情况下显然是不希望的。我知道我仍然可以修复它,但是我想必须有更好的方法来解决它?这是我第一次在VS中使用汇编代码,我在google中搜索了我的问题,但是找不到与我的问题相关的任何主题。预先感谢您的任何帮助。

迈克尔·伯尔

您可以尝试使用该__declspec(naked)属性(http://msdn.microsoft.com/en-us/library/h5w10wxs.aspx):

对于用裸属性声明的函数,编译器生成的代码没有序言和结语代码。您可以使用此功能通过内联汇编代码编写自己的序言/结尾代码序列。裸函数在编写虚拟设备驱动程序时特别有用。请注意,裸属性仅在x86和ARM上有效,而在x64上不可用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

发布网站之前,如何将.net构建项目的所有文件复制到Visual Studio这样的另一个文件夹中?

来自分类Dev

对于我在Visual Studio 2013中的类库项目;使用生成后事件如何将创建的dll复制到另一个路径?

来自分类Dev

如何添加文件库并能够对其进行编辑

来自分类Dev

c++ - 如何将一个结构体数组的值复制到另一个结构体数组中

来自分类Dev

如何更改类中的变量并能够将其导入另一个文件?

来自分类Dev

C ++:将一个对象复制到构造函数中的另一个对象

来自分类Dev

如何通过将 ByteArrayOutputStream 复制到 ByteArray 中,然后通过 ByteArrayInputStream 调用它来克隆一个对象?

来自分类Dev

如何将许多不同的线程放入wait()并能够使用signalAll()唤醒它们?

来自分类Dev

如何将 div 放在 textarea 下并能够处理其上的事件?

来自分类Dev

Azure函数(C#):如何将大量文件从Blob容器A复制到另一个Blob容器B?(功能在10分钟内超时)

来自分类Dev

如何在一个文件中引用一个变量,并能够跨多个文件使用?

来自分类Dev

如何将一个文件复制到C:\ Users中所有应用程序数据目录中的特定子目录?

来自分类Dev

如何将内容从文本文件复制到C中的另一个文本文件

来自分类Dev

如何将 (ICU4C) Unicode 字符串逐个字符复制到另一个 Unicode 字符串?

来自分类Dev

我如何将结构指针数组中的结构直接复制到 c 中的另一个结构

来自分类Dev

Excel VBA。如何将对象作为可选的args传递并能够检测到它们?

来自分类Dev

将所有日志保存在一个地方并能够访问它们的最佳方法是什么

来自分类Dev

将代码从一个解决方案复制到另一个 c# (Visual Studio)

来自分类Dev

如何创建对数字数组进行排序并能够即时交换数组的函数?

来自分类Dev

如何创建对数字数组进行排序并能够即时交换数组的函数?

来自分类Dev

C:将一个char *指针复制到另一个

来自分类Dev

将一个链表复制到另一个链表 C++

来自分类Dev

将PDF分层在一起,并能够设置位置

来自分类Dev

如何将对象数组中的内容复制到C ++中的另一个数组中?

来自分类Dev

如何在Java中声明一个辅助方法,以便在本地使用并能够引用变量

来自分类Dev

从单个表中组合2个SQL查询并能够对其进行更新

来自分类Dev

lapply:适合数千个混合模型并能够提取lsmeans

来自分类Dev

将值复制到从C ++(nasm)调用的汇编函数中的指针地址中

来自分类Dev

Bash:将通配符作为shell脚本的参数并能够对其进行扩展

Related 相关文章

  1. 1

    发布网站之前,如何将.net构建项目的所有文件复制到Visual Studio这样的另一个文件夹中?

  2. 2

    对于我在Visual Studio 2013中的类库项目;使用生成后事件如何将创建的dll复制到另一个路径?

  3. 3

    如何添加文件库并能够对其进行编辑

  4. 4

    c++ - 如何将一个结构体数组的值复制到另一个结构体数组中

  5. 5

    如何更改类中的变量并能够将其导入另一个文件?

  6. 6

    C ++:将一个对象复制到构造函数中的另一个对象

  7. 7

    如何通过将 ByteArrayOutputStream 复制到 ByteArray 中,然后通过 ByteArrayInputStream 调用它来克隆一个对象?

  8. 8

    如何将许多不同的线程放入wait()并能够使用signalAll()唤醒它们?

  9. 9

    如何将 div 放在 textarea 下并能够处理其上的事件?

  10. 10

    Azure函数(C#):如何将大量文件从Blob容器A复制到另一个Blob容器B?(功能在10分钟内超时)

  11. 11

    如何在一个文件中引用一个变量,并能够跨多个文件使用?

  12. 12

    如何将一个文件复制到C:\ Users中所有应用程序数据目录中的特定子目录?

  13. 13

    如何将内容从文本文件复制到C中的另一个文本文件

  14. 14

    如何将 (ICU4C) Unicode 字符串逐个字符复制到另一个 Unicode 字符串?

  15. 15

    我如何将结构指针数组中的结构直接复制到 c 中的另一个结构

  16. 16

    Excel VBA。如何将对象作为可选的args传递并能够检测到它们?

  17. 17

    将所有日志保存在一个地方并能够访问它们的最佳方法是什么

  18. 18

    将代码从一个解决方案复制到另一个 c# (Visual Studio)

  19. 19

    如何创建对数字数组进行排序并能够即时交换数组的函数?

  20. 20

    如何创建对数字数组进行排序并能够即时交换数组的函数?

  21. 21

    C:将一个char *指针复制到另一个

  22. 22

    将一个链表复制到另一个链表 C++

  23. 23

    将PDF分层在一起,并能够设置位置

  24. 24

    如何将对象数组中的内容复制到C ++中的另一个数组中?

  25. 25

    如何在Java中声明一个辅助方法,以便在本地使用并能够引用变量

  26. 26

    从单个表中组合2个SQL查询并能够对其进行更新

  27. 27

    lapply:适合数千个混合模型并能够提取lsmeans

  28. 28

    将值复制到从C ++(nasm)调用的汇编函数中的指针地址中

  29. 29

    Bash:将通配符作为shell脚本的参数并能够对其进行扩展

热门标签

归档