-
-
[原创][注册机]-[editplus-5.0]-[逆向流程+算法分析]
-
发表于:
2018-11-20 15:53
9885
-
[原创][注册机]-[editplus-5.0]-[逆向流程+算法分析]
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编辑
,原因: