Mac 图像批量压缩 调整尺寸

「图压」是一款专为高效工作者设计的免费批量图片压缩利器!支持 Windows 和 macOS 两大操作系统。这款工具能在几乎不损害画质的情况下大幅度地压缩图片的体积,可以非常快速有效地批量减小文件大小。

图压是一款本地运行的工具,它无需联网,所有的图片压缩处理都在电脑本地上离线进行,相比各种在线图片压缩网站来说更加好用。一来处理速度和效率极高;二来可以免除上传图片到服务器耗时耗流量的麻烦;三来还能避免一些隐私相关的照片泄露的可能。

Continue Reading

【迅雷】应版权方要求 无法下载

迅雷下载的时候这错误(应版权方要求,无法下载)经常遇到,尝试过几种不同的工具,效果都一般。例如下载下面的这个东西,测试连接:

magnet:?xt=urn:btih:7ec36aaab68162228eab67016ae7328aa4574d43&dn=%5B%E7%94%B5%E5%BD%B1%E5%A4%A9%E5%A0%82www.dytt89.com%5D%E9%AC%BC%E5%90%B9%E7%81%AF%E4%B9%8B%E9%BB%84%E7%9A%AE%E5%AD%90%E5%9D%9F-2021_HD%E5%9B%BD%E8%AF%AD%E4%B8%AD%E5%AD%97.mp4
Continue Reading

Mac m1 安装Wine/WineHQ

Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是將 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。

Continue Reading

算法助手!基于Xposed的通用Hook工具[ZZ]

前言

大家好,我是Junge,以前接单的时候,经常需要分析各种加密算法,还有数据的sign算法,由于静态分析效率太低,就随便写了这个Hook工具。

起初使用的是logcat打印日志,将密文,密钥,明文,md5前的信息,MD5后的信息等信息打印出来,但是很快发现了一个问题,在数据量大的时候,密文很多,密钥也很多,打印信息太乱,经常会出现密文不知道对应哪个密钥,而且如果是动态秘钥,单纯的打印秘钥就显得没有意义了。

于是改过以后,才有了这软件的初版,能够将秘钥,密文,明文,联系起来,并打印出调用堆栈。
后来我的一个朋友也开发,并发布了该软件https://bbs.pediy.com/thread-262476.htm

但是后来由于各种原因,他没能继续维护软件,所以我将我写的放出来,给各位使用,并且只要有时间会持续维护的。

Continue Reading

Machoview 2.4 M1 Version

MachOView is a visual Mach-O file browser. It provides a complete solution for exploring and in-place editing Intel and ARM binaries.

旧版本代码编译之后打开文件可能会报下面的错误:
NSWindow drag regions should only be invalidated on the Main Thread!'
这个是由于进行状态更新的逻辑没有在主线程执行,通过下面的代码修复即可:
//----------------------------------------------------------------------------
- (void)handleThreadStateChanged:(NSNotification *)notification
{
  if ([notification object] == dataController)
  {
    NSString * threadState = [[notification userInfo] objectForKey:MVStatusUserInfoKey];
    if ([threadState isEqualToString:MVStatusTaskStarted] == YES)
    {
      if (OSAtomicIncrement32(&threadCount) == 1)
      {
        [progressIndicator setUsesThreadedAnimation:YES];
        [progressIndicator startAnimation:nil];
//        [stopButton setHidden:NO];
          dispatch_async(dispatch_get_main_queue(), ^{
              [stopButton setHidden:NO];
          });
       }
    }
    else if ([threadState isEqualToString:MVStatusTaskTerminated] == YES)
    {
      if (OSAtomicDecrement32(&threadCount) == 0)
      {
        [progressIndicator stopAnimation:nil]; 
        [statusText setStringValue:@""];
          dispatch_async(dispatch_get_main_queue(), ^{
              [stopButton setHidden:YES];
          });
//        [stopButton setHidden:YES];
      }
    }
  }
}
Continue Reading