zoukankan      html  css  js  c++  java
  • 逆向工程学习笔记(1)

    2020.11.6

    1.找main函数的方法

    1.找输出法:如果main函数有输出内容,不断F8直到有输出。重新运行,打断点+F4+F7进入函数,继续F8。。。直到看到标志性内容

    2.字符串查找法:如果能确定输出是连续字符串,可以直接找。右键-搜索,然后去引用里找就行了

    2.lea,mov,[]的区别

    对于lea指令

    第二操作数是寄存器且必须加[],代表取值,并将该值存到第一操作数里

    对于mov指令

    不加[]代表取值,加[]代表取地址

    3.妙妙的x++与++x实验

    大葱昨天半夜给了我一份奇怪的代码,反正运行出来的结果很奇怪

    今天实验一下

    对于这种索引里带语句的,猜测代码运行的优先级应该如下:

    左侧++x > 左侧取地址 > 左侧x++ > 右侧++x > 右侧求值 > 右侧x++ > 赋值

    (1 对于左右侧都有++x,x++而且都是在索引的情况,符合预期


    (2 右侧的x不是索引

    E1:这种可以正常编译

    E2:这种却根本不能编译

    真是神奇

    E3:如果把右侧的x+1改成x++,却能编译并运行。。。且反编译符合预期

    E4:不过如果这样写,却和E2不一样,它能编译!但是却不符合预期,右侧x++优先于取值进行了!

    调换1和x++的顺序,结果也没有改变

    我蒙了。。。以后看看编译器是咋写的,是不是辣鸡mingw的问题

  • 相关阅读:
    Shell脚本 --- 正则表达式和文本处理工具
    python的eval、exec函数
    内置函数 Built-in Functions
    关于Python中的lambda
    Python中*args和**kwargs的区别
    Python基础-10-文件操作
    Python基础-09-内置函数
    Python基础-08-函数
    Python基础-07-集合
    Python基础-06-字典
  • 原文地址:https://www.cnblogs.com/guapisolo/p/13985384.html
Copyright © 2011-2022 走看看