怎么把STM32W的库反汇编
展开全部 我个人是从13年的7月份开始接触逆向的,目前菜鸟水平,刚刚算是入门。
就我个人经验来看,做逆向对数学没啥大要求。
这句话的前提是你搞破解用爆破,不要去碰加密算法。
加密算法么,既然叫算法,肯定跟数学扯不清。
想从汇编角度写出一个算法的逆算法,我还没这个水平。
起码听起来挺高端不是。
多少人用着易语言,学学OD,CE,汇编都半生不熟就开始搞了,磕磕碰碰以后不一样风生水起。
做到后面还是正儿八经的用C来的实在。
当然不是怂恿lz无基础就上手。
野路子肯定是有代价的。
只是想说明一点:搞逆向,就是个熟练工种,什么基础都没有的人都能玩转。
免杀不太清楚,逆向的话,上手甚至对汇编的要求都不会太高。
你不去逆向加密算法啥的,一些简单的数据逆向对汇编的要求不算高。
当然,熟练一些以后还是有必要专门学习下汇编的。
主要是熟悉各种指令,并不用达到用汇编写出完整程序的水平。
大部分的编码还是C来做的。
学的话,先学C,那个人性化点,汇编说难学吧,也不算,就是比较机械化。
指令搞来搞去,慢慢就熟悉了,急不来。
lz要知道一点是,你搞的是逆向工程,这是个非常规的活,虽然涉及汇编,涉及编程,但是跟传统编程侧重点完全不同。
正常编程,你在意的是如何写出漂亮且高效的代码,如何对复杂的业务逻辑进行合理的封装,如何组织继承结构。
搞逆向,你注重的是如何通过合理的逆向思维,用类似“如果我写这个功能,我会怎么实现····”之类的想法去看待整个程序。
如何通过CE,OD切入汇编代码中的关键点。
甚至是对于不同编译器对一些代码会进行哪些优化,优化后的代码呈现一种什么形态,这种。
基于上面这个逆向思维,就要求你又一定的编码能力。
只有能够深入敌后,正确抓住编码者思维的破解者才会真正的省时省力。
学习的话,推荐个网站 鱼C工作室。
http://bbs.fishc.com/一个分享和学习氛围都不错的网站。
上面有免费的课程,C和汇编的都有。
主讲小甲鱼对于汇编,C都有很深的功力起码带新手入门绰绰有余。
风格很诙谐,你会喜欢的。
里面还有很多其他的教程,有兴趣都可以看看。
书的话,正常介绍C和汇编的书,lz可以自己找,但是我不推荐看这些。
如果你喜欢小甲鱼的视频,我想那个就够让你对C和汇编入门了。
破解逆向方面的书,是值得花最多的时间去看的。
推荐看雪的那本《加密与解密》,搞逆向必读。
再者就是《C++反汇编与逆向技术揭秘》。
这两本都是我有在看的,但是都没有彻底读完。
感觉很有必要一读。
再者,推荐几个逆向资源站点:看雪 吾爱破解 广海社区前两个是国内逆向破解主要的两个论坛。
第三个是专搞游戏辅助的,技术相对没前面那两个牛,毕竟专注方向不同。
逆向只是很多人没想到有去搞,或者是没兴趣,或者是没机会,或者认为没搞头。
它会比搞正向工程难一些是肯定的,还要面对各种壳,保护驱动。
后面这种人为设置的障碍才是提高逆向门槛的主要因素。
但除去保护技术,逆向本身不会太难,毕竟都是软件技术,总会有学会的时候。
搞逆向的时间成本比较高。
因为大部分学编程的人可能都懂点C,java,去公司培训培训,2个周凑合能干活。
可是没几个人在大学正儿八经学过汇编,有学也是王爽的16位汇编,真正玩的转的恐怕也没几个。
还有OD和CE,IDA这些,不是专门搞这个的估计都没听过,这些软件也是要专门花谢时间来学的。
如果再算上保护,壳,麻烦多了去了。
真正有专研精神,肯吃苦的才能学透。
lz加油吧,坚持下去,就会体会到搞逆向的乐趣。
Flash与S3C44B0X连接时地址线为什么要偏移一位
展开全部 进入ARM状态:当操作数寄存器的状态位为,0时,可以采用执行BX指令的方法,使微处理器从THUMB切换到ARM。
此外,在处理器进行异常处理时,把PC指针放入异常模式的链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。
3.R14也称作子程序连接寄存器SLR或连接寄存器LR,用来保存R15的返回值,可用R14保存子程序的返回地址。
寄存器R14常用在如下情况:在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值复制给R14,执行完子程序后,又将R14的值复制回PC,即可完成子程序的调用返回。
4.程序计数器PC(R15)对其的使用有一些限制。
5.寄存器R16,用作当前程序状态寄存器CPSR,可在任何运行模式下被访问。
6.条件码标志:N,Z,C,V均为条件码标志位,他们的内容可被算术或逻辑运算的结果锁改变,并且可以决定某条指令是否被执行。
7.控制位:PSR的低八位为控制位,当发生异常时,这些位可以被修改,如果处理器运行在特权模式,这些位也可以由程序修改。
8.ARM体系所支持的异常类型:1)复位(Reset):当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行。
2)未定义指令(Undefined):当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。
可使用该异常机制进行软件仿真。
3)软件中断(SWT):该异常由执行SWT指令产生,可用于用户模式下的程序调用特权操作指令。
可使用该异常机制实现系统功能调用。
4)指令预取终止(Prefetch Abort):若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出终止信号,但当预取的指令被执行时,才会产生指令预取终止异常。
5)数据终止(Data Abort):若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据终止异常。
6)外部中断请求(IRQ):当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。
系统的外设可通过该异常请求中断服务。
7)快速中断请求(FIQ):当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。
9.ARM体系结构可以用两种方法存储字数据,称之为大端模式和小端模式。
大端模式下,字数据的高地址是存储在低地址中。
小端模式下,字数据的低地址是存储在低地址中。
10.MMU(内存管理单元)通过硬件实现对内存管理,是ARM中最常见的协处理器,一般为CP15. MMU 内存管理单元 Memory Management Unit 在处理器中实现内存管理功能,完成物理地址到虚拟地址的映射11.AMBA为先进控制器总线体系,它为ARM内核和外设提供了标准化接口。
12.内核后缀的含义:E:代表支持增强DSP指令 T:代表支持Thumb指令集J:代表支持Jazzlle技术 S:代表为可综合的内核(与其对应为赢家宏单元)13.TDMI的基本含义:T:支持16位指令集ThumbD:支持片上调式DebugM:内嵌硬件乘法器(Multiplier)I:嵌入式ICE,支持片上断点和调试点。
14.ARM的寻址模式:立即寻址:操作数本身就在指令中给出,只要取出指令也得到了操作数。
这个操作数叫做立即数ADD R0,R0,#1; R0←R0+1 ADD R0,R0,#0x3f;R0←R0+0x3f寄存器寻址:利用寄存器的数值作为操作数,是各类微处理器经常采用的一种方式寄存器间接寻址:以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中基址变址寻址:就是将寄存器的内容和指令中给出的地址偏移量相加,从而得到的一个操作数的有效地址多寄存器寻址:一条指令可以完成多个寄存器值的传送。
这种寻址方式可以用一条指令传送最多16个通用寄存器的值。
跳转寻址:相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到的操作数的有效地址。
堆栈寻址: 满堆栈:当堆栈指针指向最后压入的堆栈的数据时。
空堆栈:当堆栈指针指向下一个将要放入数据的空位置。
递增堆栈:堆栈由低地址向高地址生成时 递减堆栈:堆栈由高地址向低地址生成满递增堆栈: 堆栈指针指向最后压入的数据,且低地址向高地址生成慢递减堆栈: 堆栈指针指向最后压入的数据,且高地址向低地址生成空递增堆栈: 堆栈指针指向下一个将要放入的数据的空位置,且低地址向高地址生成空递减推展: 堆栈指针指向下一个将要放入的数据的空位置,且高地址向低地址生成15.ARM指令集分为:数据处理指令:CMP比较指令(CMP R1,RO 将R0、R1的值减,并根据结果设置CPSR标志位)ADD加法指令加载/存储指令:LDR字数据加载指令(LDR R0,[R1]),LDRB字节数据加载指令。
乘法指令:MUL32位乘法指令(MUL R0,R1,R2;R0=R1*R2),MLA32位乘加指令 (MLA R0,R1,R2,R3;R0=R1*R2+R3)状态寄存器访问指令:MRS程序状态寄存器到通用寄存器的数据传送指令MRS R0,CPSR (传送CPSR的内容到R0),MSR通用寄存器到程序状态寄存器的数据传送指令。
MSR SPSR,R0(传送R0的内容到SPSR)跳转指令:B跳转指令,BL带返回的跳转指令 B LABEL(程序无条...
请各位高手点一下二级C语言考试涉及什么算法。
还有C语言常涉及那...
如果你担心C二级过不去,做完南开100题就行,C二级涉及的稍微深一点(相比其它题)的是链表的基本操作(建立动态链表,查找,插入,删除),很基础,自己拿TC或VC试试就会了,还有递归函数,但是不要求你会编递归,只要能看懂,能推出最后的返回值就行。
总之,很儿戏。
如果想做程序员,实际工作中学或者有天分的话自己钻。
下面是一个程序员的自述,希望能给你些启发:这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量。
最近看到很多学生朋友和我当年一样没有方向,所以把我的经历写出来与大家共勉,希望能给刚入行的朋友们一点点帮助。
一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过MIS、 数据库,应用程序,做过通信 >软件、硬件驱动、 协议栈,到现在做操作系统内核和IC相关开发,这中间走了很多弯路,也吃了不少苦。
我上的是一个三流的高校,就连同一个城市的人多数都不知道。
因为学校不好也就没有指望能靠学校名气找一个好工作。
所有的希望都寄托在自己的努力上了,大一开学前的假期我就开始了学习,记得我买的第一本书是《 计算机基础DOS3.0》,大家别吓着了,其实当时已经普及了DOS6.22了,只是我在书店里看到了DOS4.0,5.0,6.0的书,以为像英语那样是第四、五、六册,记得当时到处找DOS1.0,现在想想也幸好我没有找到:)开学前我学完了PASCAL,那时既没有 计算机也没有人可以请教,我连程序是什么的概念都没有,只好死记硬背 代码,然后拿纸写,我一直到大三才有了一台486,在这之前用纸写了多少程序我也记不清楚了,只知道最长的一个我拿A4大小的草稿纸写了30多页,我的C语言、C++、VC都是在这样的条件下 入门的。
所以说条件是可以克服的,希望我的经历多少给条件艰苦的同学们一点信心。
第一次上机是在我姐夫的机房,我的心情激动的无与伦比,但是一上机我立刻傻了眼,他们用的是英文版的in3.1,我的那点DOS 知识都见了鬼,上机提心吊胆的一阵瞎摸,一不小心把Word弄成了全屏,怎么都还不了原,当时真是心急如焚,我以为机器被我弄坏了。
第一个C语言程序,就是那个经典的HelloWorld,我调了几个星期,上机机会非常少,也没有书告诉我开发环境(TC2.0)需要设置,而且开始我都不知道有编译器,我甚至自作聪明把写好的程序扩展名从.c改成.exe,结果可想而知。
大一学完了C、X86的汇编、数据结构、C++。
由于精力都花在自学上了,大一下四门课挂了彩,三类学校就是这点好,挂上一二十门也照样毕业。
不过扯远点说,我那么刻苦都及不了格,可见我们国家的 计算机教育有多死板。
大二准备学VC和BC,当时难以取舍,后来选了VC,不为别的,只为书店里两本书,VC那本便宜6块钱。
我的努力在班上无人能及,学的日夜不分,大三有了 计算机后更是如此,很多次父亲半夜教训我说我不要命了,我一直觉得自己基础差,记忆又不行,条件也不好,所以觉得只有多花点时间才能赶上别人。
居然后来有许多朋友说我有学 计算机的天赋,让我哭笑不得。
我用的是486,16M内存,1G硬盘,当时同学们的配置都是P166MMX,我安装一个indowsNT4.0需要一个通宵,编译一个BC5.0向导生成的程序需要近两个小时,我的显示器是个二手的,辐射非常大,开机屏幕冒火花,看起来很酷的:),有一次程序写的太久,觉得怎么白色的编辑器背景变成了紫色,以为显示器坏了,后来才发现眼睛不行了,不过说来也奇怪,到今天我的视力还能保持1.5,真是个奇迹。
但是就是那台破机器陪伴了我两年,让我学会了VC、Delphi、SQLServer等。
后来那台机器给我阿姨打字用,据她说一天她正打的开心,一股青烟夹着火苗从显示器钻出来,之后它才寿终正寝。
大三假期找了个机会在一个 计算机研究所实习,与其说实习不如说是做义工,工作了两个月一分钱没有拿。
但是这两个月对我的发展帮助很大,让我早一步了解了社会,刚去的时候我当然是一窍不通,在那里我熟悉了网络,学会了Delphi和Oracle。
由于工作很认真,得到了比较好的评价,在一位长者的引荐下,我开始和他们一起做项目,这使我在大三大四就有了自己的收入,大四又找了两家MIS公司兼职,虽然钱不多,但是在学生期间有1000多的收入我已经非常满足了,我终于用自己赚的钱把 计算机换了。
大四下开始找工作,这时我的工作经验已经比较多(当然现在想想非常幼稚),开始听父母的想去那个研究所,实习过那个部门也希望我能去,但是不知道为什么最后不了了之,这种单位就是比较官僚,我一气之下就到了我兼职的一个公司做MIS的TeamLeader。
在大三到毕业一年的时间,做过了各种MIS,从煤气、烟厂、公安、铁路、饮食到高校,什么有钱做什么,工作也很辛苦,经常加班和熬通宵,从跟客户谈需求到设计、编码、测试、交付都要上。
那时觉得很有成就感,觉得自己还不错,现在想想真是很肤浅。
刚走上工作岗位的学生很容易被误导,各种开发 工具让人眼花缭乱,同时也觉得很受公司器重,但这样工作永远是一个低层次的开发...
如何用KEIL软件将C反汇编
KEIL本来就有这个功能,你先按DEBUG调试按钮,然后按Disassembly Window就可以看到汇编代码了啊.我贴上这个按钮在哪里,进入调试窗口以后从左边数起第2个就是了.