这段时间ONDragon在群中了做了个有关逆向的公开课讲座,觉得蛮受用的。所以决定和大家分享下我的学习思路,同时也算是给自己做个笔记。
1.源代码
#include <stdio.h> #include <windows.h> #include <stdio.h> #include <iostream> using namespace std; string userName("ONDragon"), passWord("666"); \\设定用户名密码 #define Log(str) {{printf("[Log] => %s\n",str);}} BOOL check(string name, string pass) { if ( name.empty() || pass.empty() ) { return FALSE; } if (name == userName && pass ==passWord) \\判断用户名和密码是否正确,逻辑判断 { return TRUE; } else { return FALSE; } } int main() { Log("Begain Main"); char name[100]; \\定义用户名和密码是char类型 char pass[100]; while (TRUE) { cout << "Please input your userName :" << endl; \\输入用户名和密码 cin >> name; cout << "Please input your passWord :" << endl; cin >> pass; if (check(string(name), string(pass))) \\关键函数check { Log("Login Successful"); \\登录成功 Sleep(5000); return 1; } else { Log("Login Failed"); \\否则失败就会循环重复输入用户名密码 } } Log("End Main"); return 0; }
2.编译运行
root@demon:~# ls FirstClass.cpp root@demon:~# i586-mingw32msvc-g++ -o secist.exe FirstClass.cpp FirstClass.cpp:61:2: warning: no newline at end of file root@demon:~# wine secist [Log] => Begain Main Please input your userName : 1123 Please input your passWord : 123
因为本机是OSX 懒得用windows下编译,我这里直接用mingw32编译用wine运行,结果是输错账户密码,循环让用户输入,直到正确的用户名和密码。
3.载入IDA
将secist.exe 拖入IDA查看下流程图,看下程序是如何运行的
这里我们需要将他跳到
这里很明显可以看到,从程序入口点到键入用户名和密码,是如何循环的
- JNZ : jump if not zero 结果不为零则转移,单标志条件转移,当ZF=0时转移。
- 我们这里需要将它跳转到不为0,也就是z标志位为1
4.载入Olldebug
接下来我们将程序载入OD 看看。前面我们已经知道程序的整个流程了,我们需要找到jmp的关键处
我们在反汇编窗口右键使用字符串搜索功能,搜索关键处。
在搜索处,我们可以看到熟悉的字符串
这里我们可以找Login successful?,我们这里双击跟进跟踪,我们找到Login successful相关的汇编代码,在往上看我们可以看到,我们之前在IDA看到的?jnz?汇编跳转指令。
我们这里可以使用几种方法。判断后如果不跳,就会到下一个jmp,jmp是无条件跳,既然错误的话,jnz会跳到错误信息,那么我们输入错误后,jz就肯定不跳. (Akkuman师傅也教了我很多)
修改Z标志位
我们来看看 jnz ,也就说jmp not zero(跳转不是0的地方) 现在z标志位为1,需要将其修改为0即可实现输入错误信息,跳转到成功登陆。
1.我们在 jnz 处下个断点。(断点快捷键F2)
2.我们将其程序运行,输出错误的用户名和密码,断点处,自动断下。
这里我们可以看到Z标注处为1
我们将其z标志位 双击 修改成1
我们运行程序,显示登录成功
程序停止
修改汇编指令
我们重新载入OD ,依旧找到 jnz位置,双击jnz处汇编代码,将jnz修改为je
JE——若ZF=1,则跳转,jnz与je相反
修改完后,我们运行程序,同样登录成功
第一次写这类文章(大牛勿喷)学无止境,有兴趣的可以加入我们的技术群:307283889 观看OND老哥的逆向公开课 ,一起交流与探讨。如文章内容有误也欢迎大家为我指正,谢谢!!!
转载请注明:即刻安全 » 登录暴力破解 | 逆向笔记(一)