100k的exe可执行程序,反汇编得到的汇编代码大概多少行?

ooolinux 2017-06-30 01:06:43
如题,32位。字数字数
...全文
741 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
段定义、过程定义、数据定义、局部变量、注释、空行... 肯定都不算,只有生成机器指令的才算。x64平均指令长度可能要比32位模式下长一些,但是也应该超不过4字节。
  • 打赏
  • 举报
回复
有些字符串也能正确识别出来。
ooolinux 2017-07-04
  • 打赏
  • 举报
回复
引用 15 楼 DelphiGuy 的回复:
段定义、过程定义、数据定义、局部变量、注释、空行... 肯定都不算,只有生成机器指令的才算。x64平均指令长度可能要比32位模式下长一些,但是也应该超不过4字节。
反汇编代码里能看到数据定义语句吗?是不是db伪指令这种?
ooolinux 2017-07-04
  • 打赏
  • 举报
回复
引用 15 楼 DelphiGuy 的回复:
段定义、过程定义、数据定义、局部变量、注释、空行... 肯定都不算,只有生成机器指令的才算。x64平均指令长度可能要比32位模式下长一些,但是也应该超不过4字节。
64位指令是不是操作数的字节比32位指令的操作数字节大一倍?
  • 打赏
  • 举报
回复
引用 7 楼 u010165006 的回复:
我用W32Dasm反汇编工具试了几个VC2010控制台程序,release版一百多K,去掉自定义的图标文件大小,大概一百零几K,反汇编出来大概4万行,两者相除,平均每条指令大概2.75字节(不知道这样计算方法对不对?)用BCB 6.0(用80386指令集)编译的Windows程序,950多K,只有少量图标资源,反汇编代码40几万行,直接相除,平均每条指令2.25字节。 不知道和x86相比,x64平均每条指令大概多少字节?
4万行可能很多是数据,按照某些程序的统计:https://www.strchr.com/x86_machine_code_statistics,典型x86 32位程序的平均指令长度是3.261字节(如果大量使用了SSE/AVX指令可能会更长),假设100k .exe大约2/3是代码,那就是18000多行。
赵4老师 2017-07-03
  • 打赏
  • 举报
回复
引用 7 楼 u010165006 的回复:
我用W32Dasm反汇编工具试了几个VC2010控制台程序,release版一百多K,去掉自定义的图标文件大小,大概一百零几K,反汇编出来大概4万行,两者相除,平均每条指令大概2.75字节(不知道这样计算方法对不对?)用BCB 6.0(用80386指令集)编译的Windows程序,950多K,只有少量图标资源,反汇编代码40几万行,直接相除,平均每条指令2.25字节。 不知道和x86相比,x64平均每条指令大概多少字节?
你可以试试用 dumpbin.exe /DISASM 64位的exe >64位的exe对应的反汇编.asm 命令,生成64位的exe对应的反汇编文件。
ooolinux 2017-07-03
  • 打赏
  • 举报
回复
引用 11 楼 zhao4zhong1 的回复:
我刚才在Win10 64位下使用dumpbin反汇编100264字节的64位pickerhost.exe,结果为24222行,1320894字节。
相除一下4.14,难道说x64指令样本平均长度4.14字节?
ooolinux 2017-07-03
  • 打赏
  • 举报
回复
引用 12 楼 DelphiGuy 的回复:
刚刚反汇编了win10/64中一个99.5K(101888字节)的程序systeminfo.exe,IDA输出的.asm大小425K,42959行,其中很多是数据定义,代码部分大约24000多行,去掉过程头尾声明、局部变量声明、空行、标号占据的行、注释等等,大约40%,剩余真正指令占用的行数,大约14000多行。
数据定义语句是db开头的吗?数据定义算汇编指令吗?
  • 打赏
  • 举报
回复
刚刚反汇编了win10/64中一个99.5K(101888字节)的程序systeminfo.exe,IDA输出的.asm大小425K,42959行,其中很多是数据定义,代码部分大约24000多行,去掉过程头尾声明、局部变量声明、空行、标号占据的行、注释等等,大约40%,剩余真正指令占用的行数,大约14000多行。
赵4老师 2017-07-03
  • 打赏
  • 举报
回复
我刚才在Win10 64位下使用dumpbin反汇编100264字节的64位pickerhost.exe,结果为24222行,1320894字节。
ooolinux 2017-07-03
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
[quote=引用 7 楼 u010165006 的回复:] 我用W32Dasm反汇编工具试了几个VC2010控制台程序,release版一百多K,去掉自定义的图标文件大小,大概一百零几K,反汇编出来大概4万行,两者相除,平均每条指令大概2.75字节(不知道这样计算方法对不对?)用BCB 6.0(用80386指令集)编译的Windows程序,950多K,只有少量图标资源,反汇编代码40几万行,直接相除,平均每条指令2.25字节。 不知道和x86相比,x64平均每条指令大概多少字节?
你可以试试用 dumpbin.exe /DISASM 64位的exe >64位的exe对应的反汇编.asm 命令,生成64位的exe对应的反汇编文件。[/quote] 我手头没有64位的exe。
  • 打赏
  • 举报
回复
这个没法确定,理论上一个程序最少只需要1字节指令ret即可。但是一般来说,x86指令集的.exe 100K大约能反汇编出10000多行代码,只是一般情况。
ooolinux 2017-07-01
  • 打赏
  • 举报
回复
我用W32Dasm反汇编工具试了几个VC2010控制台程序,release版一百多K,去掉自定义的图标文件大小,大概一百零几K,反汇编出来大概4万行,两者相除,平均每条指令大概2.75字节(不知道这样计算方法对不对?)用BCB 6.0(用80386指令集)编译的Windows程序,950多K,只有少量图标资源,反汇编代码40几万行,直接相除,平均每条指令2.25字节。 不知道和x86相比,x64平均每条指令大概多少字节?
赵4老师 2017-06-30
  • 打赏
  • 举报
回复
万一100k的exe里面只包含不到1k的code,而其它都是资源呢?
赵4老师 2017-06-30
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、反汇编器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
www_adintr_com 2017-06-30
  • 打赏
  • 举报
回复
x86 平均一条指令 3 到 4 个字节左右
paschen 2017-06-30
  • 打赏
  • 举报
回复
下个IDA试下就大概知了.... 使用VC静态库的一空程序大概就会有100K....
ckc 2017-06-30
  • 打赏
  • 举报
回复
不同的文件应该不一样吧, 比如如果数据段很大,反汇编出来就比较小些 代码段比较大,反汇编出来就多些

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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