本次使用到的软件有:PEiD、IDA、X32dbg
刚学逆向不久,可能有些地方会有错误,欢迎各位大佬指导
执行
运行程序

点击About

点击确定,输入如图数据

点击try Now

点击确定,回到主界面

点击Exit,退出
查壳,使用PEiD打开

可以看到,这个程序使用MASM32/TASM32编程得到,没有加壳。使用PEiD中的插件Krypto ANALyzer,可以看到程序使用的MD5加密算法,并显示地址000004C3::004010C3

在IDA中打开程序,点击G键

在窗口中输入004010C3,点击确定,跳转到MD5算法的函数代码中

向上得到该地址位于函数sub_401000中,猜想由函数sub_401000执行MD5算法

点击sub_401000后点击X键

点击确定,在伪代码中看到sub_401000被调用的地方

点击tab键转到流程图

点击空格键

得到函数sub_401000被调用的地址
.text:00401B13 call sub_401000
在流程图中看到调用函数GetDlgItemTextA 后进行跳转,猜想GetDlgItemTextA为关键函数

空格键转到代码中,得到调用函数GetDlgItemTextA的地址
.text:00401AA3 call GetDlgItemTextA

空格键回到流程图,可以看到还有另外一个类似的函数lstrcmpA,在调用后进行判断并跳转

空格键转到代码中,可以看到函数lstrcmpA被调用的地址
.text:00401B27 call lstrcmpA

打开x32dbg进行动态调试,在刚才找到的三个关键地址处使用F2断点

开始执行程序,在地址004019E4处停下

F9继续运行,弹出程序窗口,输入如下数据

点击try now,程序继续运行,在断点00401AA3处停下

点击F8

右键在内存窗口中转到cm-2.403380,在内存窗口的内存1中显示为,是输入的数据name

F9,在第二个断点00401B13处停下,此处调用函数sub_401000

使用F7单步跟进

看到右侧隐藏FPU处如图所示,右键点击EDI,在内存窗口中转到窗口1,是输入的数据,存放在地址为00403380的内存中

右键点击ESI,在内存窗口中转到窗口2,地址为004056A8

右键点击EIP,在内存窗口中转到窗口3,地址为0019F89C

F9进入地址为00401B27断点处

此时内存窗口2为

在右侧窗口中看到有

右键点击2.esp+4转到内存窗口,地址为004079D0,可在内存窗口看到,猜测为Serial

点击F8

跳转到

可猜想地址 00401B2E处 指令jne cm-2.401B45是关键指令,判断是否登录成功的关键指令。
双击该指令,将jne改为je,点击确定

F9继续运行

Ctrl F2重新运行,输入和刚才一样的数据,F9运行

Good Serial成功

将输入的数据aaabbbccc通过加密器进行MD5加密得到
d1aaf4767a3c10a473407a4e47b02da6
而在刚才的内存窗口2显示为

是aaabbbccc经MD5加密后的数据,存在地址为004056A8的内存中
在内存窗口4中

猜测为aaabbbccc的Serial---AB96E4D27581103D06C16A7347B02DA6
测试,将X32dbg关闭,不保存更改,重新打开CM-2.exe,输入以下数据

点击try now

成功



















