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上了
可能方法比较蠢,记录一下
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常见使用及脚本收集
启动bat脚本12345678910111213echo starting all windows:: start hs16011start cmd /c "adb shell su -c ^"/data/local/tmp/hs16011 -l 0.0.0.0:1234 &^"":: start android_server64start cmd /c "adb shell su -c '/data/local/tmp/as64 -p 7890 &'":: start port forwardstart cmd /c "adb forward tcp:7890 tcp:7890"start cmd /c "adb forward tcp:1234 tcp:1234"echo all windows started
随后加上下方代码即可
1frida -U -l .\t1.js -f demo2.jni.com.myapplication
调试ad ...
2023腾讯游戏安全比赛总结
结果决赛最终是拿到了安卓方向第四名。获得了1500q币和腾讯的面试绿色通道
过程获奖是用电话通知的,当天刚好公司给团建费,leader带我们去吃饭。全程也没咋看手机一直在聊天吃饭,手机因为习惯也开着是静音,吃完准备走人的时候看了一眼手机才发现,20分钟前有个腾讯的未接来电。当时就有种预感了,问了一下赛事负责人,那边重新又打了一遍电话,我才意识到,卧槽,真拿奖了。告知了名次是第四,问了实习意向。不记得当时啥感觉了,和做梦一样。
讲实话,我做的时候完全不觉得自己会拿奖。首先是去年前三都在,还见到好几个打ctf的时候见到过的很厉害的师傅。学安卓还不到一年,这架势直接给看傻了。决赛拿到题的时候发现和初赛是一个模板,以为又是虚拟机分析,用frida尝试hook后发现有反调试需要绕过,心直接凉了半截——初赛的反调试我都没完全绕过,决赛的咋整。
想着不管会不会都做三天,实在没结果之后面试也有东西说。于是真的就在电脑前坐了三天逆了三天,啥别的没干。本身是要去参加广东省省赛,我也直接拒掉了,这里还是有点对不起二队的大哥们,因为决赛分刚好和前一名差5分,前进一名就是一等奖,如果我在的话应该是有可能一等 ...