avatar
计算机天才
git常用操作
比较全面的网站 https://www.cnblogs.com/miracle77hp/articles/11163532.html 结合实际情形总结: 1.git add *之后想要撤回,有git reset和git rm两种,详情看 https://www.cnblogs.com/sunshine-xin/articles/3521481.html git rm -r --cached . 删除全部本地缓存 --cached表示只是删除git中缓存,不是删除物理文件 取消跟踪某个文件 https://zhuanlan.zhihu.com/p/133414092 2.子模块的问题(添加子模块) 命令git submodule add <子模块git项目地址> <路径> 例子: git submodule add [email protected]:helloobaby/idasdk76.git…
avatar
计算机天才
还原lua符号
首先获得lua的版本。 知道了是lua5.1.4后,考虑如何编译。 先尝试两种方案吧,在linux上利用mingw工具链编译一次dll,在windows利用vs的vc工具链编译一次dll,两个dll都把符号push到lumina服务器上,然后到时候再把符号拉下来看看效果(因为不同工具链编译出来的机器码不同,只能多试) 一开始我是在linux上编译的windows的dll,发现最后符号识别的很不行。大概只能识别到图中的这几个…
avatar
计算机天才
lua与C++交互
C++调用lua luaL_loadfile luaL_loadbuffer 看引用应该是luaL_loadbuffer。 lua调用C++ 我改了mainfunctions.lua中的OnServerPauseDirty函数,确实会反应到dbgview中。 说明print是会调用OutputDebugPrint的。print_loggers这个table没有办法打印出来。 上2张图说明print_logger里有个函数专门负责OutputDebugPrint的。但是在ida这种没有找到lua注册函数相关的信息,奇怪。 参考: https://zilongshanren.com/post/lua-call-cpp-functions/ https://zilongshanren.com/post/call-lua-table-from-cpp/
avatar
计算机天才
hook luaL_loadbuffer日志
C++调用lua函数日志
avatar
计算机天才
开源x64程序混淆器Alcatraz
项目地址 https://github.com/weak1337/Alcatraz 拿了一个驱动程序试了一下,效果还不错 混淆前 混淆后 就是不知道好不好anti了 源码分析 项目代码不多,大概一两千行吧。 通过pdb解析到exe中所有的函数,然后存在std::vector内。 auto functions = pdb.parse_functions(); 利用zydis解析每个函数的每条指令 obfuscator obf(&pe); obf.create_functions(functions); remove_jumptables函数相关 不懂为什么要在混淆函数列表中删除这种函数。 bool obfuscator::analyze_functions() mov混淆 lea混淆 都是…
avatar
计算机天才
固定游戏基址
x64程序地址都是高地址并且默认随机的,要把它固定在0x140000000,方便调试。 steam和游戏本身应该是没校验的,这部分工作是反作弊来做的。
avatar
计算机天才
win32 APC注入例子
https://www.cnblogs.com/PeterZ1997/p/10584557.html
avatar
计算机天才
fake父进程
因为steam的游戏他父进程必须是steam,但是x64dbg启动调试,父进程必须要为x64dbg,下面代码对x64dbg本身做了patch之后,x64dbg就没办法正常调试,此方法宣告失败。 #include "plugin.h" #include <MinHook.h> #include <windows.h> #include <TlHelp32.h> #include <cstdio> inline void OutputDebug(const WCHAR* strOutputString, ...) { WCHAR strBuffer[4096] = { 0 }; va_list vlArgs; va_start(vlArgs, strOutputString); //in stdio.h _vsnwprintf_s(strBuffer, ARRAYSIZE(strBuffer) - 1, ARRAYSIZE(strBuffer) - 1, strOutputString, vlArgs); va_end(vlArgs); OutputDebugString(strBuffer); } BOOL GetProcessIdByName…
avatar
Muspi Merol
谈谈数据驱动的UI框架
import framework # 前端框架 renderer = framework.compile(template) # 模板,即UI的描述 UI = renderer.render(state) # UI仅仅是数据的状态函数 抽象来看,这就是数据驱动的前端框架做的全部事情 内容、逻辑、样式 根据我自己的理论,一个文档可以分为三部分: 内容 —— 将数据按一定格式呈现。比如一个markdown文档。这决定了它基本上得是线性的结构 逻辑 —— 描述内容中元素间非线性的关系。比如预录制的ppt动作 样式 —— 内容呈现的外观等形式。比如markdown的主题…
avatar
计算机天才
windows wldp机制
wldp机制由wldp.dll实现。像有一些系统进程比如svchost.exe、explorer.exe可能会加载这个dll来做一些安全策略。 导出表 NtSetSystemInformation NtQuerySystemInformation 功能号C7 看了点资料后,发现这机制是专门为C#准备的。以后有遇到的时候再继续研究。 //逆向wldp的文章 https://www.buaq.net/go-55907.html //功能号查询 https://www.geoffchappell.com/studies/windows/km/ntoskrnl/inc/api/ntexapi/system_information_class.htm https://learn.microsoft.com/en-us/windows/win32/api/wldp/nf-wldp-wldpsetdynamiccodetrust //C#将代码编译成…
avatar
计算机天才
多种交互式反汇编逆向工具的比较
cutter ida pro ghidra binaryninja CreateFrameInfo函数都是用flirt技术识别出来的,但是ida的库明显更牛逼,f5效果也更好。而且cutter的反汇编相当的慢,很容易未响应,唯一的优点就是开源。 binaryninja的f5我觉得还可以,有时候能比ida要好分析点,大多数时候还是不如ida(我用的是个人版binaryninja)。binaryninja的插件支持不错,文档也可以,近期还增加了rust的支持,github上还可以向开发者提issue。binaryninja可以当作轻量级ida使用。 至于ghidra,用…
avatar
计算机天才
机器学习之恶意样本分类项目
如题,在github上发现个项目Malware-Prediction 此项目用7种常见的机器学习算法训练,并且比较模型正确率选择最正确的模型。 模型特征的提取在check.py中的extract_infos函数内。 templates文件夹内自带前后端,可以cv一下。 这个训练后的模型我也试了一下,拉跨,说明他这个提取特征的方式太简单了,不准确。
avatar
计算机天才
python提取System32路径下的文件的文件描述
import os import filetype import pefile import pprint def is_pe_file(filename): if os.path.isfile(filename): kind = filetype.guess(filename) if kind == None: return False if kind.extension == 'exe': return True else: return False string_version_info = {} def main(): fd = os.open('log.txt', os.O_RDWR | os.O_CREAT) path='C:\\Windows\\System32\\' files = os.listdir(path) for filename in files: if is_pe_file(path+filename): # 提取详细信息->文件说明 pe = pefile.PE(path+filename) try: for fileinfo in pe.FileInfo[0]: if fileinfo.Key.decode() == 'StringFileInfo': for…
avatar
计算机天才
在linux上使用windows下的signtool.exe
结论:不太行 使用wine来搞的,各种问题。 我已知的还有2个方法,.net的Momo和java的jsign,后面有需要再研究 光改本地时间也不行(或绕过signtool的时间判断)
avatar
计算机天才
开发项目常用三方库(third party library)记录
C++开发 argparse aqtinstall pe-parse skCrypter masm_shc utfcpp NumCpp magic_enum Sig memscan blackbone peparser libpeconv SymCrypt rizin Kernel-Bridge minhook PolyHook awesome-jit IDA插件 ida-hex-highlight OpenWithIDA keypatch sigmakerex python开发 pefile llvmlite .net AsmResolver rust开发 x64dbg插件 ScyllaHide TitanHide stringsx64dbg 逆向分析相关 faare-floss obfuscation_detection Detect-It-Easy lazy_importer 恶意样本反检测技术 pafish al-khaser antianalysis_demos Visual Studio Plugin AsmDude pycharm 插件 Reloadium Visual Studio Keymap Chrome插件 Hypothesis itab 补充项目 https://github.com/fffaraz/awesome-cpp https://github.com/onethawt/idaplugins-list
avatar
计算机天才
std::list迭代器不支持随机访问,但是...
int main() { list<int> lst{1, 2, 3, 4}; auto it1 = lst.begin(); // it1 = it1 + 2; //error std::advance(it1, 2); cout << *it1 << endl; return 0; }
avatar
计算机天才
在ubuntu上快速配置Clash脚本
忍无可忍 # -*- coding: UTF-8 -*- import os import wget import gzip import argparse def un_gz(file_name): """ungz zip file""" f_name = file_name.replace(".gz", "") g_file = gzip.GzipFile(file_name) open(f_name, "wb+").write(g_file.read()) g_file.close() def config(subscribe_url): os.system('wget -O config.yaml '+subscribe_url+' -U Chrome') os.system('./clash-linux-amd64-v1.13.0 -d .') # linux必须是x86架构的(不能是ARM) clash_package_url = 'https://github.com/Dreamacro/clash/releases/download/v1.13.0/clash-linux-amd64-v1.13.0.gz' the_location…
avatar
计算机天才
C++20 concept VS rust trait
这两个差不多,都是对一个对象约束行为,当然也有人持不同意见,如下链接 https://mcla.ug/blog/cpp20-concepts-are-not-like-rust-traits.html 上面链接的作者C++写的代码是没问题的,但是rust有问题,那个报错并不能验证他的观点。 template<typename T> concept Stringable = requires(T a) { { a.stringify() } ->std::convertible_to<std::string>; }; class Cat { public: // 满足Stringable约束 std::string stringify() { return "meow"; } void pet() { } }; template<Stringable T> void f(T a) { a.pet(); } int…
avatar
计算机天才
IDA lumina服务器配置
目前private lumina服务器基本是用框架lumen在linux下搭的,目前的lumina只能充当古老的FLIRT技术的替代(没有bindff的各种相似匹配的技术)。 使用的话,修改ida.cfg文件。 以前下面是我自己搭建的,现在不搞了。 LUMINA_HOST = "www.wudiaoteman.cn"; LUMINA_PORT = 1234 LUMINA_MIN_FUNC_SIZE = 32 LUMINA_TLS = NO lumen这个项目作者也提供了一个已经搭建好的服务器。 https://abda.nl/lumen/ 按照教程简单配置一下就可以用了。一定要开启TLS…
avatar
计算机天才
ubuntu20.04下安装llvm开发环境
CloudStudio下的机子,白嫖的。 ➜ /proc cat /proc/version Linux version 5.4.119-19-0009.1 (root@VM_197_173_centos) (gcc version 8.4.1 20200928 (Red Hat 8.4.1-1) (GCC)) #1 SMP Sun Jan 23 23:20:30 CST 2022 ➜ RemoteWorking cat /etc/issue Ubuntu 20.04.5 LTS \n \l 旗舰版大概编译2个小时不到(注意build的时候Type要选Release) 刚编译完大概磁盘文件10g不到 参考链接: https://blog.csdn.net/qq_39420306/article/details/123159082 https://llvm.org/docs/GettingStarted…