The047. 反汇编练习,适合破解新手的160个CrackMe [003] 之 [注册机+去NAG窗口]
The047. 反汇编练习,适合破解新手的160个CrackMe 之 [注册机+去NAG窗口]
反汇编实战练手,下面是我的学习记录,如有疑问欢迎交流指正。^_^
被试程序合集下载:帖子https://www.52pojie.cn/thread-1598336-1-1.html
0x0、查壳,无壳程序,VB语言编写。
https://s1.ax1x.com/2022/03/11/b5CaV0.png
0x2、OD载入,F9运行,首先弹出NAG窗口,几秒钟后切换到主窗口,输入假码,OK按钮,提示错误窗口。
https://s1.ax1x.com/2022/03/11/b5CNbq.png
0x3、不要关闭错误窗口,F12暂停程序,Alt+K打开调用堆栈窗口,在地址00408722处右键显示调用,切换至反汇编窗口rtcMsgBox弹窗调用处。
https://s1.ax1x.com/2022/03/11/b5Ctrn.png
0x4、来到反汇编窗口向上翻,程序很长,一直到004080F0函数头处,F2下断,F9一次激活主程序,再次点击OK按钮,程序运行到004080F0函数头如下图。
https://s1.ax1x.com/2022/03/11/b5CYKs.png
0x5、一顿漫长的F8,老规矩,仅记录关键点如下:
关键1 取输入的Name【112233】
https://s1.ax1x.com/2022/03/11/b5C82Q.png
关键2 真码?【533377】
https://s1.ax1x.com/2022/03/11/b5CdaV.png
关键3 真码变了??【533379】
https://s1.ax1x.com/2022/03/11/b5Cw5T.png
关键4 真码又变了???【1600135】
https://s1.ax1x.com/2022/03/11/b5CBPU.png
关键5 真码还变????【1600150】
https://s1.ax1x.com/2022/03/11/b5CDGF.png
之后没有看到值有大的变化了,将上面记录的几个数值带入程序测试,发现最后一个【1600150】是真码。
https://s1.ax1x.com/2022/03/11/b5C6M9.png
0x6、既然知道真码了,开始编写注册机(方法上集有介绍)。
https://s1.ax1x.com/2022/03/11/b5Cr24.png
0x7、运行生成的注册机123.exe,首先NAG窗口,然后主程序,输入假码,提示错误的同时注册机里真码已经提示。
https://s1.ax1x.com/2022/03/11/b5CRVx.png
0x8、接下来把那个烦人的NAG弹窗给去掉。去NAG有两种方法:一种是变相去除,一种是真正去除。如果NAG窗口没有影响程序的功能,则采用第一种方式,比较好理解;如果NAG窗口影响程序使用功能了,则采用第二种方式完全去除。下面来演示第一种曲线实现目标的方法:使用VBExplorer工具载入程序,选择CMSplash窗体,属性栏选择Timer1时间控件,Interval时间间隔为7000毫秒,在计算器中得出7000【十进制】=1B58【十六进制】。
https://s1.ax1x.com/2022/03/11/b5CsxJ.png
0x9、使用Hex WorkShop工具载入程序,搜索十六进制581B(在反汇编中高低位要颠倒,因此不是搜索1B58),找到Timer1控件附近的一处,这里的就是7000毫秒了。
https://s1.ax1x.com/2022/03/11/b5CcrR.png
0xA、手动修改581B为0100(同样高低位颠倒,实际为十六进制0001),即将7000毫秒改为1毫秒。将文件另存为2.exe,运行程序,发现NAG窗口瞬间闪过,变相实现了去NAG窗口了。
https://s1.ax1x.com/2022/03/11/b5Cgq1.png
0xB、接下来介绍第二种方法,变换窗口调用顺序实现去NAG窗口。这种方法还有个名称叫4C法,据说VB程序开始的PUSH地址加上4C,就是窗口加载的地方。我们来试一下,OD载入程序,看到第一行push地址为004067D4,在数据窗口Ctrl+G转到004067D4+4C处。
https://s1.ax1x.com/2022/03/11/b5CWa6.png
0xC、在数据窗口右键继续跟随DWORD。
https://s1.ax1x.com/2022/03/11/b5CfIK.png
0xD、此时数据窗口中出现两块类似代码,其中有两个标识,00代表先加载的窗体,01代表后加载的窗体。具体为什么是这样我也没弄明白,应该是VB的固定机制吧。
https://s1.ax1x.com/2022/03/11/b5C4PO.png
0xE、互换窗体加载顺序,00换成01,01换成00,让主窗体先启动,则实现了屏蔽NAG窗体的目的。
https://s1.ax1x.com/2022/03/11/b5C5GD.png
0xF、运行3.exe,成功去掉了NAG窗口。
https://s1.ax1x.com/2022/03/11/b5CoxH.png
在此感谢@pk8900大牛提供的解题思路。
感谢分享思路 思路是学习的核心,感谢 还是基础太差,感谢分享,学习了。 学习了!多谢分享 有点东西的,先看看 大佬 VB不是被编译成伪码吗 请指教 ongp1347 发表于 2022-3-11 19:32
大佬 VB不是被编译成伪码吗 请指教
没明白你的意思{:1_907:} chuiyan121 发表于 2022-3-11 20:31
没明白你的意思
VB像Java的字节码 不是机器码
页:
[1]
2