RE
WateranFire
学无止境
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
周期性变化算法逆向思路
做逆向的时候,有时候会碰到对输入做周期性的变换,即对于变换算法change(in,out),有memcpy(old_in,in);while(i=;i<circle;i++){ change(in,out); memcpy(in,out);}assert(!memcmp(out,old_in)); 这个时候,要写change的逆的话,可以先算出circ...原创 2019-12-02 09:58:27 · 368 阅读 · 0 评论 -
记一次手动脱壳
以前一直都是用脱壳工具直接脱壳,最近学了手工脱壳的一些知识,就尝试了一次简单的手工脱壳。 我使用吾爱破解版的OD来脱壳,因为上面自带了插件OllyDump。不得不说这个功能十分强大,原以为脱壳出来还要重建修复表的,结果发现居然不用,完成了以后一脸懵逼,完全不敢相信成功了。 首先,遇到了这个的话,都选否。 原来的OD似乎是要先执行一段代码,再开始执行壳的(从pushad那里开始)如下图:原创 2016-12-23 14:51:30 · 1034 阅读 · 0 评论 -
RE学习计划
最近一直东学一点西学一点,感觉学的很杂乱,没有目的性而且很容易遗漏知识点,所以决定把想学的知识点列一下,做一个参考。 IDAPython:对IDA宝具,但目前还是不太会用; angle:逆向利器,很多题目可以用angle直接怼,但目前还是一知半解; arm汇编:学的是X86汇编,arm汇编大部分差不多但还是有一定的区别,所以有必要学一下; 尽量少F5:不是什么知识点,只是是时候多看看汇编了。原创 2017-12-19 13:56:21 · 370 阅读 · 0 评论 -
如何识别C++编译以后的函数名(demangle)
C/C++语言在编译以后,函数的名字会被编译器修改,改成编译器内部的名字,这个名字会在链接的时候用到。如果用backtrace之类的函数打印堆栈时,显示的就是被编译器修改过的名字,比如说_Z3foov 。 那么这个函数真实的名字是什么呢?每个编译器都有一套自己内部的名字,这里只是针对linux下g++而言。 以下是基本的方法: 每个方法都是以_Z开头,对于嵌套的名字(比如名字空间中的名字或者是类转载 2017-12-18 09:26:43 · 2721 阅读 · 0 评论 -
TLS反调试
最近粗略了解了一下TLS反调试。TLS用于控制多线程全局变量,每个线程都会获得一个全局变量的副本。TLS反调试主要就是利用Tlscallback函数在main函数执行前就会被调用,在其内设置反调试的话导致OD一打开就退出。原创 2018-01-16 10:51:57 · 841 阅读 · 0 评论 -
Angr学习(一)
以前只是简单套用angr模板来解一些简单的题目,现在希望能深入了解一下angr, 所以做个记录。注意,本文不是直接翻译,而会根据个人感觉进行删减!本文主要参考自https://docs.angr.io/===========================================================下面是一些小tips,可以跳过。angr的调试信息记录i...翻译 2019-08-07 19:57:52 · 2915 阅读 · 0 评论
分享