逆向-beginners之传递指针参数

这篇具有很好参考价值的文章主要介绍了逆向-beginners之传递指针参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#include <stdio.h>

int f(int *a, int *b, int *c)
{
    return *a * *b + *c;
}

int main()
{
    int a = 1, b = 2, c = 3;

    printf("%d\n", f(&a, &b, &c));    // 5
    return 0;
}

#if 0

note : 传递地址到函数的基本上都是指针

#endif

#if 0
/*
 * intel
 */
0000000000001169 <f>:
    1169:    f3 0f 1e fa              endbr64 
    116d:    55                       push   %rbp
    116e:    48 89 e5                 mov    %rsp,%rbp
    1171:    48 89 7d f8              mov    %rdi,-0x8(%rbp)
    1175:    48 89 75 f0              mov    %rsi,-0x10(%rbp)
    1179:    48 89 55 e8              mov    %rdx,-0x18(%rbp)
    117d:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    1181:    8b 10                    mov    (%rax),%edx
    1183:    48 8b 45 f0              mov    -0x10(%rbp),%rax
    1187:    8b 00                    mov    (%rax),%eax
    1189:    0f af d0                 imul   %eax,%edx
    118c:    48 8b 45 e8              mov    -0x18(%rbp),%rax
    1190:    8b 00                    mov    (%rax),%eax
    1192:    01 d0                    add    %edx,%eax
    1194:    5d                       pop    %rbp
    1195:    c3                       retq   

0000000000001196 <main>:
    1196:    f3 0f 1e fa              endbr64 
    119a:    55                       push   %rbp
    119b:    48 89 e5                 mov    %rsp,%rbp
    119e:    48 83 ec 20              sub    $0x20,%rsp
    11a2:    64 48 8b 04 25 28 00     mov    %fs:0x28,%rax
    11a9:    00 00 
    11ab:    48 89 45 f8              mov    %rax,-0x8(%rbp)
    11af:    31 c0                    xor    %eax,%eax
    11b1:    c7 45 ec 01 00 00 00     movl   $0x1,-0x14(%rbp)
    11b8:    c7 45 f0 02 00 00 00     movl   $0x2,-0x10(%rbp)
    11bf:    c7 45 f4 03 00 00 00     movl   $0x3,-0xc(%rbp)
    11c6:    48 8d 55 f4              lea    -0xc(%rbp),%rdx
    11ca:    48 8d 4d f0              lea    -0x10(%rbp),%rcx
    11ce:    48 8d 45 ec              lea    -0x14(%rbp),%rax
    11d2:    48 89 ce                 mov    %rcx,%rsi
    11d5:    48 89 c7                 mov    %rax,%rdi
    11d8:    e8 8c ff ff ff           callq  1169 <f>
    11dd:    89 c6                    mov    %eax,%esi
    11df:    48 8d 3d 1e 0e 00 00     lea    0xe1e(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>
    11e6:    b8 00 00 00 00           mov    $0x0,%eax
    11eb:    e8 80 fe ff ff           callq  1070 <printf@plt>
    11f0:    b8 00 00 00 00           mov    $0x0,%eax
    11f5:    48 8b 4d f8              mov    -0x8(%rbp),%rcx
    11f9:    64 48 33 0c 25 28 00     xor    %fs:0x28,%rcx
    1200:    00 00 
    1202:    74 05                    je     1209 <main+0x73>
    1204:    e8 57 fe ff ff           callq  1060 <__stack_chk_fail@plt>
    1209:    c9                       leaveq 
    120a:    c3                       retq   
    120b:    0f 1f 44 00 00           nopl   0x0(%rax,%rax,1)

/*
 * arm
 */
000000000040055c <f>:
  40055c:    d10083ff     sub    sp, sp, #0x20
  400560:    f9000fe0     str    x0, [sp, #24]
  400564:    f9000be1     str    x1, [sp, #16]
  400568:    f90007e2     str    x2, [sp, #8]
  40056c:    f9400fe0     ldr    x0, [sp, #24]
  400570:    b9400001     ldr    w1, [x0]
  400574:    f9400be0     ldr    x0, [sp, #16]
  400578:    b9400000     ldr    w0, [x0]
  40057c:    1b007c21     mul    w1, w1, w0
  400580:    f94007e0     ldr    x0, [sp, #8]
  400584:    b9400000     ldr    w0, [x0]
  400588:    0b000020     add    w0, w1, w0
  40058c:    910083ff     add    sp, sp, #0x20
  400590:    d65f03c0     ret

0000000000400594 <main>:
  400594:    a9be7bfd     stp    x29, x30, [sp, #-32]!
  400598:    910003fd     mov    x29, sp
  40059c:    52800020     mov    w0, #0x1                       // #1
  4005a0:    b9001fa0     str    w0, [x29, #28]
  4005a4:    52800040     mov    w0, #0x2                       // #2
  4005a8:    b9001ba0     str    w0, [x29, #24]
  4005ac:    52800060     mov    w0, #0x3                       // #3
  4005b0:    b90017a0     str    w0, [x29, #20]
  4005b4:    910053a2     add    x2, x29, #0x14
  4005b8:    910063a1     add    x1, x29, #0x18
  4005bc:    910073a0     add    x0, x29, #0x1c
  4005c0:    97ffffe7     bl    40055c <f>
  4005c4:    2a0003e1     mov    w1, w0
  4005c8:    90000000     adrp    x0, 400000 <_init-0x3e8>
  4005cc:    911a4000     add    x0, x0, #0x690
  4005d0:    97ffffa0     bl    400450 <printf@plt>
  4005d4:    52800000     mov    w0, #0x0                       // #0
  4005d8:    a8c27bfd     ldp    x29, x30, [sp], #32
  4005dc:    d65f03c0     ret
#endif
 文章来源地址https://www.toymoban.com/news/detail-733296.html

到了这里,关于逆向-beginners之传递指针参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 汇编语言(Assembly Language)习题:键盘输入一个字符串,试将其中的小写字母转换为大写字母,其它字符保持不变。

    前置知识:汇编语言常用系统功能调用(如果懂直接跳过看题目详解) 格式: 功能:从键盘输入字符的ASCII码送入寄存器AL中,并送显示器显示。 格式: 功能:将DL寄存器中的字符送显示器显示,如果DL中为〈CTRL〉+〈BREAK〉的ASCII码,则退出。 格式: 功能:将DL寄存器中的字

    2024年02月03日
    浏览(79)
  • Win10 添加或删除功能时报错:0x80073701,找不到引用的汇编 (ERROR_SXS_ASSEMBLY_MISSING)

    问题描述: 当通过控制面板或DISM命令或PowerShell命令Enable-WindowsOptionalFeature修改Windows功能时,可能会遇到此报错,导致功能修改失败。 关于这个问题的来源,英文版的错误信息很明确:ERROR_SXS_ASSEMBLY_MISSING,有SXS组件找不到,中文机翻痕迹明显,压根看不懂是啥意思。 如果你

    2024年02月05日
    浏览(49)
  • 安天逆向教程——常用汇编语句

          反汇编时更多关注这些条件分支。如果看懂这些条件分支,会对程序的大体逻辑有一个整体的了解。 至于程序里面的细节,有时会省略掉。往往关键的跳转理解了甚至进行一点点的改动,就会使得程序发生翻天覆地的变化。    

    2024年02月16日
    浏览(37)
  • 反汇编逆向实战——扫雷辅助制作

    刚开始是预备知识,如果熟悉的话,可以直接跳到第二部分阅读 在 Windows API 中, SetTimer 函数用于创建一个定时器,并在指定的时间间隔后触发一个定时器消息。以下是关于 SetTimer 函数的介绍: 功能:创建一个定时器,并在指定的时间间隔后触发定时器消息。 参数: hWnd:

    2024年02月08日
    浏览(42)
  • 滴水逆向3期笔记与作业——01汇编

    防止OneNote丢失。 海哥牛逼。 函数功能: MOV EAX,DWORD PTR SS:[EBP+8] ADD EAX,DWORD PTR SS:[EBP+C] 作业1 主要功能 作业2 主要功能 5+6-5+0xA=0x10 作业3 主要功能 比较5,0C和9的最大值 计算7+6+5+4+3+2+3+2=0x20 海哥牛逼。

    2023年04月25日
    浏览(23)
  • 【软件逆向-分析工具】反汇编和反编译工具

    目录 一、IDA 1.1、简介: 1.2、使用方法: (1)IDA打开文件 (2)IDA主窗口介绍 (3)IDA的基本使用 二、调试器 2.1、简介: 2.2、Ollydbg (1)主界面 (2)断点操作 (3)代码跟踪操作 2.3、gdb (1)简介: (2)安装 (3)基本的调试操作 三、Trace类工具 3.1、简介: 3.2、Qira 反汇

    2024年02月04日
    浏览(43)
  • IDA-逆向分析-工具教程-IDA简介-反汇编工具-功能窗口

    介绍了IDA反汇编原理分为, 线性扫描反汇编和递归下降反汇编 。比较了两者的优点和缺点。线性扫描反汇编算法采用一种非常简单的方法来确定需要反汇编的指令的位置:一条指令结束、另一条指令开始的地方。因此,确定起始位置最为困难。常用的解决办法是,假设程序

    2024年02月10日
    浏览(43)
  • 【编译、链接、装载十六】汇编与指针、汇编与new

    简介:我们从预处理、编译、汇编、编译、链接、装载一路走到现在,一直在c语言的层面分析,原因还是这些知识太苦涩,理解时需要看下具体的反汇编代码,且c++的反汇编更难理解些,所以,c语言的入手比c++入手更简单和更好理解些。在这个系列的结尾,我们从汇编层面

    2024年02月13日
    浏览(44)
  • 75.网游逆向分析与插件开发-背包的获取-背包结构与指针的逆向分析

    内容参考于:易道云信息技术研究院VIP课 上一个内容:物品名称与物品编号的映射关系分析-CSDN博客 通过上一个内容已经可以通过物品的id得到一个名字,知道了它的算法,它的算法自己封装好了,我们直接用就好,接下来要用到物品的指针了,所以接下来分析物品的指针怎

    2024年01月21日
    浏览(39)
  • 二进制代码反汇编逆向工具:IDA Pro(Win&Mac)v7.7 汉化版

    IDA Pro是一款交互式的、可编程的、可扩展的、多处理器的、交叉Windows或Linux WinCE MacOS平台主机来分析程序。它被公认为最好的花钱可以买到的逆向工程利器,已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。 功能丰富:IDA Pro提供了诸多功

    2024年02月20日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包