質問編集履歴

1

変更

2019/09/14 14:04

投稿

kazuyakazuya
kazuyakazuya

スコア193

test CHANGED
File without changes
test CHANGED
@@ -89,3 +89,75 @@
89
89
  このようになることを期待したのですが・・・。
90
90
 
91
91
  分からないので参考になるリンクまたは説明をお願いします。
92
+
93
+
94
+
95
+ ```c
96
+
97
+ #include <intrin.h>
98
+
99
+ #include <stdio.h>
100
+
101
+ void* __stdcall f1()
102
+
103
+ {
104
+
105
+ puts(__FUNCTION__);
106
+
107
+ return _ReturnAddress();
108
+
109
+ }
110
+
111
+ void* __stdcall f2(void* p)
112
+
113
+ {
114
+
115
+ puts(__FUNCTION__);
116
+
117
+ *(void**)_AddressOfReturnAddress() = p;
118
+
119
+ printf("f2関数内・・・%p\n",p);
120
+
121
+ return 0;
122
+
123
+ }
124
+
125
+
126
+
127
+ int main()
128
+
129
+ {
130
+
131
+ void* p = f1();
132
+
133
+ printf("リターンアドレスは・・・%p\n",p);
134
+
135
+ f2(p);
136
+
137
+ return 0;
138
+
139
+ }
140
+
141
+
142
+
143
+ ```
144
+
145
+
146
+
147
+ ```c
148
+
149
+ f1
150
+
151
+ リターンアドレスは・・・00A61DAD
152
+
153
+ f2
154
+
155
+ f2関数内・・・00A61DAD
156
+
157
+ リターンアドレスは・・・00000000
158
+
159
+ f2
160
+
161
+ f2関数内・・・00000000
162
+
163
+ ```