|
|
|
|
|
|
|
|
|
[讨论]电脑中毒了,谁来分析一下源码
用一些网络相关的监控软件不就好了。。。 |
|
[求助]MASM的静态数组如何定义?
感谢两位热心帮助 |
|
[求助]MASM的静态数组如何定义?
unsigned long pCode[256]= { xxxxxxxx, xxxxxxxx, } "xxxxxxxx"是任意常量,256个元素都不重复的。我希望写成这种格式,方便为每一个常量写注释。 |
|
[原创]查找隐藏驱动
支持猥琐 |
|
[原创]反字符参考全接触
我的是VC6(SP6) |
|
[翻译]逆向编译技术
貌似曾经看过,。NET使用的中间语言是非冯。诺依曼体系的,数据和代码是严格分开的,也不能自修改。 另外。NET要提高速率,使用的中间语言,必然是经过优化,使之容易转换成各种平台下的NATIVE CODE。 个人认为,这便是Reflector 可以做得好的地方。 要不那公司,为什么不做X86的反汇编器? |
|
[原创]ring 3级32位x86 cpu仿真
首先是解释modr\m byte,如果是不带寄存器的寻址,直接改地址就好了 如果是带寄存器寻址的,可以在代码运行缓冲区中改写这条指令。举一个简单的例子吧 假设有以下代码 mov eax,00400000 xor ecx,ecx mov edx,dword ptr [eax+4*ecx] 前两条指令不带modr\m byte的,在计算完指令长度之后,可以将一条完整的指令复制到代码执行缓冲区中。第三条指令,由于寻址是不确定的。因此在代码执行缓冲区中写入一条jmp到自己虚拟机里的。也就是缓冲区被写成下面的样子: mov eax,00400000 xor ecx,ecx jmp VM_reAddr_proc 然后按照实际情况的eax和ecx便可以知道确切的值了。计算实际加载地址与默认地址的差值,然后加上去不就好了。如果你担心程序自己申请内存,并对跟内存寻址的情况。那么你在模拟分配内存函数的时候,将申请地址的返回值,也加上那个差值。便可以用统一的算法解决所有寻址问题了。计算出程序原本需要访问地址,生成 mov reg32,dword ptr [xxxxxxxx] 注意环境保护,你可以用真实CPU的寄存器。切换堆栈也就mov esp,dword ptr [xxxxxxx]。 在最初构思的时候,我是想如何提高虚拟机速率的。不过最近发现,编译器使用了大量带modr\m byte的代码。这样的方法不见得能提高多少性能。当然了,这跟我的方向不同,没深入想过 |
|
|
|
椭圆曲线加解密算法
下载论坛的精华集,有分类的 |
|
|
|
[原创]ring 3级32位x86 cpu仿真
个人建议,在x86平台上仿真x86,没有必要识别所有指令,建立数组,标记带modr\m byte和string类型的opcode。重定向寻址指令就行了 牛人写代码就是快,我构思VM比你早,但是你的框架写出来了,我还在想实现思路 不过我的是用在加密上的,而不是解密 |
|
[求助]VC++最快速度方式编译的ASM代码规律
翻译版antiantidump那篇文章,操作系统是WIN 2K以上的,就是以RET和后面的NOP作为函数尾的特征HOOK返回值的 INT3我在DEBUG模式和最小大小的模式见过 我希望通过特征,直接定位整函数的头和尾而不使用指令长度计算 可是在函数尾部插入的ASM在POP EBP和RET的前面。。。另外一个麻烦的地方便是那些不可能到达的代码在RELEASE编译模式中会被去掉。。。例如在RETURN后面插入ASM 看来加密单个函数最好的方法还是鸡蛋壳上次转载那篇,添加一个CODE段放被加密函数 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值