《逆向工程核心原理》书本案例
第二单元:helloword.c
#include "windows.h"
#include "tchar.h"
int _tmain(int argc,TCHAR *argv[])
{
MessageBox(NULL,
"Hello world!",
"WWW.baidu.com",
MB_OK);
return 0;
}
第三单元:LittleEndian.cpp
#include "windows.h"
BYTE b = 0x12;
WORD w = 0x1234;
DWORD dw = 0x12345678;
char str[]="abcde";
int main(int argc,CHAR *argv[])
{
byte lb = b;
WORD lw = 0x1234;
DWORD ldw = dw;
char *lstr = str;
return 0;
}
第六章:abex's crackme#1
https://pan.lanzou.com/1094038
第七章:StackFrame.c
#include "stdio.h"
long add(long a, long b)
{
long x = a, y = b;
return (x + y);
}
int main(int argc, char* argv[])
{
long a = 1, b = 2;
printf("%d\n", add(a, b));
return 0;
}
第八章:abex's crackme2#2
http://pan.baidu.com/s/1qXhyt8C
这个真的调试了好久,后来才知道是需要把所有的代码都运行完毕,然他后面计算出正确的serial再进行分析的而不是停在0x403329 Orz。
第十章:cdecl.cpp , stdcall.cpp
#include "stdio.h"
int add(int a, int b)
{
return (a + b);
}
int main(int argc, char* argv[])
{
return add(1, 2);
}
#include "stdio.h"
int _stdcall add(int a, int b)
{
return (a + b);
}
int main(int argc, char* argv[])
{
return add(1, 2);
}
VS 6关闭优化:经实测最好用release编译出来的的用户体验感最好〒▽〒
第十三章: