切换到宽版
  • 8019阅读
  • 45回复

[ARM]最近在逆向一个stm32程序的时候的一点点心得 [复制链接]

上一主题 下一主题
离线2545889167
 

发帖
12309
M币
13207
专家
280
粉丝
4657
— 本帖被 青柠 设置为精华,作者+3000M币+5专家(2018-08-21) —
前两天在看一个别人搞的程序,手上只有Hex,所以就直接用IDA来反汇编看了。有些心得给大家随便说说

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

库函数开发确实容易,但是给逆向 一定程度上也带来了极大的容易
几个原因

1:如果查看过keil生成的map文件,就可以知道ARMCC的链接器(link)在生成可执行文件的时候,函数的排列是按照字母顺序来的。
比如说,这个程序的开发者用到了USB的HID功能,所以我强行用官方的hid库函数历程编译了一个程序,查看编译完MAP文件
很明显的按字母顺序排列




2:ST的库函数(不管标准库,hal库等等),他的函数命名方式都是为 外设名字_xxx功能
比如GPIO_DeInit GPIO_Init GPIO_ReadInputData等等,用过的都知道
那么结合第一条 这一个外设的库函数内容 必定会被安排在一起

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

虽然汇编用熟了不难,但是确实不友好。


这里随便贴一贴这个被完全逆向完的程序。所以函数都被完全的读懂在干嘛(即被重命名)
这个程序只花了不到48小时,就被完全捅穿了。所有明锁,暗锁,加密都像被衣服脱干净了一丝不挂的曝光在大摄像机镜头下。

打码的函数是作者自己写的私有内容,为了保护,就打码了,没打码的都是库函数








说这么多,抛出个问题,让大家自己想,我不说,怎么样写程序,才是不容易被逆向破解的?欢迎大家畅所欲言
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共20条打赏M币+308
jpdd521 M币 +30 写的我自己都看不懂,更别说破解了 08-24
cushion M币 +20 不明就裡 08-22
zhjs2009 M币 +15 優秀文章 08-21
a2432061667 M币 +16 優秀文章 08-21
老攻 M币 +30 - 08-19
gdd714 M币 +8 - 08-19
eros8269 M币 +13 没看懂的,一窍不通的路过 08-19
人艰不拆了 M币 +12 不懂,哈哈哈 08-19
福源人 M币 +13 謝謝分享 08-19
数码家园 M币 +13 優秀文章 08-19
12
离线2545889167

发帖
12309
M币
13207
专家
280
粉丝
4657
只看该作者 1楼 发表于: 08-18
顺便再提一句
字符串也是破解的敏感G点,这一点运行在PC上的程序也是一样的
这个比搞对应上库函数 还要快,哈哈

因为这一部分设计大量的私有设计程序 所有就不完整贴了。只截取部分不敏感的放一放



本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共9条打赏M币+105
freemancn M币 +8 作为一个资深程序员,告诉你一点,世界上没有不能破解程序,你要做的是使破解的成本比软件自身价值大。 08-23
niub0 M币 +1 謝謝分享 08-23
ch104517745 M币 +20 原創內容 08-22
花生仔 M币 +13 優秀文章 08-21
mousebat04 M币 +8 大佬这操作太骚了.牛掰.  FBI有请. 08-20
杨小伟 M币 +13 原創內容 08-18
trg13 M币 +20 不是可以硬件加密 听说不容易解不开,不知道是不是真的、 08-18
链接 M币 +13 謝謝分享 08-18
zhkrid M币 +9 優秀文章 08-18
离线潜隆

发帖
54906
M币
132479
专家
968
粉丝
916
只看该作者 2楼 发表于: 08-18
来看看应用于哪里?
本帖最近打赏记录:共1条打赏M币+9
2545889167 M币 +9 - 08-21
离线zoro

发帖
17994
M币
7414
专家
4
粉丝
34
只看该作者 3楼 发表于: 08-18
道高一尺魔高一丈
本帖最近打赏记录:共1条打赏M币+5
2545889167 M币 +5 - 08-21
离线lmy2003

发帖
20800
M币
516
专家
10
粉丝
65
只看该作者 4楼 发表于: 08-18
多加点空操作语句?
本帖最近打赏记录:共1条打赏M币+5
2545889167 M币 +5 - 08-21
在线温力口

发帖
55566
M币
166848
专家
443
粉丝
823
只看该作者 5楼 发表于: 08-18
優秀文章。。。。。。。。。。。。。。。
本帖最近打赏记录:共1条打赏M币+5
2545889167 M币 +5 - 08-21

发帖
22010
M币
73767
专家
178
粉丝
565
只看该作者 6楼 发表于: 08-19
把我看花了。。。。
本帖最近打赏记录:共1条打赏M币+5
2545889167 M币 +5 - 08-21
离线eros8269

发帖
7046
M币
25118
专家
74
粉丝
598
只看该作者 7楼 发表于: 08-19
没看懂的,一窍不通的路过
本帖最近打赏记录:共1条打赏M币+5
2545889167 M币 +5 - 08-21
离线gdd714

发帖
2142
M币
1533
专家
1
粉丝
173
只看该作者 8楼 发表于: 08-19
不知道stm32 程序能不能和win程序一样加壳。
本帖最近打赏记录:共1条打赏M币+5
2545889167 M币 +5 - 08-21
在线965039114

发帖
6069
M币
28945
专家
110
粉丝
334
只看该作者 9楼 发表于: 08-19
~~改改库函数名字,或者直接用汇编写stm32
本帖最近打赏记录:共1条打赏M币+5
2545889167 M币 +5 - 08-21