2024年安卓最全教你四行代码搞定钉钉打卡,2024年最新微信小程序页面跳转方式

总结

开发是面向对象。我们找工作应该更多是面向面试。哪怕进大厂真的只是去宁螺丝,但你要进去得先学会面试的时候造飞机不是么?

作者13年java转Android开发,在小厂待过,也去过华为,OPPO等,去年四月份进了阿里一直到现在。等大厂待过也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

960页全网最全Android开发笔记

资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

前言: 本文讲述如何用最少的代码,实现钉钉的远程打卡。

破解版本的钉钉打卡(当然如果你勤快也可以自己去砸壳)。">1.下载最新破解版本的钉钉打卡(当然如果你勤快也可以自己去砸壳)。

111.jpg

2.借用杨君大神的 iOS符号表恢复&逆向支付宝 (注意: 现在的App大多都是armv7、arm64双架构,符号表恢复的时候需要用到 “lipo” 命令,分别恢复再合并)。

22.jpg

3.使用XCode的lldb调试(默认情况XCode的lldb没有权限调试第三方应用)

33.jpg提示: Ensure “XXXX” is not already running, and cardlan_yuhuajun has permission to debug it.

========== 给App添加一个可调式权限 ==========
1.将应用程序从设备上拷贝到本地
2.利用 ldid 将应用程序的 code sign 导出:ldid -e AlipayWallet >> AlipayWallet.xml
3.在 AlipayWallet.xml 文件中添加 get-task-allow 权限
<key>get-task-allow</key> <true/>
4.利用 ldid 对应用进行重签名 ldid -SAlipayWallet.xml ./AlipayWallet
5.将应用拷回设备,将设置可执行权限 chmod 755 AlipayWallet
参考:(https://blog.csdn.net/kissing_huo/article/details/78548942)

4.附加进程

44.jpg

5.分析

55.jpgReveal:分析出打卡这个界面是一个H5,说明是H5与原生的交互(Bridge)。 既然是H5调用原生,那么源头还是在原生,直接转到原生分析.

66.png本地写一个demo,得到启动定位的关键函数 startUpdatingLocation

5.1   用第4步附加了钉钉打卡进程的XCode,添加一个Xcode 符号断点(Symbolic Breakpoint)

77.jpg

5.2 symbo 中添加关键字函数 startUpdatingLocation

88.png回车后,由于恢复了符号表,XCode自动查找并列举所有调用过这个函数的类
99.jpg
这个时候再进入到打卡界面,断点会被断下:
aa.png每次进入到打卡页面都会触发 AMapLocationManager类的startUpdatingLocation,这是启动或刷新定位,那么接收定位数据的由CLLocationManagerDelegatelocationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)location代{过}{滤}理方法。至此我们得到的定位数据的源头,iOS系统的代{过}{滤}理方法返回了当前的位置信息。

5.3 给代{过}{滤}理方法添加一个断点,查看函数调用过程bb.png

再次进入到打卡页面,得到所有的函数调用过程:
cc.jpg
H5调用原生的定位[AMapLocationManager startUpdatingLocation],在[AMapLocationManager locationManager:didUpdateLocations:]源头中得到系统定位坐标,回调给H5,至此分析结束。

Tweak.xm

通过一个demo,模拟实现一下iOS获取坐标:
dd.jpg发现locations这个参数返回的是一个__NSArrayM类型,而这个类型实际指向的是NSMutableArray  详情请参考__NSArray0、__NSArrayI、__NSArrayM
既然是用NSArray指向一个可变数组,那么用iOS的深浅拷贝就可以实现偷梁换柱。
代码:

%hook AMapLocationManager
  • (void) locationManager:(id)arg1 didUpdateLocations:(id)arg2{

    CLLocation *lar = [[CLLocation alloc] initWithLatitude:39.9072885060602 longitude:116.39123343289631];

    NSMutableArray *array = (NSMutableArray *)arg2; // 可变数组指向 NSArray指向的可变数组。

    [array removeAllObjects]; //删掉系统返回的坐标

    [array addObject:lar]; // 添加我们自己的目标坐标

    %orig;

}

%end

总结

钉钉使用的是高德地图(GCJ02坐标),iOS系统CLLocationManager得到的是WGS84坐标,在实际操作当中需要进行一次坐标的转换。
真正的逻辑代码就4句:
1122.png

这里提供两个网站:

高德地图坐标拾取系统
火星坐标在线转换

将高德地图拾取到的坐标转换成WGS84,然后赋值给CLLocation

133750x03z368taztc3ald.png
最后附上效果图,本人在上海。

总结

找工作是个很辛苦的事情,而且一般周期都比较长,有时候既看个人技术,也看运气。第一次找工作,最后的结果虽然不尽如人意,不过收获远比offer大。接下来就是针对自己的不足,好好努力了。

最后为了节约大家的时间,我把我学习所用的资料和面试遇到的问题和答案都整理成了PDF文档

喜欢文章的话请关注、点赞、转发 谢谢!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值