逆向笔记之部分常见函数

参考MSDN官方文档,长期更新,将在实践中的常见函数列出来。



MK_FP

原型: #define MK_FP( seg,ofs )( (void _seg * )( seg ) +( void near * )( ofs ))

说明:设置一个远指针,一般会前后异或,可以用来判断内存修改,分析函数有没有溢出。

例如:*MK_FP(__FS__, 40LL),取FS段偏移量为40LL地址的值

JUMPOUT

说明:IDA中用于建立一个长跳转的函数,其参数一般为一个具体的函数开始地址。


ptrace

原型:long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);

说明 :提供了父进程观察和控制其子进程执行的能力,发送给被跟踪的子进程的信号(除了SIGKILL),都会被转发给父进程,这也是调试器主要原理。

1). enum __ptrace_request request:指示了ptrace要执行的命令。如:PTRACE_SETREGS---设置寄存器;PTRACE_GETREGS---读取寄存器;PTRACE_KILL---杀掉子进程,使它退出。

详细request参数解释:http://blog.csdn.net/u012417380/article/details/60468697

2). pid_t pid: 指示ptrace要跟踪的进程。

3). void *addr: 指示要监控的内存地址。

4). void *data: 存放读取出的或者要写入的数据。


scanf

原型: int scanf(char *format[,argument,...]);

说明:通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。


sscanf

原型:int sscanf (const char *str,const char * format,........);

说明:与scanf类似,但是以固定字符串为输入源,sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。转换后的结果存于对应的参数内。成功则返回参数数目,失败则返回0。

例如:sscanf("12345","%4s",str);    -->str=1234


std::basic_ostream

这是一个IO流操作函数,可以建立std::cin与std::cout和>>以及<<的操作方式,实现cin与cout库函数,如一个例子中:std::basic_ostream>::operator<<(v0, std::endl);  就等价于cout<<endl;



_cinit

如果有全局类数组,在main之前类数组会被初始化, 类的构造会被调用。

第一步_FPinit 主要用来初始化浮点运算,第二步和第三步是分别对C和C++程序做初始化。_initterm 接受两个指针作为参数。全局类的初始化由_cinit的第二个_initterm发起.

// __xc_a(函数指针表开始地址) 和 __xc_z (函数指针表结束地址) 是编译器填写的// 从__xc_a开始, 到 (__xc_z - 4)是函数指针表, 里面的内容是代理函数地址.

_initterm( __xc_a, __xc_z );///< 负责全局类的初始化, 调用类的构造

实例ida中转化成地址的数据识别出对应函数

可以考虑使用idapython编写脚本解决这些函数数据的转化,以及去除函数的空嵌套的情况。


PeekMessage

原型:BOOLPeekMessage( LPMSG IpMsg, HWND hWnd, UINT wMSGfilterMin, UINT wMsgFilterMax, UINT wRemoveMsg);

说明:为一个消息检查线程消息队列,并将该消息(如果存在)放于指定的结构。IpMsg为接收消息信息的MSG结构指针;hWnd为其消息被检查的窗口句柄。和函数GetMessage不一样的是,GetMessage:从系统获取消息,将消息从系统中移除,属于阻塞函数。当系统无消息时,GetMessage会等待下一条消息。而函数PeekMesssge是以查看的方式从系统中获取消息,可以不将消息从系统中移除,是非阻塞函数;当系统无消息时,返回FALSE,继续执行后续代码。一般用为输入等操作的信息获取。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 接着上节 condition_varible ,本节主要介绍future的内容,练习代码地址。本文参考http:/...
    jorion阅读 14,755评论 1 5
  • Linux 进程管理与程序开发 进程是Linux事务管理的基本单元,所有的进程均拥有自己独立的处理环境和系统资源,...
    JamesPeng阅读 2,445评论 1 14
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,282评论 0 6
  • 人是不是随着年龄的增长 真的会看透很多事 明白许多道理呢? 或许真的是这样, 渐渐习惯了, 也莽莽撞撞懂了, 大概...
    元气满满的慧慧酱阅读 134评论 0 1
  • 对着屏幕发呆,耳机里是崔健的(花房姑娘),有时间歌曲听的是歌词,心境,这种共鸣能击打到心底最柔软的地方,窗外的景色...
    揣着半自动的巧克力阅读 414评论 0 1