A. 怎样查看一个软件的源代码
对于现在的软件来说,源代码是最基础的部分,得到了源代码也就几乎得到了软件的全部。源代码对于商业性质的软件来说是极其重要的,一旦泄露就会造成非常大的损失,所以源代码是一个软件开发团队的最高机密。
正因如此,很多人出于不同目的,会想办法得到软件的源代码,但是我们知道,软件的最终产品一般是已经编译过的文件,就像我们初学C语言时生成的 exe 文件一样,是一些二进制符,不能直接查看源码。
想要查看一个软件的源代码,首先要确定这个软件的开发者是否已经将其开源,如果开源的话就不必大费周章地去反编译了,直接去开源社区里就会发现该软件的源码,开发者一般也会提供源码的下载链接。
如果软件不开源,那就要进行反编译了,查看大多数软件的源码都需要用到这个方法,即使反编译了,看到的源代码也是非常混乱的,因为为了保护源码,开发者在编译前都会进行混淆,目的就是即使有人反编译成功,也无法看懂代码里的逻辑,这也是保护源码的最后一道防线。
B. keil如何快速找到代码
高级查找
步骤一:首先工程编译选项中要选择如图一:【Browse Infomation】选项,即浏览信息。
全编译工程至没有错误,这一点很重要,如果有严重的错误,则可能没有编译完,即一般的查找可能不会查到整个工程文件的内容,选成搜索的信息不全或是没有。
图一:设置编译选项
步骤二:如图二,双击需要查找的内容选中后,点击右键,选择查找项:
这里为简单的查找方式,方便与快速。可以查找到相关的定义及调用情况,在哪个文件里。这里必须是全编译通过的工程源码。
图二:选中并右键查找。
步骤三:如图三,部分汇编函数的变量或是函数名无法找到。有时查不到,怎么办呢?继续以下的方法。
图三:简单的查找没有找到相关项。
步骤四:如图四,选中后,通过Edit->Find in files..高级查找功能。这里要点就是设置搜索筛选的条件及文件范围,如是否精确查找或是只要部分包含等选项。
图四:打开高级查找功能:工程文件内容搜索。
步骤五:设置文件搜索的选项,尤其是工程文件夹,默认有可能不是整个工程文件夹。这里点击浏览选择整个工程文件。
图五:设置搜索选项。
步骤六:保证搜索文件范围为整个工程文件主目录。选择后,即可进行搜索了查找了。
图六:选择文件主目录。
步骤七:点击查找后,查看搜索到的信息。查看搜索到的结果,有可能很多,可以重新查找并修改查找选项等。
图七:文件搜索到的信息。
步骤八:双击并定位查看指定的搜索信息。双击即可定位并查看查找的结果。
图八:定位并查看指定的搜索信息。
有时需要对工程源码进行从头到尾的学习与消化,因此,查找功能还是比较有用的。从而让变量定义或是函数定义等无处藏身。虽然步骤很多,其实很简单。
最重要的,学习在于积累,有些技术的东西,就要多动手,然后再举一返三,熟能生巧。
张世争
微信公众号
嵌入式开发技术经验分享
打开CSDN,阅读体验更佳
keil c51 关键字_行知zzz的博客_c51扩展关键字
keil c51 关键字 一:KeilCx51扩展的关键字: •at•alien •bdata •bit •code •compac •data •far •idata •interrupt •large •pdata •priority•reentrant...
继续访问
KeilC51基本关键字_dylan_zhouhailiang的博客_c51关键字
KeilC51基本关键字 一、由ANSI标准定义的共32个: auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof ...
继续访问
keil编辑环境下_“搜索”功能窗口中_Bookmark All命令的便捷之处
在keil编辑环境下,有时候调用一个函数,这个函数有执行的前提条件,比如要执行函数体内容得满足:if (cmdArrived) 条件; 可是变量:cmdArrived在哪里定义的? 在哪个函数里变量:cmdArrived满足条件,要怎么找比较快呢。 ctrl + F 打开搜索框,输入“cmdArrived”,再点击“Bookmark All”命令,所有的“cmdArrived”调用行全部使用了书签,这样就比较好着了; keil编辑环境工具栏搜索框输入cmdArrived,点击右边搜索命令,再点击“Book
继续访问
Keil 查找功能的使用
keil中如何查找和替换以及一个工程里所有文件所包含查找和替换的内容: 1、点击 edit-find或者快捷键 ctrl+f; 2、在look in中 选择current document就是查找或替换本文件的内容, 选择current project就是查找或替换整个工程的包含的内容 ...
继续访问
MDK keiluvision Volatile关键字的用法_点点墨的博客
MDK keiluvision Volatile关键字的用法 在定义变量时,变量前面加volatile修饰,作用是防止相关变量被优化。 例如对外部寄存器的读写。对有些外部设备的寄存器来说,读写操作可能都会引发一定硬件操作,但是如果不加volatile,编译器会把这些...
继续访问
Keil中的code关键字_weixin_30823001的博客
Keil中的code关键字 一般说来,我们在C语言中定义的每一个变量初始化后都会占用一定的内存(RAM)空间。但是在keil中提供了一个特殊的关键字“code”,这个关键字在标准C中是没有的。其语法举例如下:...
继续访问
keil C51 中的库函数
非常有用的keil c51 库函数文档,受益匪浅,
Keil C51 V9.00/uVision 4基础
<br /> <br />Keil C51 V9.00 即09年发布的最新版本uVision 4,版本外观改变比较大<br />可以使用以前的注册文件<br />如果全新安装,在VISTA或者WIN 7系统下,请使用管理员方式运行,然后注册即可无限制运行<br />注册方法:<br /> 1. 安装Keil C51 V9.00版本,即uV4<br /> 2. 打开uVision4,点击File---License Management...,打开License Management窗口,复制右上
继续访问
解决Keil 搜索关键字时不能跳转到所在位置的问题
问题:KEIL搜索结果不能跳转的问题分析过程:最近遇到一个问题:在keil5.1中ctrl+shift+s全局搜索,双击搜索结果后无法跳转。重装软件,换版本,修复电脑我都试了,都没用。最后发现,原先的程序可以跳转,而后来修改的不行。相同的工程在相同的目录下为什么一个可以一个不行呢?发现唯一的区别就是两个工程文件夹名称不同,由于修改过的版本我在工程文件名附加了 “(0922)”,我把括号去掉后就可以...
继续访问
keil5寻找自定义函数的位置
keil中想快速的找到自定义函数的位置,如下所示: 想找到CAN定义的函数位置: 第一步:先对程序进行build(第一步非常重要,如果不build,就不能用后面的快捷键与go to!!!) 第二步:可以光标放到函数的位置右击,然后点击go to definition…或者按F12 ...
继续访问
KEIL5 全局搜索关键字功能用不了的解决办法(CTRL+F)
CTRL+F跳出搜索界面 点击Find in Files 项目卡,选择Current Project即可。
继续访问
STM32F4工程--KEIL--搜索关键字
STM32F4工程--KEIL--搜索关键字 在.C文件或.H文件中搜索一个关键字 方法: ctrl+F 输入关键字即可查询 (问题解决,如果对大佬您有帮助的话,给小丁个赞呗,谢谢大佬)
继续访问
最新发布 如何通过KEIL查看所定义函数入口在内存的地址
如何通过KEIL查看所定义函数入口在内存的地址
继续访问
Keil软件开启“查找变量定义”功能方法
在使用Keil软件编写程序时,有可能将程序的变量定义和使用放在了不同的位置, 有时候想要查看变量的定义,可以使用Keil软件的查找功能。 1、使用Find功能一个个查找变量,在Keil界面输入 Ctrl+F,弹出查找界面。 将要查找的内容输入[Find what]查找框,[Look in]框选择"Current Document",然后点击"Find Next"就可以在当前文件一...
继续访问
Keil使用技巧及常见问题
文章目录Keil的使用快捷键Keil中使用Ctrl+Shift+F:在多个文件中搜索变量/函数(Find in files) Keil的使用快捷键 Keil中使用Ctrl+Shift+F:在多个文件中搜索变量/函数(Find in files) 搜索条件 说明 Find what 输入要搜索的关键字 指定要搜索的文件类型 指定要搜索的文件夹/工程 搜索属性...
继续访问
keil的主要功能和作用_keil进阶教程
前言keil只懂得创建软件工程是远远不够的,如果要想顺心使用,应该要懂得部分配置,这样使用心情顺畅,码代码也会越发高效。设置字号字体点击编辑菜单,会出现很多子目录,找到配置,点击进入设置页面。看到上方的子栏目,去选择colors,进入新界面,单片机用C语言编写·,那就点击编辑c文件,右边会出现字号,字体,字色设置,按照个人需求自行设置。改正错误有时候各种因素会出现编程错误,但自行又找不到错误在何处...
继续访问
KEIL5全局搜索,在find in files框内双击搜索内容,不能跳到相应位置
文件名包含了()括号,去掉就可以了。
继续访问
热门推荐 keil编程关键字没有彩色,找不到Keyword和 C++files解决办法
打开颜色设置,如果没有C/C++ Editor files 你就无法修改你的代码界面关键字颜色。 这种情况,很有可能是你的Keil安装目录下含有中文路径(一般国外专业软件我都放在D盘第一目录下的新建英文文件夹(Softwares)中,养成文件夹存放的好习惯,日后无论是安装还是找路径都会方便许多。),将你的Keil安装文件整个拖到英文目录下,或者修改目录名为英文。 接下来重启软件,就可以设置关键字了。 注意:修改前关闭keil,如果文件名无法修改,说明当前有文件里的东西正在运行。需关闭”修改目录“所在文件里的
继续访问
Keil代码整体偏移和查找功能
选中要偏移的代码,然后按TAB键,所有被选中的代码就会向后偏移TAB,TAB等于多少个空格,可以在“Edit”-“Editor”-“C/C++ Files”下面设置。 如果要返回,则选中目标代码,按Shift+TAB就行了。 Keil的查找功能
继续访问
Keil如何查看函数或变量调用---非Ctrl F
今天公司新人问我,Keil这个编译器怎么查看一个函数都在哪里被调用?我脱口而出 辣鸡软件只能用Ctrl F慢慢找。。要么你就先用SourceInsight编辑代码,改好了再去编译吧。 好好的编译器怎么会没有这个最基本的功能呀?? 想着这个问题,于是就有了今天的意外之喜。 操作方法如下: 在View中调出SourceBrowser这个窗口,将需要查找定义及调用位置的 函数、变量、宏等复制到Symbol处,回车 你就可以看到Definitions&References了,双击可以跳转到对应的代码位置。这
继续访问
keil查找函数引用的方法
1.快捷键ctrl+f 2在Find in Files中填要找的,Find all. 3.ojbk
继续访问
如何在KEIL里面搜索一个函数名或者字符串
使用Ctrl + F 会出现如下弹窗,这个就是一个搜索窗口。 这个弹窗的搜索内容会和你之前选中的字符串一样,同时可以选择在一个文件下找,也可以选择查找那个文件含有这个字符串 查找含有某一个字符串的文件 ...
继续访问
实验一 单片机 绘制原理图
实验一 2.2绘制原理图 1.首先在开始菜单栏里面输入“ISIS”打开软件; 2.1)单击元器件列表窗口上边的按钮P,弹出图2.1所示元器件选择窗口; 图2.1 2)在该窗口左上方的关键字文本框内输入8051,在窗口右上方的栏中将显示出80C51图形符号,同时显示该器件的虚拟仿真模型VSM DLL model(MCS8051.DLL)如图2.2; 图2.2 3) 用鼠标从器件选择窗口中选中需要的器件,单机确定按钮后,选择的器件将出现在预览窗口中如图2.3; 图2.3 4)将鼠标指向编辑窗口并单
继续访问
keil查找关键字
Keil
C. 怎样查看和修改软件的源代码
exe文件信息一般不能直接更改,因为是编译好的,并且一般都加了壳。
想改的话,得用脱壳了吧。不同的文件有可能用了不同的软件加了壳。
用各类脱壳工具测试并脱壳后,再反编译,有可能得到相关文件信息并更改。
(一)壳的概念
作者编好软件后,编译成exe可执行文件。 1.有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。 2.需要把程序搞的小一点,从而方便使用。于是,需要用到一些软件,它们能将exe可执行文件压缩, 3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。实现上述功能,这些软件称为加壳软件。
(二)加壳软件最常见的加壳软件ASPACK ,UPX,PEcompact 不常用的加壳软件WWPACK32;PE-PACK ;PETITE NEOLITE
(三)侦测壳和软件所用编写语言的软件,因为脱壳之前要查他的壳的类型。 1.侦测壳的软件fileinfo.exe 简称fi.exe(侦测壳的能力极强) 2.侦测壳和软件所用编写语言的软件language.exe(两个功能合为一体,很棒) 推荐language2000中文版(专门检测加壳类型) 3.软件常用编写语言Delphi,VisualBasic(VB)---最难破,VisualC(VC)
(四)脱壳软件。 软件加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。目前有很多加壳工具,当然有盾,自然就有矛,只要我们收集全常用脱壳工具,那就不怕他加壳了。软件脱壳有手动脱和自动脱壳之分,下面我们先介绍自动脱壳,因为手动脱壳需要运用汇编语言,要跟踪断点等,不适合初学者,但我们在后边将稍作介绍。
加壳一般属于软件加密,现在越来越多的软件经过压缩处理,给汉化带来许多不便,软件汉化爱好者也不得不学习掌握这种技能。现在脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。而自动就是用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如UPX;有些不提供这功能,如:ASPACK,就需要UNASPACK对付,好处是简单,缺点是版本更新了就没用了。另外脱壳就是用专门的脱壳工具来对付,最流行的是PROCDUMP v1.62 ,可对付目前各种压缩软件的压缩档。在这里介绍的是一些通用的方法和工具,希望对大家有帮助。我们知道文件的加密方式,就可以使用不同的工具、不同的方法进行脱壳。下面是我们常常会碰到的加壳方式及简单的脱壳措施,供大家参考: 脱壳的基本原则就是单步跟踪,只能往前,不能往后。脱壳的一般流程是:查壳->寻找OEP->Dump->修复 找OEP的一般思路如下: 先看壳是加密壳还是压缩壳,压缩壳相对来说容易些,一般是没有异常,找到对应的popad后就能到入口,跳到入口的方式一般为。 我们知道文件被一些压缩加壳软件加密,下一步我们就要分析加密软件的名称、版本。因为不同软件甚至不同版本加的壳,脱壳处理的方法都不相同。
常用脱壳工具: 1、文件分析工具(侦测壳的类型):Fi,GetTyp,peid,pe-scan, 2、OEP入口查找工具:SoftICE,TRW,ollydbg,loader,peid 3、mp工具:IceDump,TRW,PEditor,ProcDump32,LordPE 4、PE文件编辑工具PEditor,ProcDump32,LordPE 5、重建Import Table工具:ImportREC,ReVirgin 6、ASProtect脱壳专用工具:Caspr(ASPr V1.1-V1.2有效),Rad(只对ASPr V1.1有效),loader,peid(1)Aspack: 用的最多,但只要用UNASPACK或PEDUMP32脱壳就行了 (2)ASProtect+aspack:次之,国外的软件多用它加壳,脱壳时需要用到SOFTICE+ICEDUMP,需要一定的专业知识,但最新版现在暂时没有办法。 (3)Upx: 可以用UPX本身来脱壳,但要注意版本是否一致,用-D 参数 (4)Armadill: 可以用SOFTICE+ICEDUMP脱壳,比较烦 (5)Dbpe: 国内比较好的加密软件,新版本暂时不能脱,但可以破解 (6)NeoLite: 可以用自己来脱壳 (7)Pcguard: 可以用SOFTICE+ICEDUMP+FROGICE来脱壳 (8)Pecompat: 用SOFTICE配合PEDUMP32来脱壳,但不要专业知识 (9)Petite: 有一部分的老版本可以用PEDUMP32直接脱壳,新版本脱壳时需要用到SOFTICE+ICEDUMP,需要一定的专业知识 (10)WWpack32: 和PECOMPACT一样其实有一部分的老版本可以用PEDUMP32直接脱壳,不过有时候资源无法修改,也就无法汉化,所以最好还是用SOFTICE配合 PEDUMP32脱壳 我们通常都会使用Procmp32这个通用脱壳软件,它是一个强大的脱壳软件,他可以解开绝大部分的加密外壳,还有脚本功能可以使用脚本轻松解开特定外壳的加密文件。另外很多时候我们要用到exe可执行文件编辑软件ultraedit。我们可以下载它的汉化注册版本,它的注册机可从网上搜到。ultraedit打开一个中文软件,若加壳,许多汉字不能被认出 ultraedit打开一个中文软件,若未加壳或已经脱壳,许多汉字能被认出 ultraedit可用来检验壳是否脱掉,以后它的用处还很多,请熟练掌握例如,可用它的替换功能替换作者的姓名为你的姓名注意字节必须相等,两个汉字替两个,三个替三个,不足处在ultraedit编辑器左边用00补。
常见的壳脱法:
(一)aspack壳 脱壳可用unaspack或caspr 1.unaspack ,使用方法类似lanuage,傻瓜式软件,运行后选取待脱壳的软件即可. 缺点:只能脱aspack早些时候版本的壳,不能脱高版本的壳 2.caspr第一种:待脱壳的软件(如aa.exe)和caspr.exe位于同一目录下,执行windows起始菜单的运行,键入 caspr aa.exe脱壳后的文件为aa.ex_,删掉原来的aa.exe,将aa.ex_改名为aa.exe即可。使用方法类似fi 优点:可以脱aspack任何版本的壳,脱壳能力极强缺点:Dos界面。第二种:将aa.exe的图标拖到caspr.exe的图标上***若已侦测出是aspack壳,用unaspack脱壳出错,说明是aspack高版本的壳,用caspr脱即可。 (二)upx壳 脱壳可用upx待脱壳的软件(如aa.exe)和upx.exe位于同一目录下,执行windows起始菜单的运行,键入upx -d aa.exe (三)PEcompact壳 脱壳用unpecompact 使用方法类似lanuage傻瓜式软件,运行后选取待脱壳的软件即可 (四)procmp 万能脱壳但不精,一般不要用 使用方法:运行后,先指定壳的名称,再选定欲脱壳软件,确定即可脱壳后的文件大于原文件由于脱壳软件很成熟,手动脱壳一般用不到。
三、压缩与脱壳
现在脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定水平要求。而自动就稍好些,用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如UPX;有些不提供这功能,如:ASPACK,就需要UNASPACK对付。很多文件使用了一些压缩加壳软件加密过,这就需要对文件进行解压脱壳处理后,才能汉化。这种压缩与我们平时接触的压缩工具如winzip,winrar等压缩不同,winzip和winrar等压缩后的文件不能直接执行,而这种 EXE 压缩软件,EXE文件压缩后,仍可以运行。这种压缩工具把文件压缩后,会在文件开头一部分,加了一段解压代码。执行时该文件时,该代码先执行解压还原文件,不过这些都是在内存中完成的,由于微机速度快,我们基本感觉不出有什么不同。这样的程序很多,如 The bat,Acdsee,Winxfile等等。
要脱壳就应先了解常用压缩工具有哪些,这样知己知彼,如今越来越多的软件商喜欢用压缩方式发行自己的产品,如The bat!用UPX压缩,ACDSEE3.0用ASPACK压缩等。它有以下因素:一是:微机性能越来越好,执行过程中解压使人感觉不出来,用户能接受(给软件加壳,类似WINZIP 的效果,只不过这个加壳压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。现在的CPU都很快,所以这个解压过程你看不出什么异常。因为软件一下子就打开了,只有你机器配置非常差,才会感觉到不加壳和加壳后的软件运行速度的差别。)。 二是:压缩后软件体积缩小,便于网络传输。三是:增加破解的难度。首先,加壳软件不同于一般的winzip,winrar等压缩软件.它是压缩exe可执行文件的,压缩后的文件可以直接运行.而winzip,winrar等压缩软件可压缩任何文件,但压缩后不能直接运行。很多站点不允许上传可执行文件,而只能上传压缩的文件,一方面处于速度考虑,也是为了安全性考虑。用加壳软件压缩的文件就是体积缩小,别的性质没改变。还是EXE文件,仍可执行,只是运行过程和以前不一样了。压缩工具把文件压缩后,在文件开头一部分,加了一段解压代码。执行时该文件时,该代码先执行解压还原文件,不过这些都是在内存中完成的,由于微机速度快,我们基本感觉不出有什么不同。
D. keil怎样看编译产生的汇编代码
在成功编译的前提下,按Ctrl+F5,或依次点击菜单栏的“Debug”>>“Start/StopDebugSession”,切换到调试界面。
调试界面下,依次点击菜单栏的“View”>>“DisassemblyWindow”,即可打开反汇编窗口,其中包含有混排的源代码以及编译生成的汇编代码,如图所示。
注意经过优化后,源代码与汇编代码并不一定一致。