一段C语言 反汇编代码,要求详解每句含义and $0xfffffff0,%esp将esp和16进制的fffffff0进行与运算,
cmp $0xfffff000,陎将fffff000减去eax,但只改变标志位,而不影响两个数的大小,一般CMP指令后面会跟一个跳转指令,也可以说CMP指令是比较指令
neg 離 求EBX相反数的补码
【c语言反汇编函数 c 反汇编】nop指令的机器码是90,也就是空指令,不起作用的,sub $0x8,%esp这条指令是用于平衡堆栈的,如楼上所说,你可以当它是空气..有些汇编代码不用刻意去看懂,扫一眼知道是干什么用的就行了,有的就得仔细推敲它的含意和它起的作用
C语言写的程序 怎么反汇编成汇编语言如果c语言反汇编函数你手上没有什么第三方工知具c语言反汇编函数的话,可以用DEBUG,
比如你用C写c语言反汇编函数了一个程序1.exe
生成c语言反汇编函数的位置是d:\1.exe
打开电脑左下角开始---运行---输入双引号里面道的"cmd"---确定
弹出一个黑色窗体,在上面输入输入双引号里面的"debug
d:\1.exe"
然后回车
接着会出现一个"-"符号
然后输入"u"
回车
就可回以看到相应的汇编c语言反汇编函数了,这只是一个简单的例子,有兴趣可以学下DEBUG用法,要是大工程的话,还是建立答用别的工具,
注意:这只是在windows平台下用,像linux等别的平台不知道有没有.
c语言反汇编代码解释a1是你定义的变量 , char类型,占1个字节,所以byte ptr,[a1]就是取出a1的内容
连起来就是,以一个字节的方式取出[a1]的内容
至于为什么是a1, 这个是vc为了好观察才这么做的,如果你拿ollydbg看的话 , 那么只会是
mov byte ptr [ebp-XX], 61h
什么软件能将C语言的执行文件反汇编为汇编源代码用一个反汇编调试器即可 。
IDA或者OllyDbg,方便直观,当然VC也有自带的调试器,不过很麻烦,不如IDA或者OD方便 。
补充c语言反汇编函数:
DLL 属于可执行文件中的一类c语言反汇编函数,又称为动态链接库,不能直接用DEBUG加载,一般由应用程序因使用该库中的函数 , 而由操作系统在应用程序加载的同时被加载入特定地址,这个地址一般是DLL在链接时指定的 。当DLL被加载到运行空间,根据输出函数表,可以得到各个函数的入口地址,然后用DEBUG在各个入口下断点,调用该函数时DEBUG将跟踪进入该函数 , 从而实现反汇编 。
反汇编属于逆向工程,逆向工程的主要手段有两大类,其中一类是动态分析,另一类是静态分析 。
前面提到的方法属于动态分析 , 由DEBUG实现反汇编,该方法不容易得到完整的代码 , 一般只能形成一段一段独立分散的代码,同时由于DEBUG的局限性,反汇编的代码质量多不高,生成的代码不能直接使用,原因在于DLL在加载时若没有加载到指定地址空间,操作系统将对代码进行重定向,所以DEBUG只能得到重定向后的代码,这类代码必须修改每一个重定向点,才能形成可执行代码 。作为WINDOWS32位操作系统,OLLYDBG是最为优秀的调试、跟踪、反汇编工具,多窗口运行,可以方便的通过窗口操作完成各类动作,而不需要像一般DEBUG那样由命令行来完成 , OLLYDBG还有许多一般调试器不具备的功能,同时由于每一代高手不断的修改,使其具有多种功能 , 同时带来的就是混乱,谁也不知道有多少版本,谁也不清楚每个版本到底增加了什么功能 , 但就这样,也是瑕不掩疵 , OLLYDBG任然是DEBUG中最强大,最好使用的 。
静态分析和动态分析不同 , 静态分析直接打开原程序,加载而不运行,然后直接分析加载的代码 。目前静态分析工具 , 最强大的当属IDA,IDA支持几乎所有种类的汇编语言 。
IDA加载应用程序有许多选项,可以选择完整的加载整个程序 , 也可以选择加载程序的某个块,一般可选择的是否加载文件头、资源表、输入表、输出表等等 。
IDA还支持调试 , 也就是说,当c语言反汇编函数你在进行反汇编过程时,可以直接使用IDA来调试跟踪 , 以分析代码的动态执行情况,不过就动态跟踪来说,OLLYDBG更为强大 。
IDA反汇编的正确率和代码的复杂程度有关,对于正规开发的代码 , 尤其是如果能够获得源程序的调试文件,即所谓的PDB文件,IDA可以读取PDB文件中的信息,使得反汇编的效率和准确度大为提高,生成的代码甚至比源代码易读 。IDA将反汇编生成的结果存入IDB文件中 。当c语言反汇编函数你确认反汇编的结果达到你的要求 , 可以让IDA输出汇编源代码,IDA也提供其他格式的输出,例如HTML文件,便于用户阅读 。楼主主要是用于分析DLL文件 , 一般来说这类文件更适合做静态分析,所以推荐使用IDA来进行 。
IDA对于分析那些加壳或含有大量花指令、混淆代码、垃圾代码的程序,反汇编的正确率会大为下降 , 因为IDA无法正确的确认当期位置上的数值是属于代码,还是属于数据,是普通C字符,还是DELPHI的字符串 , 还是UNICODE字符串,是结构数据还是数组还是类表(DELPHI生成的代码中含有大量的类表)等等 。遇到这种情况,就需要使用者掌握许多技巧 , 例如可以通过使用者对当前数据的认识,指导IDA如何处理当前的数据 。对于大批量的,具有某些规律的数据,IDA还提供了脚本语言(文件尾位idc) , 通过对脚本的执行来指导IDA如何进行反汇编 。对于更为复杂的情况,例如程序是自解压运行的,这时IDA就没有任何能力来进行正确的分析,通常都会用OLLYDBG动态跟踪,等程序完成自解压后从内存中将解压后的代码完整的挖下来形成文件 , 再由IDA进行静态分析 。
对于成功进行反汇编的代码,IDA根据代码的入口、调用、转移等指令,可以为使用者提供各种格式的程序的流程图 , IDA提供许多格式由用户选择,便于用户理解程序的结构 。
汇编语言的科学定义,其实就是介于机器码(各种01)和高级语言(如C)之间的一种语言 。你用C语言写一段程序,其实要在机器上运行的话 , 机器是不懂的,要经过编译器、汇编器编译,变成汇编,最终再变成机器码,机器根据这些机器码的01可以控制硬件电路完成你程序想执行的操作 。
C语言main函数反汇编后开头几名话有些不太明白的地方??请指教windows下不管是什么s , es cs ds ss都好,基址都是0 。
所以什么s都一样的…………
32位下分段方式和16位不同,不是像16位那样直接段寄存器拿来乘一下加上偏移就行了 。32位下虽然段寄存器还是16位,但是它代表了段表(你可以认为是数组)的元素索引(数组下标) , 真正的段基址保存在段表元素中 。windows下反正段基址都是0……
我说的都是指用户态 。内核态没进去过不知道 。
谁能将下列反汇编的代码给用C语言写出来,谢谢,高分你这是IDA的伪代码 , 看起来像一段加密程序,如果没人能够帮你逆向出来的话,你可以试著在C语言中将汇编语句内嵌 。
__asm
{
......
}
关于c语言反汇编函数和c反汇编的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 包房用什么电脑好,包间用品
- 系统u盘格式怎么选,系统u盘怎么选择
- phpcms公众号插件,微信公众号插件
- php开发微交易的数据 php微服务教程视频
- 新媒体发布内容如何统计,新媒体发布信息主要有哪些平台
- 搭服务器,怎么自己搭服务器
- 永恒之塔斗鱼直播奖励兑换,永恒之塔怀旧直播
- java求整数原码代码 java求整数原码代码是多少
- html5浪漫,html浪漫唯美代码