您尚未登录。

楼主 #1 2018-08-18 21:40:11

posystorage
会员
注册时间: 2018-05-06
已发帖子: 165
积分: 556

最近在逆向一个stm32的程序的时候的一点点心得

前两天在看一个别人搞的程序,手上只有Hex,所以就直接用IDA来反汇编看了。有些心得给大家随便说说

这个程序很明显是有ST官方提供的标准库开发的,运行在STM32F072上面

库函数开发确实容易,但是给逆向 一定程度上也带来了极大的容易
几个原因
1:如果查看过keil生成的map文件,就可以知道ARMCC的链接器(link)在生成可执行文件的时候,函数的排列是按照字母顺序来的。
比如说,这个程序的开发者用到了USB的HID功能,所以我强行用官方的hid库函数历程编译了一个程序,查看编译完MAP文件
很明显的按字母顺序排列
图片
QQ20180818201634.jpg
2:ST的库函数(不管标准库,hal库等等),他的函数命名方式都是为 外设名字_xxx功能
比如GPIO_DeInit GPIO_Init GPIO_ReadInputData等等,用过的都知道
那么结合第一条 这一个外设的库函数内容 必定会被安排在一起

3:熟悉库函数的,经常用的,对函数的功能基本上都比较了解。
对比C写的内容,用十几秒,一分钟就能确定这个函数的名字,直接重命名函数为库里面的名字
这样节约了大量的时间去自己分析这个函数是干嘛的(如果不是库函数,一个函数的内容,往往要花少则几分钟,多则小半天的时间去研究他的运行机理)
虽然汇编用熟了不难,但是确实不友好。

QQ20180818203626.jpeg

这里随便贴一贴这个被完全逆向完的程序。所以函数都被完全的读懂在干嘛(即被重命名)
这个程序只花了不到48小时,就被完全捅穿了。所有明锁,暗锁,加密都像被衣服脱干净了一丝不挂的曝光在大摄像机镜头下
打码的函数是作者自己写的私有内容,为了保护,就打码了,没打码的都是库函数
图片
图片
图片
图片
图片
图片
说这么多,抛出个问题,让大家自己想,我不说,怎么样写程序,才是不容易被逆向破解的?欢迎大家畅所欲言

最近编辑记录 posystorage (2018-08-18 21:42:17)

离线

楼主 #2 2018-08-18 21:43:12

posystorage
会员
注册时间: 2018-05-06
已发帖子: 165
积分: 556

Re: 最近在逆向一个stm32的程序的时候的一点点心得

顺便吐槽一句 这个论坛啥都好,就是图片上传真的太蛋疼了 mad mad

最近编辑记录 posystorage (2018-08-18 21:43:46)

离线

楼主 #6 2018-08-18 23:28:10

posystorage
会员
注册时间: 2018-05-06
已发帖子: 165
积分: 556

Re: 最近在逆向一个stm32的程序的时候的一点点心得

晕哥 说:

逆向最怕的就是那种要某种条件达到才能被爆发的问题,
比如开机1000次后,要输入一个验证码,
这种很隐蔽的问题破解的时候未必能预测到。

这个程序本身不算大,全部把他弄懂要的时间不长。当然程序大了那不一样了

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn