YLCao's Blog∎
apktool安装:Apktool
反编译apk:
1 | apktool d /.../...apk |
会在apk文件夹下生成包含如下若干文件的项目文件夹:
打包:
1 | apktool b ../../dir |
21.1.16更新,感谢这位大佬提供的安装包,不用麻烦地安装了:
https://www.cnblogs.com/andy0816/p/15448681.html
链接: https://pan.baidu.com/s/1v3RcCCMlRCT9a01AWk-exA 提取码: r32v
如果mac 10.15上ida64.app无法打开,终端执行下面命令
sudo xattr -rd com.apple.quarantine /Applications/IDA\ Pro\ 7.0/ida64.app
10.15及以后版本苹果取消了MacOS对32程序运行的支持,而IDA Pro for Mac的最后一个Crack版是7.0。虽然7.0的程序本体是64位的,但是当安装软件时,安装程序会调用osx-install程序进行安装,但它是一个32位程序,所以在10.5及以后版本无法正常安装这个版本。接下来详细描述一下安装过程。
题目本身是个自解压程序,解压出来后需要安装 .NET 框架。exeinfo 查出也是 C# 程序:
运行一下,有个decode按钮,点一下出现一串加密字符,猜测内部对flag进行加密操作:
直接拖进dnSpy,顺着main函数找到关键点:
首先使用Homebrew安装nasm
1 | brew install nasm |
随后创建 hello.asm 文件,写入如下指令:
1 | SECTION .data |
这里使用到了 id 为 4 的 syscall 系统调用。
我们前往/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk 1/usr/include/sys/这个目录,找到一个叫syscall.h的文件。这个文件的格式如下:
1 |
|
首先我们查看一下信息,32位程序,无壳:
然后用IDA打开,提示// positive sp value has been detected, the output may be wrong!
出现了栈不平衡的问题,导致ida无法生成伪代码。那为什么会出现这种情况呢?
一般是程序代码有一些干扰代码,让IDA的反汇编分析出现错误。比如用push + n条指令 + retn来实际跳转,而IDA会以为retn是函数要结束,结果它分析后发现调用栈不平衡,因此就提示sp analysis failed.
还有一些比如编译器优化,因为ida是用retn指令来识别函数结束的,如果函数不是以这种方式结束,IDA就会分析为栈不平衡。也就是IDA找不到函数结束的位置。
例如以下代码:
东华杯遇到一题安卓逆向,测试机怎么也安装不了。总结一下我遇到的坑。
ADB安装
首先你要下载AndroidSDK,推荐直接用Android Studio自带的,安装过程中会让你选择SDK的安装路径(不要有中文!)
然后AndroidSDK\platform-tools下就有adb,将这个路径放入环境变量就行了。
ADB使用
首先你要打开手机的开发者模式,然后打开USB调试,再连接电脑。输入以下命令查看设备:
1 | adb devices |
加载shellcode免杀这一问题是渗透过程中不可缺少的部分,以此使得我们的目标机器能够成功上线。此篇博客记录我免杀入门的简单尝试。
CS生成默认shellcode
生成64位shellcode
shellcode加密
Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。
Docker 利用Linux核心中的资源分离机制,例如cgroups,以及Linux核心名字空间(namespaces),来创建独立的容器(containers)。这可以在单一Linux实体下运作,避免启动一个虚拟机造成的额外负担。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括行程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、存储器、block I/O与网络。
Docker的三个重要概念:Dockerfile,image,container
image:镜像,可以看成是一个快照,通过一个镜像,可以创建许多不同的container容器。类似于类和对象。
container:容器,它就像一台台虚拟机,可以由相同或不同的镜像创建运行,相互之间不受影响。