偷偷吐槽怕被骂?看大佬教你轻松去除钉钉水印

发表于:2021-7-05 09:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:小肥阳    来源:掘金

#
钉钉
  背景
  每次公司大群里面领导发了一些傻逼规定或者一些傻逼言论的时候,我们想曝光到网上去,但是碍于钉钉聊天界面的水印,到最后都是不了了之了。那有什么办法可以去除水印呢?

  方案
  ·PS
  这个方案对于大部分人门槛比较高,还有一个问题就是如果是很多张截图岂不是炸了?

  ·逆向钉钉APP
  通过技术手段,不让水印显示不就行了?!

  钉钉砸壳
  好!说干就干!还是一如既往的砸壳!如果不知道如何砸壳的,可以看看我之前的文章
  如果砸壳失败是因为钉钉有些版本延迟加载了动态库,导致砸壳的时候还没有load动态库,这里你可能需要这个工具——TZLoadAllLibs。他的原理就是:有些app有很多动态库,但是app刚起来的时候不一定会全部加载,导致砸壳不完全。该tweak用于解决这一问题。在设置app里选择要应用的app,在APP启动的时候就会加载所有动态库。

  新建MonkeyApp
  新建一个MonkeyApp,记住这里新建的project的APP的BundleID一定要写和钉钉一样的com.laiwang.DingTalk,如果不一样将无法启动APP。
  并将刚刚得到的钉钉.ipa文件拖入TargetApp文件夹,然后点击运行按钮。

  查看聊天界面布局

  我们可以看到有一个DTWaterMarkView里面加载了UIImageView,其实这些UIImageView里面加载的就是你的名字和手机尾号。
  那是不是只要将DTWaterMarkView的构造方法Hook,然后返回nil,就可以不会加载任何的UIImageView,这样就不会显示你的名字和手机尾号了呀!

  Hook DTWaterMarkView
  我们Hook UIView的构造方法,如果class等于DTWaterMarkView就返回nil。
%hook UIView

- (id)initWithFrame:(CGRect)frame{
    UIView *view = %orig();
    NSLog(@"xxxx view.class  : %@", NSStringFromClass(view.class));
    if([NSStringFromClass(view.class) isEqualToString:@"DTWaterMarkView"]){
        return nil;
    }
    return view;
}

%end

  重新运行钉钉,然后打开聊天页面。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号