首页
社区
课程
招聘
[原创][注册机]-[editplus-5.0]-[逆向流程+算法分析]
发表于: 2018-11-20 15:53 9884

[原创][注册机]-[editplus-5.0]-[逆向流程+算法分析]

2018-11-20 15:53
9884

1.ollyDbg

2.IDAPro

1.应用程序的编写流程.

2.ASM汇编语言的无障碍阅读.

3.开发语言,如:C++、C、python等.

1.注册机是什么,有哪些功能,如何编写注册机?

答:

功能:输入用户名后经过计算输出注册码.

函数:需要一个关键的计算函数.

2.如何实现注册机的计算函数?

答:

计算函数可视为editplus的验证注册码函数的反向实现.

那么实现该计算函数的步骤如下:

1.定位关键验证函数.

2.分析关键验证函数.

3.复现关键验证函数.

4.反向复现计算函数.

整理思路可得如下图:

 


 

步骤如下:

1.对api下断,经过堆栈回溯定位关键函数.

2.分析关键函数的内部功能实现和逻辑.

3.根据分析内容编写验证函数和计算函数.

1.1 定位

    一般注册验证的流程如下,从程序的报错信息可以猜测为程序调用了MessageBox类函数,对该函数下断后堆栈回溯到CheckInfo()函数位置处.



 


1.2 验证

  上述的if...else分支流程在汇编层会像如下的伪代码所述,那么如果将jnz指令修改为jz或je而导致注册成功,那么CheckInfo函数就是我们所需分析的验证函数.


 




  

对于editplus的分析得知对于注册码存在二次校验,校验失败如下图所示:



PS:分析时可以在IDA中导入sig文件、导出map文件有助于动态调式下的分析.

  一般程序在编写的时候至少会遵循功能和逻辑相分离的规范,或者说是函数封装的利用.对于函数应当按照功能和逻辑来拆分,拆分完毕后在对代码逐一分析.总而言之就是先分析整体汇编逻辑后写好C语言函数的逻辑,然后把汇编代码块还原到C语言函数的具体实现中.

个人感觉汇编代码的阅读分三种情况:

1.甲骨文翻译.

2.英语阅读理解.


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-9-21 14:15 被Weaving编辑 ,原因:
收藏
免费 8
支持
分享
最新回复 (4)
雪    币: 26185
活跃值: (63307)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
666
2018-11-20 16:03
0
雪    币: 6112
活跃值: (1212)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
3
大佬
2018-11-21 09:56
0
雪    币: 2575
活跃值: (502)
能力值: ( LV2,RANK:85 )
在线值:
发帖
回帖
粉丝
4
2018-12-25 17:41
0
雪    币: 298
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
厉害,学习了,一直在用的小软件,这下再不会有使用上的任何问题了
2019-3-14 07:41
0
游客
登录 | 注册 方可回帖
返回
//