我正在尝试验证来自 iOS 应用程序的 HTTP 请求确实是从移动应用程序发送的。目前服务器代码只是检查“User-Agent”HTTP 标头,当然这不是很可靠的解决方案。
以下是我如何看待当前的 iOS SDK 可用于验证客户端是否是实际的 iPhone 用户。
推送通知
在通信的第一阶段,我们可以验证用户是移动用户,因为她如何从推送通知到特定应用程序获得标识符。
迪斯。即使我们可以重复推送通知,也不太可靠。滥用推送通知。
在应用程序内购买
可以在此处重复使用收据验证。
迪斯。明显的滥用。令人困惑。
所以问题是 - 是否有任何正确的方法来确认请求是从 iOS 应用程序,从 iOS 设备发送的?
平台:Mac OS X
Lang:Obj-C/C.
有可能以某种方式让'malloc'在进程地址空间的前4GB内分配内存吗?
我正在模拟i386堆栈,需要保证地址位于允许的32位范围内.
使用mmap + MAP_FIXED需要在任何'malloc'之前保留内存,这不太方便.带有约束的'malloc'会更方便.
我经常得到'otool'所示方法的实现地址的1字节偏移量.
例如'otool -o'给出0xe99d5,但'otool -tvV'给出:
+[NSError(SomeCategory) someMethod]:
000e99d4 b590 push {r4, r7, lr}
000e99d6 f6441184 movw r1, 0x4984
000e99da af01 add r7, sp, #4
000e99dc f2c0010a movt r1, 0xa
Run Code Online (Sandbox Code Playgroud)
所以方法从0xe99d4开始.0xe99d5看起来不对,没有对齐.我相信'otool'工作正常,我不了解实施的某些方面.如何解释输出?
这是简短的控制台应用示例
static char buffer[4096];
int main() {
for(int i=0;i<4096;i++) {
buffer[i] = 1234;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,编译器生成的'exe'文件应该包含.bss部分来存储'buffer'变量.
我正在使用Tiny C Compiler,结果文件不包含对.bss的任何引用.
DOS Header
Magic number: 0x5a4d (MZ)
Bytes in last page: 144
Pages in file: 3
Relocations: 0
Size of header in paragraphs: 4
Minimum extra paragraphs: 0
Maximum extra paragraphs: 65535
Initial (relative) SS value: 0
Initial SP value: 0xb8
Initial IP value: 0
Initial (relative) CS value: 0
Address of relocation table: 0x40
Overlay number: 0
OEM identifier: …Run Code Online (Sandbox Code Playgroud) assembly ×2
arm ×1
c ×1
disassembly ×1
ios ×1
iphone ×1
mach-o ×1
networking ×1
objective-c ×1
otool ×1
sign ×1
windows ×1