miasm学习【1】--分析并去除smc
由于大神推荐加上无聊,准备开坑学习一下miasm。网上相关资料并不算很多,而且很多脚本和api都是python2的,我用的python3没法直接跑那些脚本,有点难绷,所以开个博客记录一下各种问题,顺便留个档。miasm版本windows是0.1.5,Ubuntu是0.1.3.操作系统环境是windows和Ubuntu,ide是pycharm和vscode+remote。
初探由于是初学,翻了一下官方的网站找到一个博客
https://miasm.re/blog/2016/01/27/re150.html
跟着学一学
首先用ida打开示例的程序
发现其start处的汇编代码是一个非常明显的smc。我们这里用miasm进行分析,不直接调试了。
注意,因为需要用到jit,而windows似乎用不了,所以此处转Ubuntu。
1234567891011121314import osfrom miasm.analysis.sandbox import Sandbox_Linux_x86_64# Insert here user defined methods# Parse arguments ...
Ubuntu git无法push的解决办法
因为想把linux的实验传到github上但是git push一直失败遂进行了一波尝试,最终成功push。
最开始报错如下
在网上查询了一波发现似乎是apt库上的git的ssl库不行,说是要换一个库,比较麻烦
最后采用的这个方法
先跑第一行
1git config --global url."git@github.com:".insteadOf "https://github.com/"
然后直接在虚拟机里生成ssh密钥
1ssh-keygen -t ed25519 -C "your_email@example.com"
保存一下生成的pub文件里的内容,然后在git的ssh密钥里添加
然后就可以成功push上去了。这里是因为重复push了啥也没改所以报的错,实际上是可以ssh上了
可能方法比较蠢,记录一下
2023年终总结
本来又懒得写了,但是空间和说说一堆师傅都总结了,感觉还是动动脑袋总结一下比较好
由于这是xman的个人总结,所以会带有很多的意识流和前后文不通,希望大家能谅解一下(x
(不得不说,截图自己说说来总结真的很方便)
分几个部分来总结吧
CTF算是主业?所以放第一个说了。真正全力搞ctf止于大三上,大三下之后就只打几个比较重要的比赛了。因为沉浸在找工作的焦虑中,学习实战去了。不过还好大二加大三上狠狠的努力了,所以还是算打下一些基础,之后的ctf比赛也能做出一些题,也就有了下面的几个线下
西湖论剑西湖论剑初赛
决赛
逆向手去线下啥也做不出,但是这次是线下第一次见华师战队,也是23年第一次线下,最后拿了个保底走人
腾讯游戏安全竞赛算是我今年的高光时刻了。详细一些的总结在另一个博客里,简短的说就是拿了第四名和没啥用的腾讯绿色面试通道,原因下面说
当时记得是没抱啥希望去打的,想着实在搞不出就当三天积累逆向经验了。推掉了广东省赛线下决赛,坐在实验室全力冲,终于在第三天下午过完反调试逆完虚拟机前的所有算法。确实是对学习成果的肯定,因为我从大三上开始才因为工作压力开始学安卓,但是安卓的学习资料 ...
binary ninja vscode远程调试bn脚本
折腾一天的binary脚本远程调试,决定记下来以免下次接着犯错
感谢s0rry的博客给的启示!
错误记录python配置成本地的python3.11的版本之后,按照官方文档的流程,首先安装了python311的debugpy,然后打开vscode远程调试并正常配置。但是在binaryninja测运行connect_vscode_debugger(port=5678)后显示time out,且vscode远程调试点击后显示访问refuse
解决方法用bn原生的python,用ctrl + p打开搜索栏并选择install python3 module
输入debugpy进行安装,安装的log在这里看,失败的话自己康康原因,我这里是直接成功的
by the way我的脚本需要keystone,安装keystone的时候报错了,解决办法是直接在已经装好keystone的python311的site-package目录下复制keystone文件夹并复制到bn的python的package目录下。我的目录是C:\Users\{yourname}\AppData\Roaming\Bi ...
unity游戏开发学习笔记
想在毕业前整出一个东方二创游戏,于是开了坑。
视频参考https://www.bilibili.com/video/BV1jK411V7V7?p=4&spm_id_from=pageDriver&vd_source=aca2ef475df4152d76052947baf25a61
c#相关匿名函数 canvasGroup.DOFade(0, fade_time).onComplete = ()=>{
gameObject.SetActive(false);
};
和js差不多,可以用这种方式构造一个匿名函数
unity使用组件physics2D2D游戏的物理效果
RigidBody2D2d刚体,加上后会有重力效果
Box Collider 2D2D的碰撞box,可以设置物体的碰撞体积,用编辑碰撞器来设置体积
RenderingSprite Renderer一般用来放置图像
miscellaneousAnimator动画自动机,会在asset里面创建一个动画文件一个状态机。动画文件可以进行编辑动画,状态机是不同动画 ...
rust学习笔记
因为好奇而学一波rust,随时可能退坑。记录只记对自己重要的部分,查漏补缺用
rustlings和圣经同步学习,包含大量圣经原文原代码,主要是想抄一遍记忆更深刻,rustling遇到后才看圣经
rust圣经学习基础概念入门变量绑定rust核心原则——所有权。任何内存对象都有主人,绑定就是把这个对象绑定给一个变量,让这个变量成为他的主人。同时该变量之前的主人回丧失对该对象的所有权。
变量可变性默认情况rust变量不可变,不过加上mut关键字可以让其变成可变的。
下划线开头忽略未使用变量用下划线开头的变量,如果后面没有被使用不会被警告。不用下划线开头会被警告
变量和常量的差异
常量不用mut,且自始自终不可变,编译完成后值已经确定
用const关键字而不是let声明,且值的类型必须标注
1const MAX_POINTS: u32 = 100_000;
变量遮蔽rust允许声明相同变量名,后面声明的变量会遮蔽之前的
和mut不一样,如果let声明的变量名字相同,他们只是恰巧名字相同,实际上指向的是不同的内存地址,涉及到内存的再分配。而mut关键字指定的变量赋值是访问的同一个内存地址 ...
南京大学jyy os学习笔记
和软件分析课一起学,都是每天俩小时,突发奇想记录一下做实验的日常
实验pstree10.5思考了如何保证输出的格式像标准的pstree一样。如下
123456789101112131415161718systemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager───2*[{NetworkManager}] ├─VGAuthService ├─accounts-daemon───2*[{accounts-daemon}] ├─acpid ├─avahi-daemon───avahi-daemon ├─bluetoothd ├─colord───2*[{colord}] ├─cpptools-srv───23*[{cpptools-srv}] ├─cron ├─cups-browsed───2* ...
南京大学软件分析-听课笔记
纯粹做学习记录,如有错误非常欢迎指出(
课程笔记lesson2invokespecial: call constructor, call superclass methods, call private methods
invokevirtual: instance methods call(virtual dispatch)
invokeinterface: cannot optimization, checking interface implementation
invokestatic: call static methods
method signature: class name: return type method name(para1,para2)
clinit初始化类的静态属性
类加载和初始化是两个操作,加载了不一定初始化。
123class A{ B b = ...}
上方的情况,b直接会被加载到内存,即使什么也没干,也没有进行new之类的操作。加载后就会初始化调用clinit的方法。而init是new的时候会调用。
lesson3Reac ...
Sofixer源码分析
学习一下内存dump文件后修复的原理。意识流分析,可能有些乱,敬请谅解(
函数分析先单独分析函数
ObElfReader::Load加载so文件的各类结构,以下是用到的函数
ObElfReader::FixDumpSoPhdr修正dump出来so的程序头表,这里是改变filesz扩大了之后dump的范围,不仅dump了LOAD部分的内存还dump了中间非LOAD段的内存。因为可能有些数据会留存在俩LOAD段之间
123456789101112131415161718192021222324252627282930313233343536373839void ObElfReader::FixDumpSoPhdr() { if (dump_so_base_ != 0) { std::vector<Elf_Phdr*> loaded_phdrs; //遍历program header table,将字段是LOAD的全部保存起来 for (auto i = 0; i < phdr_num_; i++) ...
frida常见使用及脚本收集
启动123456789adb push xxx.apk /sdcard/xxx.apkadb forward tcp:27042 tcp:27042adb forward tcp:27043 tcp:27043adb shellsucd /data/local/tmp./frida-server frida -U -l .\t1.js -f demo2.jni.com.myapplication
调试add 调试参数在xml里面加上
1android:debuggable="true"
调试init_array和JNI_Onload用frida spawn,加pause参数(16版本就–pause,14及以前的版本就不用加)。然后用ida attach后运行,frida命令行输入%resume后点击same就可以调试上,且可以调试init_array和JNI_Onload这些位置的函数
QBDI1setenforce 0
问题大全logcat中文乱码1chcp 65001
kill frida-server12netstat -tunlpkill -9 & ...