Android smali代码注入

1.增加log信息

变量为string类型
const-string v3,"message"
invoke-static {v3,v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
变量为int类型
const-string v3, "message"
invoke-static {v1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
move-result-object v4
invoke-static {v3, v4}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
变量为bool类型
const-string v3, "message"
invoke-static {v1}, Ljava/lang/Boolean;->toString(Z)Ljava/lang/String;
move-result-object v4
invoke-static {v3, v4}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I


2.弹出消息框

new AlertDialog.Builder(self)
.setTitle("普通对话框")
.setMessage("你好,Android!")
.show();
new-instance v1,Landroid/app/AlertDialog$Builder;
invoke-direct {v1,p0}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V
.local v1,builder:Landroid/app/AlertDialog$Builder;

const-string v2,"\u666e\u901a\u5bf9\u8bdd\u6846"
invoke-virtual {v1,v2}, Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;

const-string v2,"\u4f60\u597d\uff0cAndroid!"
invoke-virtual {v1,v2},Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;

invoke-virtual {v1},Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;
move-result-object v2
invoke-virtual {v2},Landroid/app/AlertDialog;->show()V

 

阅读全部

解决mysql使用autocommit导致挂起的bug

torndb使用MySQLdb连接远程mysql,会挂起超时,提示Lost connection to MySQL server during query。

跟踪后发现在autocommit后hang住,解决办法hook这个方法,直接返回。

使用下面的代码,之后再连接数据就不会挂起了。

from MySQLdb.connections import Connection
def func(self,t):
	return None
Connection.autocommit=func
阅读全部

Linux screen

new session: screen -S 
restore session: screen -r 
list session: screen -ls 

In session:
detach session: Ctrl+a,d
create window: Ctrl+a,c
next/prev window: Ctrl+a,n/p
lock/unlock: Ctrl+a,s/q
show status in title: Ctrl+a,w
split window: Ctrl+a,S
change window: Ctrl+a,Tab
kill window: Ctrl+a,K
start/stop log: Ctrl+a,H
阅读全部

php在pdo方式下对mysql导入导出

<?php 
header("Content-Type:text/html;charset=utf-8"); 
/* 
* 数据库导出调用 
*/ 
$host = '';//主机名 
$dbname = '';//数据库名 
$us
阅读全部

android ramdisk编辑

mkdir /etc/mm
mount -o rw -t ext4 /dev/block/sda3 /etc/mm
cp /etc/mm/ramdisk /data/local/tmp/ramdisk.img.gz
cd /data/local/tmp/
gunzip ramdisk.img.gz
mkdir ramdisk
cd ramdisk
cpio -i -F ../ramdisk.img
cpio -i -t -F ../ramdisk.img > list

cat list|cpio -o -H newc|gzip > ramdisk.img.gz
cp ramdisk.img.gz /etc/mm/ramdisk
umount /etc/mm
阅读全部

tornado缓存

class CacheBaseHandler(tornado.web.RequestHandler):
  
    def prepare(self):
        # 这里判断一下是否是GET请求,是否是非登陆用户,才做以下处理
        cached = self.application.db.cache.find_one({"slug": self.request.path})
        if cached is not None:
            self.write(cached["content"])
            self.finish()
  
    def render_string(self, template_name, **kwargs):
        html_generated = \
            super(CacheBaseHandler, self).render_string(template_name, **kwargs)
        self.application.db.cache.update({"slug": self.request.path},
            {"$set": {"content": html_generated}},
            upsert=True)
 
        return html_generated
 
    def on_finish(self):
        """ 重写结束请求前的方法函数 """
        if self.request.method == "POST":
            # 如果遇到POST提交则清空缓存
            self.application.db.cache.remove({"slug": self.request.path})
阅读全部

url计数

CREATE TABLE `ps_url2` (
  `text` varchar(300) DEFAULT NULL,
  `url` varchar(500) DEFAULT NULL,
  `url_crc` int(11) unsigned NOT NULL DEFAULT '0',
  `count` int(11) DEFAULT '0',
  PRIMARY KEY (`url_crc`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TRIGGER IF EXISTS `pseudohash_crc_ins`;
DELIMITER ;;
CREATE TRIGGER `pseudohash_crc_ins` BEFORE INSERT ON `ps_url2` FOR EACH ROW begin set NEW.url_crc=crc32(NEW.url);end
;;
DELIMITER ;
DROP TRIGGER IF EXISTS `pseudohash_crc_upd`;
DELIMITER ;;
CREATE TRIGGER `pseudohash_crc_upd` BEFORE UPDATE ON `ps_url2` FOR EACH ROW begin set NEW.url_crc=crc32(NEW.url);end
;;
DELIMITER ;

记录text和url,采用crc32作为主键,插入与更新的时候用触发器更新url的crc32,采用crc32可以加快查询速度。

mysql的哈希索引只能在memory引擎的表中使用,mysql重启后表数据会丢失。

插入数据一条语句搞定:

insert into ps_url2(text,url) values(%s,%s) on duplicate key update count=count+1

on duplicate key确保插入时有重复数据自动更新原数据count数。

阅读全部

linux/android禁用ipv6

 echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6

直接生效,需要每次生效的话,编辑/etc/sysctl.conf

net.ipv6.conf.eth0.disable_ipv6 = 1

然后sysctl -p命令生效。

阅读全部

IIS性能监测

IIS性能监测脚本,统计一段时间内网站访问情况及系统性能表现。


IIS监测.rar

阅读全部

mysql慢语句追踪

SET GLOBAL log_slow_queries = ON;  打开慢日志记录
SET GLOBAL long_query_time = 3; 设置超过3秒为慢日志
show variables like 'slow_query_log_file'; 查看慢日志文件路径

set profiling=1; 打开性能跟踪
show profiles; 显示列表
show profile for query 1; 显示查询1
阅读全部