有时需要获取代码执行到某刻时的某个寄存器的值,在GCC中可以这么
做
REG UINT32 reg_value asm("$31");
然后直接访问变量reg_value就可以得到此时的寄存器$31的值了,恩,
这个是MIPS的寄存器,所以这么大
有时需要获取代码执行到某刻时的某个寄存器的值,在GCC中可以这么
做
REG UINT32 reg_value asm("$31");
然后直接访问变量reg_value就可以得到此时的寄存器$31的值了,恩,
这个是MIPS的寄存器,所以这么大
之前提供了一个在BREW等Arm和X86上的模拟多线程,核心部分是用汇编写的,里面的关键是栈的切换。今天偶尔清闲一下,突然想能不能不用汇编来实现,有些人一听汇编就头大了。于是就用了一下午来研究下如何操作。代码并不多,只是因为我在linux下写的,只能使用gdb来调试,而我对gdb非常不熟悉,所以弄起来非常的慢,大部分的时间都是靠仔细的分析代码来找错误的原因和地方的,浪费了不少精力,期间还在白纸上来描述流程,写部分实现,分析。就这些年的集中精力来说,可以说也花费了不少脑细胞了。
闲话不说了,苦也受过了,先看代码:
若干年前,好玩教老婆(那个时候还是女朋友)写程序,下面就是她写的几个程序,贴出来,好玩一些。dos汇编的。
继续阅读老婆若干年前写的程序
若干年之前,曾经年少轻狂,不知天高地厚,研究了一段解密。大话西游2有段时间使用acp什么的加壳(现在情况怎样,早就忘记了),用程序脱壳之后,最有很多代码没能修复。幸好有Ollydbg,也幸好Ollydbg有一大堆辅助的插件。但总是手工修复实在不是人做的事情,于是,就找到了OllyMachine。更大的幸运是OllyMachine是开源的,于是就对它做了些修补,增加了些功能,可以自动将修复好的代码按照一定格式dump出来,这样可以更好的进一步处理。废话就不说了。先是README.txt。
继续阅读Ollydbg脱壳dump代码工具
整理资源时发现的,大约3年多前,正好有段时间比较空,于是用asm调用d3d,实现了directx9.x的sdk附带的几个例子,使用masm32编译。
第一个例子,空项目。
源代码:
EmptyProject.Asm:
继续阅读asm 调用 d3d例子(一)