虚拟定位的修改机型实现原理,分析不下去了!求指点

想了解一下“虚拟定位”这个软件是怎么做的修改机型,但是由于知识有限,分析不出来是怎么做到的,以下是我自己的粗略分析.
首先下载了deb解包来导出头文件,二进制文件扔进Hopper分析,使用FLEX找到对应的控制器,根据Hopper代码结合起来,大致分析了工作原理,首先软件会在/var/mobile/Library/Preferences/目录下生成一个otrlocation.app.85819.net.plist文件,文件内容如下

address_switchswitch都是控制开关,f.c这个字典里装的就是打开了修改机型和位置的App的包名和内容
下面这个好像就是改机型的方法,因为知识问题,我只能看出大致流程,先获取系统的机型来比较,如果不一样,就用plist中设置的机型将其替换,但是这里我有个疑虑,就是这个替换的问题,strncpy(stack[2022], r1, r0);这个方法可以直接把系统的给替换掉?为此我自己写了个Demo测试


    struct utsname systemInfo;
    uname(&systemInfo);
    NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
    
    

我用上面的方法获取的机型,用“虚拟定位”对我这个demo进行修改是成功了的,我的想法是他Hook了系统的utsname.h来改的,但是找不出对应的操作方法!希望大神能给点思路和指点一下!

1 个赞

hook uname函数,修改传入的参数值,machine.用strncpy吧

machine是一个结构体里面的值,话说怎么hook呢?

2 个赞

请求此问题

请问如何修改呢?

灰产们的智商从来没有让我失望过。

ayy lmao

1 个赞

哈哈,可惜现在公司用的是指纹打卡,上一个公司用的是钉钉我也喜欢改

确实有点捉急:joy: