VC++6.0开发的程序,如何反编译成源码?

newnetworks 2009-11-15 01:37:11
VC++6.0开发的程序,如何反编译成源码?

...全文
2234 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kings0527 2009-11-15
  • 打赏
  • 举报
回复
IDA F5插件
小小攻城师 2009-11-15
  • 打赏
  • 举报
回复
汇编吧
楼主不要想得太简单了
na2650945 2009-11-15
  • 打赏
  • 举报
回复
汇编回去。
很不好读。
变量的意义要自己猜。
shuilongyin_00 2009-11-15
  • 打赏
  • 举报
回复

用反汇编程序吧!这样就能把所有的都反编译成汇编!

不过,前提是汇编很牛!
jackyjkchen 2009-11-15
  • 打赏
  • 举报
回复
晕,又看错了……反编译成源码不可能,反编译可以,汇编代码
失落的凡凡 2009-11-15
  • 打赏
  • 举报
回复
如果只有exe文件, 是没法变成源码的,只能反编译成汇编,当然也可以硬生生的翻译成C语言,但一点都不好读。

基本上可以这么说:编译是个单向的过程
失落的凡凡 2009-11-15
  • 打赏
  • 举报
回复
w32dasm
jackyjkchen 2009-11-15
  • 打赏
  • 举报
回复
处于单步调试状态,然后alt + 8
首先关于 [评价可免费] 的严重声明: 一、评价=评论加评价(评星星); 二、评价必须是下载完了该资源后的评价,没下载就评论无效; 三、如果正确评价了,返还积分可能需要等等,系统需要反应下。呵呵 评论时记得要评分。然后会返回给你花费的分再加1分.理论上有十分就可以下载完所有的资源了。一般人我不告诉他。 所谓动态分析是利用调试器,如OllyDBG一步一步地单步执行软件。常见的调试器有SoftICE,OllyDBG(简称OD)等。SoftICE是一款经典的调试工具,运行在Ring0级,可以调试驱动。但平时调试的程序都是Ring3级,因此推荐大家用OllyDBG,这款工具上手容易,功能十分强大,现在论坛上的文章基本都是用OllyDBG来讲解的。 Olldbg常见问题 Q: OD中如何运行到光标所在处? A: 将光标移到目标位置,按F4. Q: 如何用OD修改可执行程序? A:直接在反汇编代码区更改,这时可以使用汇编代码更改,然后选中修改后的汇编代码,右击-->复制到可执行文件-->保存文件. Q:OD中的代码乱码,如: 004365E0 >db 68 ; CHAR 'h' 004365E1 >db A4 004365E2 >db 7A ; CHAR 'z' 004365E3 >db E5 004365E4 >db B8 004365E5 >db E8 004365E6 >db BB A:OD右键,"分析/从模板中删除分析",如不行,按Ctrl+A重新分析 Q:OD为什么删除了断点,重新加载的时候,这些断点都会重新出现 A:设置ollydbg.ini,将配制文件里改如下:Backup UDD files=1 (by kanxue) Q:如何还原到OD到分析前的状态? A:右键 分析/从模块中删除扫描 Q:什么是UDD? A:OllyDbg 把所有程序或模块相关的信息保存至单独的文件中,并在模块重新加载时继续使用。这些信息包括了标签、注释、断点、监视、分析数据、条件等等 Q:OD的数据窗口显示一个下划线,是什么意思? A:重定位加下划线[Underline fixups],几乎所有的DLL和一部分程序都包含重定位,这样就可以在内存中的不同基地址加载模块了。当该项开启时,CPU反汇编窗口或CPU数据窗口中的重定位地址都将添加下划线。(xing_xsz) Q:如果已经知道某一CALL的具体作用,能否把后面所有相同的CALL都改函数名形式? A:比如 CALL 110000 此中已经知道110000是一个核心计算 则如下操作,让光标停在CALL 110000 这个语句上,按回车键 会跳到110000的地址上去显示,之后让光标停在110000上,按 shift 和; (分号) 其实就是完一个:(冒号)的动作,输入 名称,这回所有的调用110000处,都会显示CALL 你刚才输入的 名称了.(nig回答) Q:用OD调试一些加壳程序,如Themida等,可能你会发现下断后(包括硬件断点),程序跑到断点时,OD会出现假死现像。 A:打开OD配置文件ollydbg.ini,你会发现:Restore windows= 123346 //这个Restore windows可能会是一个很大的值 现在只需要将Restore windows=0,重新用OD调试程序,假死问题就消失了。 (kanxue) Q:ollydbg中如何调用pdb文件? A: pdb文件是VC++调试编译生的文件。由编译器直接生。 pdb文件要配合源文件使用。不同的源文件pdb文件不同。 用OD装入可执行文件后,点击CPU窗口中的注释段可出现源码。 不过不是所有的源码都可以显示的。VC++6.0以下都可以显示。 还有一种不显示的原因是缺少路径。点击OD主菜单的[查看]->[源文件] 如果[源码]段出现(缺少)字样的话,说明此路径的源码是看不了的。设置正确的路径就可以了。 (nantz回答) Q:运行A.exe,其会调用B.exe,如果用OD再附加B.exe,OD会死掉 A: 1.OD菜单,设置OD为即时调试器; 2.将B.exe的入口改CC,即INT 3指令,同时记下原指令 3.运行A.exe,其调用B.exe,会导致异常,OD会自动启动加载B.exe,此时你将INT 3指令恢复原指令。 4.到这步,你己可以任意调试B.exe了(kanxue) Q:用ollydbg调试的时候,断住kernel32.dll系统函数,然后”执行到用户代码“,就可以回到被调程序的代码。但有时候却回不来,不知道这又是为什么? A: 多半是杀毒软件(如卡巴对LoadLibraryA)Hook API入口代码进入ring 0了,OllyDbg不能单步跟踪,这种情况下只要看堆栈返回地址,在返回地址上下端点,F9执行就可以了。(cyclotron回答) Q:OD的“复制可执行文件”后面没有 “所有修改”的菜单 A:OD识别代码段范围失败后, 没有复制all modifications的选项, 因为这个是复制代码段内的修改的。(曾半仙回答) Q:OD里的patch窗口怎么用? A:patch窗口用来保存你在调试的程序中修改过的代码的。比如你前面调试了一个程序,在OD中把某处的JE改了JMP,OD会在patch中记录这个修改,你下次再重新载入程序时,就能在OD的patch窗口中看到你原来改动的代码。按空格键就可以激活patch,就是在OD中还把原来位置的JE改JMP。这个只是在OD中作更改,并没有实际保存到文件,主要是比较方便在OD中修改程序时测试。(CCDebuger回答)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧