打开程序点击file register
任意输入字符
同时在退出时出现nag
载入od
先对字符串进行查找
右键查找所有文本字符 搜索:name / code
双击进入所在位置
观察代码段同时,注意到上方有感谢注册字符串后接jmp指令跳过未注册字符
继续向上查找
出现关键计算函数以及关键跳转
在函数位置下断点测试
输入code后在此停住
F8调试发现经过call后eax的值为0
修改标志进行测试
测试成功
可以将此处je指令修改为jmp指令
或者修改and指令为 mov eax,0x1
也可以使用exescope 点击资源-对话框
找到nag所在的对话框103
在od中查找命令
由于调用函数需要运用到模态对话框,该数字最后传入代表着该函数的调用
找到该命令所在地址
观察代码,发现无跳转
向上寻找函数开始的标志
进行调试
然后在堆栈窗口查看并数据跟随即可
打开程序
结尾处出现nag
目的是将其nag去除
载入od
运行在nag出现处在od暂停,查看调用函数堆栈
发现diglogbox函数,并且从下往上找只有该函数位于程序领空
双击进去该函数位置
观察代码,发现上方存在je跳转至该call指令下方且je跳转上方存在cmp指令
推测je指令上方的函数为判断是否注册的函数
并在此下断点测试改变je标志位
测试成功直接结束无nag
可将je修改为jmp指令
另外
使用resource hacker 打开程序 点击对话框
找到该函数位于十进制100
载入od
右键搜索-所有指令->输入 push 0x64
在所有指令处下断点,进行调试来找出真正需要的函数位置
逐一寻找
发现上面查找堆栈发现的dialogbox函数
确认上方的call函数为判断是否注册函数
进去call函数
观察到存在两个jnz指令跳转至下方ret
函数在此段使用 RegOpenKeyEx 和 RegQueryValueEx对用户名和密码进行校验
并在该call内进行计算
可以在下方修改eax的值为1来改变结构