我可以在C中获得RIP地址吗?

时间:2019-04-08 14:22:03

标签: c cpu-registers

基本上,我正在尝试将RSP,RBP和RIP地址放入指针。

代码:

import React from 'react';
import { Formik } from 'formik';

const Basic = () => (
  <div>
    <h1>Anywhere in your app!</h1>
    <Formik
      initialValues={{ email: '', password: '' }}
      validate={values => {
        let errors = {};
        if (!values.email) {
          errors.email = 'Required';
        } else if (
          !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(values.email)
        ) {
          errors.email = 'Invalid email address';
        }
        return errors;
      }}
      onSubmit={(values, { setSubmitting }) => {
        setTimeout(() => {
          alert(JSON.stringify(values, null, 2));
          setSubmitting(false);
        }, 400);
      }}
    >
      {({
        values,
        errors,
        touched,
        handleChange,
        handleBlur,
        handleSubmit,
        isSubmitting,
        /* and other goodies */
      }) => (
        <form onSubmit={handleSubmit}>
          <input
            type="email"
            name="email"
            onChange={handleChange}
            onBlur={handleBlur}
            value={values.email}
          />
          {errors.email && touched.email && errors.email}
          <input
            type="password"
            name="password"
            onChange={handleChange}
            onBlur={handleBlur}
            value={values.password}
          />
          {errors.password && touched.password && errors.password}
          <button type="submit" disabled={isSubmitting}>
            Submit
          </button>
        </form>
      )}
    </Formik>
  </div>
);

export default Basic; 

上面的指针在获取RSP地址时工作正常。但是我不知道如何获取RBP和RIP地址。

您能告诉我如何将* rbp指向 ajaxResult[i].selectedTripLeader= $scope.TripLeaderData[0].Id OR ajaxResult[i]['selectedTripLeader'] = $scope.TripLeaderData[0].Id 地址和* rip指向#include <stdio.h> int main() { char buf[500]; int *rsp; int *rbp; int *rip; strcpy(buf, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); ptr = buf; printf("[buf:%p:%s]\n[rsp:%p:%s]\n", &buf, buf, rsp, rsp); return 0; } 地址吗?

1 个答案:

答案 0 :(得分:2)

  • 当前的x86硬件无法正常工作,因此无法获取任何寄存器的地址-it just doesn't have one

  • 是什么意思? 这意味着您可以获取每个寄存器的值,但无法获取寄存器的地址-它们没有地址。

  • 例如,如果您在函数的开头执行以下操作,则会获得RIP指向的地址。

void foo(param a, param b)
{
   int dummy;
   int* rip = &dummy;
}

但是请注意,您将无法在此功能之外访问此功能。