Powershell 官方例子
[TOC]
powershell 官方例子说明 全部例子来源自示例脚本
使用对象查看对象结构 (Get-Member)
Get-Process | Get-Member | Out-Host -Paging
获取进程列表,再获取他们各自的成员信息,最后按页输出
Get-Process | Get-Member -MemberType Properties
MemberType 的允许值有 AliasProperty、CodeProperty、Property、NoteProperty、ScriptProperty、Properties、PropertySet、Method、CodeMethod、ScriptMethod、Methods、ParameterizedProperty、MemberSet 以及 All。
选择对象部件 (Select-Object)
Get-CimInstance -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace
利用WMI win32-logicaldi
2020-03-02
Shell
Shellcode基础
[TOC]
shellcode 基础参考微软官方文档
几个特性:
.NET Core可跨平台,powershell6可在Mac Linux平台使用,大气
Win10自带组建,功能强大
了解Powershell
输出基于对象
PowerShell cmdlet 旨在处理对象
在大多数情况下,可以使用标准 PowerShell 对象语法直接访问数据的各部分
命令系列是可扩展的
可以自己实现函数
支持批处理文件的脚本
PowerShell 处理控制台输入和显示
在cmdlet 后使用 -?可显示关于此命令的帮助
PowerShell 使用某些 C# 语法
了解powershell的名称 1. Cmdlet 使用谓词-名词的名称来减少命令记忆
- [PowerShell 批准的谓词]( https://docs.microsoft.com/zh-cn/powershell/scripting/developer/cmdlet/approved-verbs-for-windows-powershell-commands?view=powershell-7 )
2. Cm
2020-03-02
Shell
Inter 汇编基础
https://bbs.pediy.com/thread-77508.htmhttps://blog.csdn.net/Apollon_krj/article/details/77524601x86指令集设计上就只允许是寄存器和寄存器或寄存器和内存间移动
x86 profix:26:在指令序列里是:prefix部分,作用是调整内存操作数的段选择子66:在指令序列里是:prefix 部分,作用是调整操作数的缺省大小2E: CS3E: DS26: ES64: FS65: GS36: SSF0: locl指令F2: repneF3: rep repz
2020-02-14
汇编
Android逆向第一个CrakeMe
自己写的第一个Android CrakeMe 也是为了练手
随意输入参数为错误,始入正确flag能打印Success
配合使用上一篇的流程破解
解包使用apktool解包
拿到了Smali文件
反编译这里使用jadx发编译
知道了成功会打印Success,直接搜索关键字就好了
双击进去后就可以看到关键的代码,可以使用引用查看函数调用情况
这里看到的JAVA代码是Smali反编译得到的,所以中文都是使用的Unicode表示,这也表示以后搜索代码中的关键字需要转化为Unicode字符集去搜索
很简单的逻辑就是改跳转,把 ==改为!=这类的相反的比较
我们不能直接修改JAVA代码,要修改JVM虚拟机读的Smali语句
这和你要破解windows程序,不能在IDA中直接改F5出来伪代码,要修改汇编一个道理
我们要修改的代码位置如下
找到相应的文件,使用编辑器打开,直接修改Smali语句就好了
这里将if-eqz修改为if-nez
然后保存退出
回编译APK这里需要将修改后的文件重新编译为APK,才能安装
使用命令
apktool b [Folder_Paht]
成功后会在Fold
2019-12-14
Android逆向
Android逆向原理 一
一套流程概述使用jadx反编译后找到修改的文件,通过apktool反编apk文件后,在文件中找到对应的smail文件,修改后使用apktool回编,然后再用jarsigner 签名生成的apk
开始apk本身可以使用压缩软件打开,打开后的目录
这样打开的文件结构肯定是查看不完整的,很多二进制文件也不能解析
反编译APKapktool:逆向apk工具集
jadx:用于从Android Dex和Apk文件生成Java源代码的命令行和GUI工具
AndroidKiller:和jadx一样,还可以直接修改smail语句后回编APK以及添加签名
使用apk反编译工具apktool,这里不推荐用AndroidKiller了
虽然他的反编很方便,但是连我的Android studio的Hello world程序都反编译不了,表示劝退好吧,而且也存在很多Bug
这里不得不安利一个超级好用的软件jadx,具体优点如下,使用方法也比较简单,去混淆的设置是真的好
jadx介绍
第一步jadx反编译我用jadx的目的是找到需要修改的具体文本,以及修改思路
修改后的值apktool 反编出smali使用命令
2019-12-14
Android逆向
简单PE加载器
思路来源写Sality感染型病毒专杀时指令被严重混淆,通过加载PE 修改内存 跑一下解密算法效率是最高的。
很多病毒在运行的时候都会加载另一个主映像文件去执行,而不是创建进程,就很有意思
下面就是如何加载一个PE,再展开,最后修复执行的过程
该函数主要是为了将文件映射到内存中,保证源程序安全
返回值是未展开文件在内存中的位置
LPBYTE LoadFileToMem(LPCSTR lpFilePath)
{
//////////////////////////////////////////////////////////////////////////
////将源文件读到内存中 ///
//////////////////////////////////////////////////////////////////////////
DWORD FileSize = 0;
LPBYTE Buff = NULL;
HANDLE hFil
2019-12-07
逆向
恶意线程清理
这篇博客的背景是:如果很多进程都恶意程序通过远进程注入了线程,那么应该怎么清除呢?
下面给出两种方法
PLAN A来自 加号
通过遍历线程后,根据获取到的线程信息,对线程地址和入口代码进行检查,这种方式适合对注入代码偏移位置固定或则入口代码固定,能准确查杀,推荐使用
void Killing::KillMalRemoteThread()
{
(FARPROC&)ZwQueryInformationThread = GetProcAddress(m_hNtdll, "ZwQueryInformationThread");
HANDLE hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
THREADENTRY32 te32;
te32.dwSize = sizeof(THREADENTRY32);
Thread32First(hThreadSnap, &te32);
HANDLE hThread;
do {
2019-11-07
逆向