弹出到 VirusTotal,我们可以获取恶意二进制文件的副本,并注意到它首次提交时2021-12-21检测为 0: image.png SysJoker (macOS)......WhatsYourSign,我的开源实用程序通过 UI 显示代码签名信息,显示此二进制文件已签名,尽管是通过临时签名: image.png SysJoker 签名,虽然是临时的 您还可以使用 macOS...并且,当RunAtLoad密钥设置为true时,每次用户登录时恶意软件都会重新启动。...export=download&id=1W64PQQxrwY3XjBnv_QAeBQu-ePr537eu 由于我们安装了免费的 macOS 防火墙LuLu,因此当恶意软件尝试访问并下载此文件时,...该函数调用: unzip -o 解压缩可执行文件, chmod 0777 更改权限(在现在解压缩的可执行文件上) system 执行二进制文件。
选项 --version 显示版本信息。 -h|--help 显示命令行帮助。 安装 dotnet-sos 在本地安装用于调试 .NET Core 进程的 SOS 扩展。...在 macOS 和 Linux 上,将更新 .lldbinit 文件,以便扩展在 lldb 启动时自动加载。...如果要使用较旧的调试工具(低于版本 10.0.18317.1001)在 Windows 上安装 SOS,则需要通过在调试程序中运行 .load %USERPROFILE%\.dotnet\sos\sos.dll...例如,如果要从 Arm64 主机运行 Arm32 二进制文件,则需要使用 dotnet-sos install --architecture Arm 安装 SOS。...可以使用以下体系结构: Arm Arm64 X86 X64 卸载 dotnet-sos 卸载 SOS 扩展名,并在 Linux 和 macOS 上将其从 lldb 配置中删除。
上篇文章我们从开发者的角度介绍了如何建立iOS项目并且在真机上运行, 上上篇文章则介绍了Objective-C的基本概念和用法。而这一切,都是为了这次的铺垫。...获取目标 在上篇文章中其实有说了,开发者在编译iOS或者MacOS项目时,最终生成的应该是.app文件, 但在iOS中还需要对app文件进行打包,生成.ipa文件。...为了在应用中执行我们自己的代码,我们可以直接修改二进制的2048.app/2048文件, 毕竟,它只是一个运行于ARM平台的普通Mach-O文件而已: $ file pp2048/Payload/2048...交叉编译 现在我们已经(在Mac上)验证了向二进制文件中注入动态库的可行性,接下来就是iOS了。 和Mac不同的是,iOS应用一般是ARM/ARM64版本,因此在x86的笔记本上,就需要交叉编译。...lldb 刚刚启动时我们使用了ios-deploy的--debug参数来启动lldbserver/client 并自动attach,lldb是LLVM中功能强大的调试器,功能与gdb类似,如下: (lldb
[b]; hexified = hexified.trim(); } } } log(hexified+"\n"); } } 参数显示出来了...拷贝到macOS中的,scp root@iOSIP:/Developer/usr/bin/debugserver ~/debugserver 瘦身 lipo -thin arm64 ~/debugserver...上用debugserver来attach进程 : ssh连接手机之后,使用debugserver localhost:1234 -a pid lldb调试 在mac终端执行lldb。...使用iproxy 端口转发 iproxy 1234 1234 在lldb中执行process connect connect://localhost:1234 链接手机debugserver 动态调试需要知道基地址...b 0x10073CEF0 下断点 运行app 停到了断点位置,读取x0的值,映射函数返回值给了x0寄存器。po $x0 c app继续运行。更多命令可以 help 查看。
此时,debugserver二进制文件应该已经存在。 通过USB进行调试 对我而言,它只在我通过USB进行调试时才有效。如果Mac上未安装iproxy,请通过brew进行安装: ?...然后在Mac控制台中运行: ? 最后,将iPhone连接到USB。就是这样,我们准备开始。 将LLDB attach到已经运行的进程 在你的Mac控制台上,连接iPhone: ?...在iPhone的控制台中运行 ? 找到你想要attach的进程的pid。然后运行 ? 如果你看到和我类似的内容 ? 则表明运行一切正常。现在,在Mac上打开另一个控制台,然后运行 ?...现在,在Mac上打开另一个控制台,然后运行 ? 在LLDB控制台中运行 ? 重要提示!...如果你遇到了错误则, 在没有调试器的情况下运行应用程序 如前一节所述,将调试器attach到应用程序 关闭(LLDB)应用程序 尝试在调试器下再次运行应用程序 *参考来源:kov4l3nko,FB小编
另外,较旧的 Mac 使用 32 位架构,但是 Apple 在 2010 年底停止生产 32 位 Mac。 在 macOS 下运行的程序可能是 64 位兼容的,包括 Simulator 上的程序。...如果对使用的硬件架构有疑问,可以在终端中运行以下命令来获取计算机的硬件架构: uname -m 在能耗要求很高的移动设备(如 iPhone)上使用 ARM64 体系结构。...这是与之前显示的方法相同的屏幕截图,除了这次是在 iPhone 7 上的 ARM64 程序集中: 您现在可能无法区分这两种架构,但是您很快就会知道它们就像手背一样....这意味着当 Swift 调用函数时,先前分配给选择器的 RSI 寄存器实际上就是函数的第二个参数。好了,足够的理论 - 是时候将其付诸实践了。...lldb -n SpringBoard 这样会将 LLDB 绑定到正在模拟器上运行的 SpringBoard 实例上!SpringBoard 就是在 iOS 上控制主屏幕的程序。
#endif 如果在 iOS 和 macOS 应用之间共享代码,不要以为用于 arm64 架构的代码仅在 iOS 设备上运行,该代码也可以在 基于 Apple 芯片上的 macOS 应用中运行,要区分...尽管您可以在基于 Intel 的 Mac 计算机上创建此二进制文件,但是无法在 arm64 架构上运行或者调试,只有具有 Apple 芯片的 Mac 才能运行和调试。...当您构建通用二进制文件时,Xcode 会两次编译您的源文件,每种架构一次,Link 每种架构的二进制文件后,Xcode 使用 lipo 工具将特定架构的二进制文件合并到单个可执行文件中。...在 Apple 芯片上,系统倾向于在 arm64 架构上执行。用户可以通过在 Finder 的 "显示简介" 窗口中启用相应的选项,来强制系统在 Rosetta 转换下运行该应用程序。...当其设置为 YES 时,系统会阻止您的应用在转换后运行。另外,系统还会从您应用的 "显示简介" 窗口中删除 Rosetta 转换选项。
Voltron可以通过调试器来获取和显示数据,并通过在其他TTY中运行这些视图来帮助构建一个定制的调试器用户界面,以满足广大安全测试人员的需求。...工具内置视图可用于: 注册表 反汇编 堆栈 内存 断点 回溯 工具支持 Voltron支持LLDB、GDB、VDB和WinDbg/CBD,可以在macOS、Linux和Windows平台上运行。...并支持下列系统架构: lldb gdb vdb windbg x86 ✓ ✓ ✓ ✓ x86_64 ✓ ✓ ✓ ✓ arm ✓ ✓ ✓ ✗ arm64 ✓ ✗ ✗ ✗ powerpc ✗ ✓ ✗ ✗.../install.sh -v /path/to/venv -b lldb 工具使用 如果你的调试器提供了初始化脚本,可以直接配置其在启动时(entry.py入口点脚本)加载Voltron。...比如说在macOS上,脚本路径为“/Library/Python/2.7/site-packages/voltron/entry.py”,install.sh脚本会将其添加进GDB和LLDB的相关路径中
还是以微信为例,主程序解密后单 arm64 架构的可执行文件就有 218 MB,即便在逆向工具里分析也会让人无从下手。这时候就需要一个入手点,用互联网的黑话来说,就是需要一个抓手。...花开两朵,各表一枝,在前面砸完壳的第一时间我就预感到需要逆向,所以早早地把 200MB 的 MachO 丢进了 IDA,在文章写到这里时已经过去了四个小时,期间看了两集动漫,但是 IDA 还是没有全部分析完...ida.png 在上面高亮的一行,IDA 反编译的结果有点问题,显示 V7 是未初始化的,遇到这种情况直接看汇编即可,汇编是不会骗人的: asm 即第一个参数实际上是 PluginUtil 类的地址,...瘦身 Mach-O程序是支持多架构的,例如同一个程序既能运行在arm32位也能运行在64位机器上。...基于 Substrate 开发的 dylib 称为 Tweak,由 Substrate 根据 plist 在应用启动时选择进行注入。
gc工具链编译和链接Go程序的时候, 编译出的二进制文件会携带DWARFv3调试信息。...1、安装lldb MacOS下如果你安装了XCode,应该已经安装了LLDB, LLDB是XCode默认的调试器。...2、通用操作 显示文件和行号,设置断点以及反编译: 1 (lldb) l 2 (lldb) l line 3 (lldb) l file.go:line 4 (lldb) b line 5 (lldb)...为了构建二进制文件, 进入$GOROOT/src/regexp然后运行run go test -gcflags "-N -l" -c,这会产生可执行文件 regexp.test。...t.Errorf("String() = `%s`; should be `%s`", re.String(), test.pat) 程序会运行到设置的断点上
cc 提供支持; 一些在 arm64 硬件上运行的核心基础设施服务,为未来的扩展提供了可能性。...主机(host)是指编译二进制文件的机器。 目标平台(target)是指运行二进制文件的机器。 在进行原生编译时,主机和目标是相同的平台(即操作系统、处理器架构和共享库是相同的)。...在进行交叉编译时,主机和目标是不同的平台(例如,从 macOS arm64 (M1) 编译成 x86_64 Linux)。有时候,目标机器可能无法编译代码,但可以运行。...在撰写本文时,GCC 和 LLVM 都不能交叉编译 macOS 二进制文件。因此,我们维护了一个专门的构建集群来编译 macOS 目标平台。...虽然可以在 arm64 硬件上运行我们的核心基础设施,但我们还没有准备好运行面向客户的应用程序。我们的下一步是在 arm64 上试验面向客户的应用程序,这样就可以测试它的性能并决定未来的方向。
这些被扩展(或增大)的可执行文件,是包含了为多个不同架构原生构建的切片。这允许库的所有者分发一个运行在所有预期的目标架构上的单独的二进制。...当源码不能被暴露或当处理非常庞大的代码仓库时,预编译库成为可执行文件非常有意义,因为预编译源码以及以二进制文件分发他们,将节省构建程序在他们的应用上的构建时间。...事实上,如果我们需要,我们可以走得更远,例如,在同一个 xcframework 中捆绑一个包含 iOS 目标的 UIKit 接口的二进制文件和一个包含 macOS 的 AppKit 接口的二进制文件,然后让...由于很多人都非常渴望让这个插件在他们的 SwiftPM 项目中运行,我认为这将是一个很好的例子来展示我们如何将分发的可执行文件从他们的发布页面变成一个与 macOS 架构和 Linux arm64 兼容的工件包...在这种情况下,为这两个命令运行它会显示: swiftlint-macos/swiftlint swiftlint: Mach-O universal binary with 2 architectures
本篇文章是我在学习逆向工程时整理的逆向工程工具集 只作为记录使用 并不是详细的教程 阅读本篇教程需要你有一定逆向工程知识 一,Cycript 介绍 iOS运行时工具 可hook运行时进程 并提供了以下能力...1,开发者可以在应用运行时查看和修改应用 得到所有正在使用的类名或方法名 2,运行时修改实例变量的值 3,Method Swizzling,替换特定方法的实现 4,运行时调用任意代码 当然Cycript...压缩文件 arm64根据手机指定 lipo -thin arm64 ~/debugserver -output ~/debugserver 3,给debug server添加task_for_pid权限...server指定的端口一致) 五,dyld_decache 提取iOS系统内的二进制文件 从iOS 3.1开始,包括frameworks在内的许多库文件被放入了位于“/System/Library/Caches...dyld_shared_cache_armx” (dyld_shared_cache_armv7,dyld_shared_cache_armv7s,dyld_shared_cache_arm64),可使用dyld_decache将其中的二进制文件提取出来
先来了解一下有哪些DB 和 db对应的作用 这里主要会使用到msg_x.db, wccontact_new2.db, group_new.db Msg_1|2|3|4.db …… 这些是把聊天信息分割后生成的文件...本次需要使用到的工具:lldb,DB Browser for SQLite, wechat 注意: 如果有小伙伴的mac book 一会儿运行了lldb之后出现error: attach failed...csrutil 的开启是为了提供系统完整性保护 关闭了之后我们就能使用lldb 对wechat进行调试。 搞事部分 1. 运行微信的记得退出微信先。...sqlite3_key | br set -n sqlite3_key | br s -n sqlite3_key br s -n 的意思就是在sqlite3_key的地方下断点 | 分割多种写法 然后在...continue 一下 5.点击登陆,并在我们的手机上进行确认登陆 6.这个时候断点就生效了,程序会保持在刚才那个登陆确认的页面上,然后我们在lldb上就能够看到显示的汇编指令,可以看到最后一行是把
S Fri04PM 8:36.19 /Applications/WeChat.app/Contents/MacOS/WeChat 进程id是25132 $ lldb -p 25132 //...开始hook进程 (lldb) process attach --pid 25132 Process 25132 stopped * thread #1, queue = 'com.apple.main-thread...0x02 获取sqlite3_key 继续加断点,如果加在sqlite3_key上,会发现拿不到PageSize,查看源码看调用链,pageSize是在void Database::setCipher(...const void *key, int keySize, int pageSize)的时候接收的,断点打在setCipher上 (lldb) br set -n setCipher (lldb) c...分析一下表,发现文本内容存在BAK_0_TEXT,媒体内容存在BAK_0_MEDIA,以偏移量记录某条消息,简单查看一下这2个文件,都是写二进制数据,看来还用了某种加密方式。
引言 Go 1.11和Go 1.12在使开发者能够调试他们部署到生产环境中的优化二进制文件方面取得了重大进展。随着Go编译器在产生更快二进制文件方面变得越来越积极,我们在可调试性方面失去了一些优势。...在Go 1.10中,用户需要完全禁用优化,才能从像Delve这样的交互式工具获得良好的调试体验。但用户不应该为了调试而牺牲性能,尤其是在运行生产服务时。...在1.12和最新的Delve版本中,即使在优化后的二进制文件中,你也应该能够检查许多变量。 改进的值检查 在Go 1.10中,调试优化后的二进制文件时,变量值通常完全不可用。...关于macOS支持的说明 Go 1.11开始压缩调试信息以减小二进制文件的大小。这被Delve原生支持,但LLDB和GDB在macOS上不支持压缩调试信息。...如果你正在使用LLDB或GDB,有两种解决方案:使用-ldflags=-compressdwarf=false构建二进制文件,或使用splitdwarf(go get golang.org/x/tools
vim CocConfig参数设置说明 流程 安装vimspector插件: puremourning/vimspector 添加配置文件: lldb-vscode.json .vimspector.json...: lldb-vscode.json .vimspector.json 1.添加 lldb-vscode.json lldb-vscode.json文件所以在这个路径,如果没有.gadgets.d需要创建一个...,我的 路径: ~/.vim/plugged/vimspector/gadgets/macos/.gadgets.d/lldb-vscode.json 这里说明一个,这个路径是.vim,我用的是nvim..."LLDB_LAUNCH_FLAG_LAUNCH_IN_TTY": "YES" }, "name": "lldb" } } } 2.添加 .vimspector 文件...这个文件添加到子项目下,比如下面是我的项目结构, 添加到 vector_test 这个项目下,偿试在rust-learning上添加,子项无法启动vimspector。
但这样的文件需要Java运行环境,因此恶意的.jar文件不会在默认的macOS安装上执行,因为苹果在十多年前就已停止向Mac提供JRE。这意味着该恶意软件的目标仅限于可选安装Java的环境。...这个代理类似于先前版本的XLoader中所用的代理,为可执行文件提供一个起始值。这确保了二进制文件可以区分它的初始运行和后续运行。...Dropper和有效负载二进制文件都试图阻止调试器附加ptrace的PT_DENY_ATTACH (0x1f)。...【XLoader试图阻止分析人员对恶意软件进行逆向工程】 在执行时,该恶意软件还会执行睡眠命令来延迟行为,希望欺骗自动分析工具。二进制文件被剥离并显示出高熵,试图以类似的方式阻止静态分析。...【XLoader二进制文件显示了高熵】 结语 研究人员总结道,XLoader将继续对macOS用户和企业构成威胁。这个伪装成办公生产力应用程序的最新迭代表明,其目标显然是工作环境中的用户。
动态库.dylib.framework编译链接详解 test.m 链接 AFNetworking test.m -> test.o 1. clang -target x86_64-apple-macos11.1undefined-fobjc-arcundefined-isysroot...链接动态库 1. clang -target x86_64-apple-macos11.1undefined-fobjc-arcundefined-isysroot $SYSROOTundefined-L...test | grep 'DYLIB' -A 5 -> -A 查找时多显示5行 发现根据系统动态库的名字 -> 很像一个路径 -> 我们自定义的动态库的名字孤零零的 -> 动态库路径不对 解决Library...i的参数 添加后可直接运行查看 -> lldb -file test -> r -> q 修改可执行文件的rpath路径 -> install_name_tool -rpath ...用于避免在真机开发过程中直接使用传统的dylib. 对于真机来说, 由于动态库都是在设备上, 在Xcode上使用基于tdb格式的伪framework可以大大减少Xcode的大小.
相反,如果没有行号和源码信息,那么只能进行更低级别的调试了,调试器只能告诉你一些寄存器的值;而当前运行的代码也只是PC寄存器所指向的二进制数据,这些数据要么是虚拟机指令,要么是汇编指令;这就是所谓的无源码调试...上图左边是正在运行的线程的堆栈信息,右边有两个tab,一个用来显示变量的值;一个是lldb交互式调试窗口!...安装Android LLDB工具 要使用lldb进行调试,首先需要在调试设备上运行一个lldb-server,这个lldb-server attach到我们需要调试的进程,然后我们的开发机与这个server...: adb push lldb-server /data/local/tmp/ 在调试设备上运行lldb-server。...shell chmod 777 /data/local/tmp/lldb-server 这样,调试server就在设备上运行起来了,注意要这么做需要设备拥有root权限,不然后面无法attach
领取专属 10元无门槛券
手把手带您无忧上云