查看: 744|回复: 3

一款电话卡写卡软件破解之写卡限制破解思路和尝试

[复制链接]
发表于 2021-12-15 11:29 | 显示全部楼层 |阅读模式
非法程序、 2021-12-15 11:29 744 3 显示全部楼层
【背景】
  上一篇帖子中给出了读卡过程中破解的方法,读卡过程由于不会校验ADM code, ICCID,等过程,所以此软件的限制是比较容易破解的。基本就是定向爆破就可以了,但是对于写卡过程涉及到的东西就非常多了。由于前面提到此软件只能搭配特定的测试白卡才能工作,故而从中做了非常多的判断来判定是不是特定厂商和特定类型的卡,并且不同厂商的卡写卡的某些指令也是不一样的。故而总体思路就是让判断卡类型的代码失效,然后就是将软件中写死的ADM Code进行定制,然后跳过PUK,PIN等定制。
【思路和过程】
  对于USIM卡初始化过程的中,判断卡类型和厂商一般有两种方法,一种是通过SIM卡上电时候ATR中的某些字节来判断,要么就是通过ICCID来判断。在没有更改前,我尝试写卡,可以看出工具弹出如下错误提示
194119fh1hjzkzieheo0eu.png

为了找到可能导致这个问题的点,采用OD查找所有的字符串。
可以看出从这个里面能发现我们感兴趣的字符串。定位到那个提示语附近。经过判断,将jnz转换为jmp转换,就避免了工具陷入到那个错误提示的分支。
194500g43bypyv282b4w8y.png 194513ijt7xxf6l68hlclx.png

卡类型识别模块目前已经被爆破了。但是下面的对ADM CODE的定制,PIN PUK的处理才是关键。 在这里需要额外知道ADM CODE的格式来判断那部分可能是ADM CODE. 根据ETSI 102.221 协议, ADM code的格式是8个字节的ASCII格式,比如我手里的卡ADM CODE是ASCII的8个5, 对应ASCII码是8个0x35. 那么我们就需要找到类似格式, 从上图可以看到有很多位置出现了8个0x38,对应的就是8个8,也就是说这个工具原来默认的卡的ADM CODE 是8个8.  那么我们就需要把所有存储为8个0x38的地方,改为8个0x35
195435atuq22zvwjtm25tc.png

修改了这些地方之后,先保存一份exe,尝试执行。结果并没有按照预期写卡成功,却弹出了另外一个错误对话框,提示"the card cannot be identified"
只能再继续爆破,找到如下地方
195736ydm4mblqpt6p6q9u.png

继续保存一份exe,再次执行,发现PIN和PUK部分又成为拦路虎
200008u5l88o58mconn0lt.png

找到这部分,再次进行判断和爆破,保存为exe之后执行,写卡不再报错。
发表于 2021-12-18 00:08 | 显示全部楼层
王孜岳 2021-12-18 00:08 显示全部楼层
楼主好人一生平安!
回复

使用道具 举报

发表于 2021-12-25 15:11 | 显示全部楼层
zjc9492520 2021-12-25 15:11 显示全部楼层
感谢楼主,好人一生平安
回复

使用道具 举报

发表于 2021-12-25 17:05 | 显示全部楼层
houxiaobai 2021-12-25 17:05 显示全部楼层
这就是大佬吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表 发新帖

快速回复 返回顶部 返回列表