Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >逆向工程c#程序

逆向工程c#程序
EN

Stack Overflow用户
提问于 2010-02-16 11:44:55
回答 9查看 36.1K关注 0票数 17

如果这个二进制文件是分布式的,那么每个c程序都会被转换成机器码。既然计算机的指令集是众所周知的,那么有可能恢复C语言的原始程序吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-02-16 11:48:13

您永远不能返回到完全相同的源,因为没有与编译后的代码一起保存的有关该源的元数据。

但是您可以从汇编代码中重新创建代码。

如果你对这些东西感兴趣,可以看看这本书:Reversing: Secrets of Reverse Engineering

编辑

有些编译器-101在这里,如果你用另一个词来定义一个编译器,而不是像“编译器”那样技术性,它会是什么呢?

答案:Translator

编译器将您编写的语法/短语翻译成另一种语言,而C编译器则翻译成汇编语言,甚至机器码。将C#代码转换为IL,依此类推。

你拥有的可执行文件只是原始文本/语法的翻译,如果你想“反转它”,因此“翻译回来”,你很可能不会得到与开始时相同的结构。

一个更真实的例子是,如果你从英语翻译到德语,再从德语翻译回英语,sentance的结构很可能会有所不同,可能会使用其他单词,但含义和上下文很可能没有变化。

同样的道理也适用于编译器/翻译器如果你从C到ASM,逻辑是一样的,只是读取它的方式不同(当然它是经过优化的)。

票数 20
EN

Stack Overflow用户

发布于 2010-02-16 11:48:26

这取决于你对原始C程序的理解。例如局部变量名称、注释等。都不包含在二进制文件中,因此无法获得与用于生成二进制文件的源代码完全相同的源代码。诸如IDA Pro之类的工具可以帮助您反汇编二进制文件。

票数 5
EN

Stack Overflow用户

发布于 2010-02-16 13:10:58

我估计一个真正熟练的黑客每天大约有1千字节的机器代码的转换率。以西方的普通工资计算,比如说,一个100KB的可执行文件的价格约为25,000美元。在花了这么多钱之后,所得到的只是一大块C代码,它们的功能与您的完全相同,减去了注释和诸如此类的好处。它不可能与你的版本竞争,你将能够更快地提供更新和改进。反向工程这些更新也不是一件微不足道的事情。

如果这个价格标签没有给你留下深刻的印象,你可以通过添加更多的代码来任意提高转换成本。请记住,能够处理像这样的大型程序的熟练黑客有更好的事情要做。他们编写自己的代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2272581

复制
相关文章
mybatis的逆向工程_mybatis逆向工程多表查询
逆向工程字面意思就是反向生成工程,和hibernate一样mybatis也有自己的逆向工程工具,hibernate的逆向生成我没有做过,不过我猜大概都已样,再说,hibernate的现在使用很少了,到了使用的时候再去用吧,使用逆向工程时,需要注意的是表之间的关系无法映射出来!也就是说mybatis的逆向工程生成的都是单表操作, 1:mybatis逆向工程开发文档:
全栈程序员站长
2022/09/24
6760
mybatis的逆向工程_mybatis逆向工程多表查询
mybatis逆向工程
就是我们可以根据数据库表,自动生成javabean,mapper接口和其对应的maaper.xml文件。
西西嘛呦
2020/08/26
5430
mybatis逆向工程
逆向工程——栈[三]
栈是计算机科学里最重要的且最基础的数据结构之一。 从技术上讲,栈就是CPU寄存器里面的某个指针所指向的一片内存区域。这里所说的某个指针通常位于x86/x64平台的ESP寄存器/RSP寄存器,以及ARM平台的SP寄存器。 操作栈最常见的指令是PUSH和POP,在 x86 和 ARM Thumb 模式的指令集里都有这两条指令。 PUSH指令会对ESP/RSP/SP寄存器的值进行减法运算,使之减去4(32位)或8(64位),然后将操作数写到上述寄存器里的指针所指向的内存中。 POP指令是PUSH的逆操作:他先从栈指针(Stack Pionter,上面三个寄存器之一)指向的内存中读取数据,用以备用(通常是写到其他寄存器里面),然后再将栈指针的数值加上4或8. 在分配栈的空间之后,栈指针,即Stack Pointer所指向的地址是栈的底部。PUSH将减少栈指针的数值,而POP会增加它的数值。栈的“底”实际上使用的是整个栈的最低地址,即是整个栈的启始内存地址。 ARM的栈分为递增栈和递减栈。递减栈(descending stack)的首地址是栈的最高地址,栈向低地址增长,栈指针的值随栈的增长而减少,如STMFA/LMDFA、STMFD/LDMFD、STMED、LDMEA等指令,都是递增栈的操作指令。
HACK学习
2019/08/05
8940
mybatis逆向工程
mysql-connector-java-5.1.28-bin.jarjava连接mysql包
用户10325771
2023/03/14
3980
mybatis逆向工程
mybatis逆向工程
mybatis逆向工程的作用是根据数据库里的表结构自动生成实体类,映射文件,和接口。 和hibernate的自动建表相反。
Mshu
2018/10/31
1.1K0
逆向工程----MBG
逆向工程 逆向工程概念 MBG概念 步骤1: 导入相关依赖 引入mybatis-generator.xml配置,建议从官网文档粘贴后,进行配置修改 使用代码运行,也可以用命令行 效果 小tips 使用插件方式启动mbg,需要在build标签中进行设置,以及引入最开始给的插件依赖 MBG的具体使用看这篇文章 逆向工程概念 ---- MBG概念 ---- 步骤1: 导入相关依赖 <!--mybatis的逆向工程--> <dependency> <
大忽悠爱学习
2021/11/15
3930
APK逆向工程
APK(android Application PacKage)文件是安卓app的安装文件,其实就是一个zip或rar压缩包,把apk后缀改为zip,即可解压得到一堆安卓相关文件。
李小白是一只喵
2020/11/24
1.2K0
APK逆向工程
漫谈逆向工程
逆向工程,原名Reverse Engineering,简称RE。关于其书面介绍我就不复制粘贴百度百科了,简而言之就是从发布的产品中反向分析其程序逻辑和算法——基于各种目的。
evilpan
2023/02/12
1.1K0
漫谈逆向工程
mybatis逆向工程
三、点击maven,在点击Plugins,找到mybatis-generator:generate 双击即可运行!
栖西
2023/10/17
2270
mybatis逆向工程
Android逆向工程
在Root前提下,我们可以使用Hooker方式绑定so库,通过逆向方式篡改数值,从而达到所谓破解目的。然而,目前无论是软件加固方式,或是数据处理能力后台化,还是客户端数据真实性验证,都有了一定积累和发展,让此“懒技术”不再是破解修改的万金油。再者,阅读汇编指令,函数指针替换,压栈出栈等技术需要一定技术沉淀,不利于开发同学上手。 两年前,也是因为懒,很懒,非常懒,堆积了足够的动力,写了一个基于人工模拟方式,对一个特定规则的游戏进行暴力破解。我们都知道,人工模拟方式,绕过了大量防破解技术,只要还是人机交互模式,
xiangzhihong
2018/02/05
1.2K0
Android逆向工程
mybatis逆向工程
pom文件引入插件 <plugin> <!--Mybatis-generator插件,用于自动生成Mapper和POJO--> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <!--配置文件的位置--> <co
Ssss
2020/03/26
4960
mybatis的逆向工程怎么实现_mybatis逆向工程原理
mybatis,一个相对于hibernate的轻量级DAO框架,它的逆向工程可以很方便的从数据库到生成对应的entity和mapper接口。
全栈程序员站长
2022/09/24
5990
mybatis的逆向工程怎么实现_mybatis逆向工程原理
mybatis逆向工程配置文件_mybatis逆向工程多表查询
mybatis逆向工程很早之前有用过,但是一直没有整理使用步骤,今天来回顾下在idea下springboot中整合mybatis逆向工程的实现步骤
全栈程序员站长
2022/09/27
3340
mybatis逆向工程配置文件_mybatis逆向工程多表查询
Mybatis--逆向工程
<generatorConfiguration> <!-- targetRuntime="MyBatis3Simple":生成简单版的CRUD MyBatis3:豪华版 --> <context id="DB2Tables" targetRuntime="MyBatis3"> <!-- jdbcConnection:指定如何连接到目标数据库 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver"
SuperHeroes
2018/05/30
5880
MyBatis逆向工程 Generator
正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程 的。 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源: Java实体类 Mapper接口 Mapper映射文件 添加依赖和插件 pom <!-- 依赖MyBatis核心包 --> <dependencies> <dependency> <groupId>org.mybatis</groupId> <ar
鱼找水需要时间
2023/02/16
4580
MyBatis逆向工程 Generator
逆向工程——汇编基础[二]
除了显示地操作堆栈(使用push和pop指令)之外,很多指令也需要使用堆栈,如INT、CALL、LEAVE、RET、RETE、IRET等等。配对使用上述指令并不会造成什么问题,然而,如果你打算使用LEAVE、RET、RETE、IRET这样的指令实现跳转(比JMP更为麻烦,然而有时,例如在加密软件中,或者需要修改调用者状态时这是必要的)的话,那么要搞清楚他们做的到底是什么,并且精确而了解自己要做什么。
HACK学习
2019/08/05
1.2K0
逆向工程——汇编基础[一]
汇编语言是一种最接近计算机核心的编码语言。不同于任何高级语言,汇编语言几乎可以完全和机器语言一一对应。 汇编语言就是机器语言的一种可以被人读懂的形式,只不过它更容易记忆。
HACK学习
2019/08/05
1.5K0
MyBatis的逆向工程
MyBatis是目前很流行的持久层框架,很多企业都在采用。但是其复杂繁琐的配置,重复性的实体类创建等等,消耗了程序员大量的精力,同时有些地方如果一个细小的疏忽,可能导致最终功能运行失败。例如:在几十个字段的表中,某一列的列名配置疏忽。基于此,mybatis 推出了一套 jar 包,可以依据我们设计好的数据库表,自动生成 pojo、mapper 以及mapper.xml。有了逆向工程,便大大缩减了我们的开发时间。
宋先生
2019/07/18
4550
mybatis与其逆向工程
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。myBatis在目前在SSM框架中做为持久层在使用。
Tim在路上
2020/08/04
3690
Mybatis的逆向工程
我这里使用的的eclipse插件的方式,来逆向生成代码。给出配置文件 generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCT
用户5927264
2019/07/31
3480

相似问题

逆向工程

12

逆向工程?

31

对安装程序进行逆向工程

20

逆向工程: C#字典的表示?

30

逆向工程Flash

83
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文