|
[分享]《Windows 内核设计思想》看雪论坛独家连载,附PDF下载
os的问题不是软件问题,应该提高到硬件水平层面去看。 |
|
[求助]請問關於C++問題
_mm_shuffle_epi8是phaddw的c++接口,不用管原理,直接给参数用就行,但模拟器肯定不行,因为指令集不支持,编译后还是phaddw的编码,模拟器需要自己写出,每个opcode的伪实现型式。需要用opcode方式实现,汇编不行。最后还要转为c++接口形式,不转也没事,直接调用,写好call和ret就可以了 |
|
[讨论]找到一张x86架构寄存器的图,求助下
rip代表了ip eip 宽度顺延使用,意思是兼容了,好像手册的垃圾映射表也是这样表述的,把有64寄存器操作指令全用上rxx,只有32的用eXX表示, st系列用于 8088浮点运算 xmm,ymm系列用于 x64扩展浮点运算。 另外吐槽一下xmm在x86,模式下的avx集里,一样可以使用,不得不说大avx可以一统江湖了。连微软都不知道ymm应该如何在x86下如何正确运行,都快成了神作文了,哈哈。 |
|
[求助]請問關於C++問題
还是图清楚些,明白了,我纳闷000000000001dd36是啥玩意呢,呵呵,原来是地址,你先别考虑64位的问题,先把x86搞清楚些,dword ptr 是代表4byte,32位宽。很开心碰上你啊,现在喜欢研究代码本质的人,很少了。有啥不清楚的,你就在这贴里问好了,我一定知无不言,言无不尽。另外你没必要纠结cpu支持代码集的问题,模拟opcode这个思路基本没用,除非跨平台,像前面有个兄弟说的把 arm放x86运行,需要模拟,单纯的为了支持老cpu没必要,换一块好点cpu就行了。 再另外,如果你理解不了x86全部的技术细节,马上看x64就像物理学,刚学会三定律,要理解多维度宇宙一样难。 再另外,x86=二维空间,sse系列=三维空间,x64=四维空间,avx=n维空间 再另外,66 0F 38 01 05 01 02 03 04没有rex prefix所以这条序列是一个32位序列,它没有进入x64扩展 再另外,xmmword=128,ymmword=256 其他理解全正确。 |
|
[求助]請問關於C++問題
address = (uint64_t)ModRM[consumed]; 这种语法肯定是64位的取值,但正确与否要看你的地址空间,是32位,还是64位,如果是32这种表述无关紧要,多了几个零而已,如果64位,要向后再取四个byte的数值。 另外你说的cpu指令集不支持问题,大部份是cpu型号问题,跟操作系统关系不大,你取下cpuid去查查看是否支持指令集。 另外如果你要模拟运行,要写出模拟的结果就可以了,我的意思是,干什么跟一个这么老旧的cpu过不去,搞个新cpu不就问题解决了。 再另外x64的解码与x86又不一样的,他有一个rex prefix段,具体的看手册。 再另外000000000001dd36 pmulhrsw xmm4, xmmword [ds:0x23270]这个编码,我没看懂。能讲一下是怎么编码的吗? |
|
[求助]請問關於C++問題
//0 1 2 3 4 5 6 7 8 //66 0F 38 01 05 01 02 03 04 //phaddw xmm0, xmmword ptr [cs:04030201h] 66 = 宽度调整 0f 38 = 三字节前缀 01 = Opcode 05 = mod=00,rm=05=displace32 01 02 03 04 = displace = 因尾端调整 = [04030201h] 还是那句话,强烈建议看intel手册或amd手册,另外开源反编译引挚,最多解到sse1就算不错了,而且错误非常多,想做个像od那样的反汇引挚,只有照着手册来 另外这里不存在offset的问题,因为是直接地址寻址。无偏移量。 |
|
[求助]請問關於C++問題
肯定卡,opcode本身执行,和模拟执行相差的性能,成百倍级的增加。这种东西只能用来调试,不能做为最终方案,再说现在随便一个i5 i7都可以执行sse4,amd最新的也可以执行到sse5了 |
|
[求助]請問關於C++問題
小看了下程序结构,因为sse3集本身指令非常非常少。这样做还可以,具体是哪个opcode出的问题,还要提供下线索,另外如果真完全模拟所有指令执行,这样swicth case肯定不行,要走image路线。 |
|
[求助]請問關於C++問題
要真发布这种东西,会影响很多小伙伴正常工作的,这种问题有时间私下聊吧。 |
|
[求助]請問關於C++問題
楼主这是要搞编译器的节奏啊,如果要搞编译器,小弟愿意尽绵薄之力,一直想搞个咱们国内原创的编译引挚。苦于没团队做噢。 |
|
[求助]請教關於SSSE3 指令集操作碼問題
0x00 - 0x3f 是 mod 00 0x40 - 0x7f 是 mod 01 0x80 - 0xbf 是 mod 10 0xc0 - 0xff 是 mod 11 这块理解没问题,操作度宽和寻址没关系,寻址就是四种,永远是四种。 128位的问题,你还要理解x86和vax是怎么转换的,x86下,128位,只能用到xmm7,只有到vax才能用xmm8以上。强烈建议你仔细看手册,哪怕英文有困难也要耐心。翻译的东西基本上都会有一些错误。而且这些错误,是intel天然bug的,连作者自己也不知道。 另外说实话,那个表还是挺清晰。咋会复杂呢? 另外sse3是个指令集,不能单独看,必须要结合x86看,x86就像打怪的第一层sse3大概在第四层 |
|
[讨论]做一个本地存储用户常用密码的软件需要注意什么
我猜这东西的关键,是非对称算法上吧,其他东西都是透明的,随便破破就可以了,关键是生成私key时的算法,要保证唯一性。个人见解,数学学的很渣,很多东西理解的不是很好。 |
|
[求助]請教關於SSSE3 指令集操作碼問題
0F 38 是三字节前缀,也叫逃逸码。00 才是Opcode, 那个modrm 分成三部份 mod部份占两bit正好最大模式就是4,再具体的,你看下intel手册的modr/m那个表。 再补充一点,别迷信什么专业名词,这个东西以intel的手册为准就可以了,x86本身就是intel的产物,叫法上,国内翻译过来的汇编语言应该说都是作者自己体会的,对错暂放一边,就理解来讲,纯英文的东西还是比较正统的。 再回答一个问题 01不是modrm 40是modrm 01是displace 建议楼主仔细看完手册,这些问题迎刃而解。 |
|
[求助].net程序怎么防反编译?
.net整体上都是要走runtime的,内部脚本跟flash没区别,所以.net出来的程序本质上没有走编译这一过程,所以现在用.net的人越来越少,连微软内部都不愿意使用这技术。 |
|
关于汇编指令ret
retf是x86的恶梦。估计没几个人知道如何醒来。 |
|
[求助]有偿-写个登陆器+网关(网关带端口转发和MD5验证)
这种东西最好C开发,搞vb纯找麻烦,C做个dll调用就行了 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值