小白日常提问打卡6月10号,请大神进场


小白求教。
求大神解答每一个箭头指的地方 代表什么意思,还有这个dq的英文全称
:rofl:

1 Like

2 Likes
Directive Purpose Storage Space
DB Define Byte allocates 1 byte
DW Define Word allocates 2 bytes
DD Define Doubleword allocates 4 bytes
DQ Define Quadword allocates 8 bytes
DT Define Ten Bytes allocates 10 bytes
3 Likes

你的图打不开

谢谢 这正是我需要的

我这里开了几个代理都能正常打开

后面我把 V关了 ,可以看到,
谢谢你


平时工作忙 ,业余时间 ,节假日可以在家学习哈哈
我以截图加文字的提问方式 向大神请教。

注释; DATA XREF 如果直译过来 就是“data 外部参照” ,感觉还是理解不了

br x8请先学习arm64汇编

xref是指这个地方有别的代码引用

2 Likes

嗯, 好的 谢谢大佬


入栈和出栈 对我们阅读汇编来说 ,意义大吗? 有没有必要去分析它呢


对于 objc_msgSend,我可以通过 [x0 x1:x2] 回溯出代码,但是对于 NSLog
这种用[x0 x1:x2] 好像推测不出来 ,我可以用什么方法来看NSLog函数的 输出的是什么吗?

大佬:我用fishhook C函数 这样会蹦 怎么解决呀

大佬 ,问你一个问题
我用fishhook C函数 这样会蹦 怎么解决呀 是我写错了吗

小白回答:
这个是标准库里的函数把。标准库是静态库。 是链接的时候就被拼二进制里了,fishhook只能hook lazy_bind的。
推荐看一下《 程序员的自我修养,链接装载和库》。

我好像说错了,其实我也不是很确定。。。

请贴完整代码

typedef char * (*strstr_ptr_t)(const char*, const char*);
static strstr_ptr_t orig_strstr = NULL;
char *my_strstr(const char* s1, const char* s2);
char *my_strstr(const char* s1, const char* s2){
    return orig_strstr(s1, s2);
}

CHConstructor{
    struct rebinding bind;
    bind.name = "strstr";//要HOOK系统函数的函数名称
    bind.replacement = my_strstr;//新的函数去替换系统的
    bind.replaced = (void *)&orig_strstr;//把真正的地址保存到orig
    struct rebinding rebs[] = {bind};
    rebind_symbols(rebs, 1);
}

完整代码如上

大佬 ,您有空也帮我看下哦

typedef char * (strstr_ptr_t)(const char, const char*);
static strstr_ptr_t orig_strstr = NULL;
char my_strstr(const char s1, const char* s2);
char my_strstr(const char s1, const char* s2){
return orig_strstr(s1, s2);
}

CHConstructor{
struct rebinding bind;
bind.name = “strstr”;//要HOOK系统函数的函数名称
bind.replacement = my_strstr;//新的函数去替换系统的
bind.replaced = (void *)&orig_strstr;//把真正的地址保存到orig
struct rebinding rebs[] = {bind};
rebind_symbols(rebs, 1);
}

完整代码如上

运行会蹦
![7BDEE212-F0A9-4D76-9814-8E010E31BE4D|690x118](upload://1uIIZfxBAqHrpgFiQtfGo0jsBlE.png)

回帖我们能看到不用回两遍

嗯嗯 ,请帮我看下这个问题