|
|
|
[求助]MOVSX/MOVZX对就的C语言代码应该是什么啊?
你只要读懂程序的行为,或者说功能。 汇编语言与C语言的语言构件不同,并不是一定能转成完全等价的C语言的代码的。 对于以上代码,可以这样理解: movsx ====> dw = (DWORD) ( (signed char) (bt) ) movzx ====> dw = (DWORD) ( (unsigned char) (bt) ) movzx是把高位全部用0填充,而movsx是把原来数的最高位扩展成超出的位。 对于bt=101,也就是0x65,八位二进制是“01100101”,因为它的最高位是0,因此这两种情况,dw都等于0x00000065 换一个,比如bt=247,也就是0xF7,八位二进制是“11111110”它的最高位是1,那么movsx后,dw等于0xfffffff7,而movzx后,dw等于0x000000f7 |
|
|
|
[求助]问个问题
说详细情况。 你所描述的情况无法确定原因是什么。 通常来说MFC的程序用OD来调试是完全没有问题的,对于带有调试信息的程序,OD甚至可以做到源码级别的调试,虽然不如VC自身的调试器那样友好。 所以,你的问题应该是特殊情况,请你详细描述一下。 |
|
[求助]OD附加到进程,如何查找OEP?
仅仅听说过一些名词,而不知道它们的原理是不够的。 OEP,Original Entry Point,原始入口点,本意是指壳的功能(比如解压缩,解密IAT等)执行完成后,转向原来程序的入口点。对于压缩壳,通常可以顺利找到OEP,但是对于现在很多的保护壳,这个概念没有什么意义了,因为“壳”与“瓤”已经搅在了一起,特别是很多壳带有SDK,更是分不清什么是壳,什么是瓤了。 而附加的进程,程序早已经运行,也就是OEP早就执行过去了,因此附加后再去找OEP,除非用特征码暴力搜索内存(不过没什么意义,因为DUMP出的程序基本上是不能用的)。 脱壳,不适合用附加的办法。 而所谓“ESP定律”,并不是什么金科玉律,只是一条简单的规律:程序的执行要保持堆栈平衡,至少是应该保持。这条规律适于用几乎所有(并不是全部)的压缩壳,还有极个别的较弱的保护壳。 它是基于这样一个事实(甚至假设):壳的开始会将原来的寄存器内容压栈,而壳的结尾会将这些内容再出栈。 |
|
[求助]OllyDbg消息断点断不下来,是不是我设的不对?
只要是自修改代码,通常是壳,但不限于壳,OD就会放弃旧的UDD数据,也就是不保存断点和注释等用户数据。 |
|
[求助]汇编语言能调用windows的内容吗,比如进行MFC编程?
MFC,微软基础类库,这里的“类”就是C++中的类。 最简单地说(不严格地说),MFC可以看成是对WIN32 SDK的一层C++包装(这样的说法并不准确,但是可以这样去帮助理解)外加一套应用程序框架(即AFX)。 |
|
[求助]程序刚用OD载入就读出系统中的信息,怎么下断啊?
这段代码是(不严格地说)所有MFC程序通用的框架,而不是特定的应用程序的代码。因此,这些代码对于分析程序没有什么用处的。 |
|
[求助]程序刚用OD载入就读出系统中的信息,怎么下断啊?
以上大部分是CRT(C运行时)的Startup Code,只有你标记的CALL 4是WinMain函数,结果还是MFC的包装函数。 所以,上面的这些代码,根本没有触及应用程序功能相关的代码。 |
|
|
|
|
|
|
|
[求助]什么软件可以控制小孩的上网时间
堵之不如导之。 要把他往好的方向引导。 比如,他喜欢玩游戏,对游戏感兴趣,你就问他,你知道这游戏是怎么做出来的吗?他如果好奇,就继续引导,可以教他编程(可以从他的兴趣,即游戏编程开始),慢慢地他对玩游戏的兴趣就会转到其它方面。 再比如,他喜欢聊天,可以教他计算机网络、通信方面的知识。 等等等等。 单纯地去“管理”,去“控制”,一般不会有好的效果的。 |
|
.Net2.0的setup.exe,有什么工具可以监控安装的时候写注册表和复制什么文件到什么目录呢?
dotNet,就不是试图去“绿化”了。 可以试试去找一下第三方的实现,有一些会比标准实现版本精简一些,但是,当然难以保证绝对的兼容性了。 比如有一个版本叫Microsoft .Net Micro Framework的实现,另外还有开源的dotGNU项目等。 |
|
[求助]类对象调试出错,在线等==好了自己调好了,
初学C++,个人推荐G++与GDB,Windows下可以用MinGW。最好是学会这些工具的用法,比如用命令行编译、连接和调试程序。 学会了基本的工具,再用集成化的开发工具,我用过的,感觉 比较不错的工具,比如Codelite,还有Code::Blocks。 Codelite的代码提示功能(特别是针对C++)比Code::Blocks稍好一些,但编译器和调试器的集成程度稍差一些,配置起来难度比较大。需要手动设置很多东西,如命令行、环境变量等。 Code::Blocks的自动化程度非常高,对编译器和配置很方便,把G++的很多选项都变成了图形化的选项。对于没有特殊需求的用户,只要指出MinGW的目录就OK了。 个人不太推荐初学者用VC。对于VC6,它与C++标准相差太多,而对于VC7以后的,它的特性(特别是标准之外的扩展)太多,反而不利手初学者掌握C++语言本身。当然,只是对于学习而言,并且只是个人意见而已。 |
|
|
|
[求助]OllyDbg消息断点断不下来,是不是我设的不对?
点右键->跟随WndProc,在WndProc的入口处按Shift+F2,根据需要设置条件,具体条件断点的表达式写法,可以参考说明书。 比如要断WM_COMMAND,就写: [esp+8]==WM_COMMAND 比如要对某特定窗口(假设hwnd为0x12345678)下断点,就写:[esp+4]==12345678 不同的条件可以用逻辑操作符连接,如&&, ||, !。 等等。 |
|
|
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值